@profoundlogic/coderflow-server 0.6.0 → 0.6.2
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/.claude/settings.local.json +15 -2
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/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/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-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-test-results/.last-run.json +52 -2
- 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/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/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/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.html +0 -61
- 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/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/styles.css +8 -2
- 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
- package/dist/playwright-test-results/result-screenshot.png +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
function detectApiBase(){const _0x349649=window['location']['pathname'],_0x5d8d0d=_0x349649['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5d8d0d)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5d8d0d[0x1]),_0x5d8d0d[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x38975e={}){const _0x426ff4=new URLSearchParams();_0x38975e['userId']&&_0x426ff4['set']('userId',String(_0x38975e['userId']));_0x38975e['automation']&&_0x426ff4['set']('automation',String(_0x38975e['automation']));const _0x50eb22=API_BASE+'/tasks/stats'+(_0x426ff4['toString']()?'?'+_0x426ff4['toString']():''),_0x4df292=await fetch(_0x50eb22);if(!_0x4df292['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4df292['statusText']);return await _0x4df292['json']();},async 'getTasks'(_0x396b89={}){const _0x55b9eb=new URLSearchParams();_0x396b89['status']&&_0x55b9eb['set']('status',String(_0x396b89['status']));_0x396b89['environment']&&_0x55b9eb['set']('environment',String(_0x396b89['environment']));_0x396b89['automation']&&_0x55b9eb['set']('automation',String(_0x396b89['automation']));if(_0x396b89['include']){const _0x17a6a4=Array['isArray'](_0x396b89['include'])?_0x396b89['include']['join'](','):String(_0x396b89['include']);_0x17a6a4&&_0x55b9eb['set']('include',_0x17a6a4);}_0x396b89['filter']&&_0x55b9eb['set']('filter',String(_0x396b89['filter']));_0x396b89['page']&&_0x55b9eb['set']('page',String(_0x396b89['page']));_0x396b89['limit']&&_0x55b9eb['set']('limit',String(_0x396b89['limit']));_0x396b89['userId']&&_0x55b9eb['set']('userId',String(_0x396b89['userId']));_0x396b89['search']&&_0x55b9eb['set']('search',String(_0x396b89['search']));_0x396b89['includeChildTasks']&&_0x55b9eb['set']('includeChildTasks','true');const _0x10fba4=API_BASE+'/tasks'+(_0x55b9eb['toString']()?'?'+_0x55b9eb['toString']():''),_0x64c726=await fetch(_0x10fba4);if(!_0x64c726['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x64c726['statusText']);return await _0x64c726['json']();},async 'getAutomations'(_0x43f7e4={}){const _0x4479e8=new URLSearchParams();_0x43f7e4['environment']&&_0x4479e8['set']('environment',String(_0x43f7e4['environment']));const _0x28d14f=await fetch(API_BASE+'/api/automations'+(_0x4479e8['toString']()?'?'+_0x4479e8['toString']():''));if(!_0x28d14f['ok']){const _0x37f41a=await _0x28d14f['json']()['catch'](()=>({}));throw new Error(_0x37f41a['message']||_0x37f41a['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x28d14f['statusText']);}return await _0x28d14f['json']();},async 'getAutomation'(_0x26ccfb){const _0x172013=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x26ccfb));if(!_0x172013['ok']){const _0x5349b5=await _0x172013['json']()['catch'](()=>({}));throw new Error(_0x5349b5['message']||_0x5349b5['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x172013['statusText']);}return await _0x172013['json']();},async 'createAutomation'(_0x780d6c){const _0x269318=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x780d6c||{})});if(!_0x269318['ok']){const _0x27fe0a=await _0x269318['json']()['catch'](()=>({}));throw new Error(_0x27fe0a['message']||_0x27fe0a['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x269318['statusText']);}return await _0x269318['json']();},async 'updateAutomation'(_0x3db986,_0x4e6540){const _0x39656a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3db986),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e6540||{})});if(!_0x39656a['ok']){const _0x5cdbf8=await _0x39656a['json']()['catch'](()=>({}));throw new Error(_0x5cdbf8['message']||_0x5cdbf8['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x39656a['statusText']);}return await _0x39656a['json']();},async 'deleteAutomation'(_0x3b179b){const _0x145af9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3b179b),{'method':'DELETE'});if(!_0x145af9['ok']){const _0x1e02fb=await _0x145af9['json']()['catch'](()=>({}));throw new Error(_0x1e02fb['message']||_0x1e02fb['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x145af9['statusText']);}return await _0x145af9['json']();},async 'triggerAutomation'(_0x189cde){const _0x24b6d8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x189cde)+'/trigger',{'method':'POST'});if(!_0x24b6d8['ok']){const _0x238634=await _0x24b6d8['json']()['catch'](()=>({}));throw new Error(_0x238634['message']||_0x238634['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x24b6d8['statusText']);}return await _0x24b6d8['json']();},async 'setAutomationEnabled'(_0x10294a,_0x1e0de1){const _0x51d215=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x10294a)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x1e0de1})});if(!_0x51d215['ok']){const _0x49202a=await _0x51d215['json']()['catch'](()=>({}));throw new Error(_0x49202a['message']||_0x49202a['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x51d215['statusText']);}return await _0x51d215['json']();},async 'getAutomationHistory'(_0x4fdbf8,_0x44054a=0x32){const _0xde55fc=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4fdbf8)+'/history?limit='+encodeURIComponent(String(_0x44054a)));if(!_0xde55fc['ok']){const _0x41efb7=await _0xde55fc['json']()['catch'](()=>({}));throw new Error(_0x41efb7['message']||_0x41efb7['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0xde55fc['statusText']);}return await _0xde55fc['json']();},async 'getTask'(_0x36cabe,_0x32129f={}){const _0x3b7473=new URLSearchParams();if(_0x32129f['include']){const _0x4e9ffb=Array['isArray'](_0x32129f['include'])?_0x32129f['include']['join'](','):String(_0x32129f['include']);if(_0x4e9ffb)_0x3b7473['set']('include',_0x4e9ffb);}const _0x3a0008=await fetch(API_BASE+'/tasks/'+_0x36cabe+(_0x3b7473['toString']()?'?'+_0x3b7473['toString']():''));if(!_0x3a0008['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x3a0008['statusText']);return await _0x3a0008['json']();},async 'getTaskResults'(_0x3a77be){const _0x4903b8=await fetch(API_BASE+'/tasks/'+_0x3a77be+'/results');if(!_0x4903b8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4903b8['statusText']);return await _0x4903b8['json']();},async 'getTaskPatches'(_0x4171ae){const _0x22a850=await fetch(API_BASE+'/tasks/'+_0x4171ae+'/patches');if(!_0x22a850['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x22a850['statusText']);return await _0x22a850['json']();},async 'getTaskAttachments'(_0x57eaf0){const _0x28e989=await fetch(API_BASE+'/tasks/'+_0x57eaf0+'/attachments');if(!_0x28e989['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x28e989['statusText']);return await _0x28e989['json']();},async 'uploadAttachments'(_0x36bd2a,_0x8dd886){const _0x2e73f9=new FormData();for(const _0x4b8a20 of _0x8dd886){_0x2e73f9['append']('attachments',_0x4b8a20);}const _0x3aa948=await fetch(API_BASE+'/tasks/'+_0x36bd2a+'/attachments',{'method':'POST','body':_0x2e73f9});if(!_0x3aa948['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3aa948['statusText']);return await _0x3aa948['json']();},async 'isAINameGenerationAvailable'(){try{const _0xfd564a=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0xfd564a['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0xfd564a['json']();}catch(_0x42882e){return{'available':![],'reason':_0x42882e['message']};}},async 'generateTaskName'(_0x187706){try{const _0x2619c6=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x187706})});return await _0x2619c6['json']();}catch(_0x1540da){return{'success':![],'error':_0x1540da['message']};}},async 'createTask'(_0x3fc501){let _0xebd551,_0x5e6578={};if(_0x3fc501['files']&&_0x3fc501['files']['length']>0x0){const _0x39e07e=new FormData();for(const [_0x566513,_0x3b45ef]of Object['entries'](_0x3fc501)){if(_0x566513!=='files'){if(_0x3b45ef==null)continue;typeof _0x3b45ef==='object'?_0x39e07e['append'](_0x566513,JSON['stringify'](_0x3b45ef)):_0x39e07e['append'](_0x566513,String(_0x3b45ef));}}for(const _0x46ec1a of _0x3fc501['files']){_0x39e07e['append']('attachments',_0x46ec1a);}_0xebd551=_0x39e07e;}else _0x5e6578['Content-Type']='application/json',_0xebd551=JSON['stringify'](_0x3fc501);const _0x4aaa89=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5e6578,'body':_0xebd551});if(!_0x4aaa89['ok']){const _0x4d7c50=await _0x4aaa89['json'](),_0x2ad594=new Error(_0x4d7c50['error']||'Failed\x20to\x20create\x20task:\x20'+_0x4aaa89['statusText']),{message:_0x55234d,..._0x1d5a69}=_0x4d7c50;Object['assign'](_0x2ad594,_0x1d5a69);throw _0x2ad594;}return await _0x4aaa89['json']();},async 'createTestTask'(_0x514fa2){const _0x1719af=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x514fa2)});if(!_0x1719af['ok']){const _0x4588a2=await _0x1719af['json']();throw new Error(_0x4588a2['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x1719af['statusText']);}return await _0x1719af['json']();},async 'createEphemeralTest'(_0x530886){const _0x2a8af2=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x530886)});if(!_0x2a8af2['ok']){const _0x356b68=await _0x2a8af2['json']();throw new Error(_0x356b68['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2a8af2['statusText']);}return await _0x2a8af2['json']();},async 'createDeployTask'(_0x5ca468){const _0x2a8ce7=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ca468)});if(!_0x2a8ce7['ok']){const _0x4d235f=await _0x2a8ce7['json']();throw new Error(_0x4d235f['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2a8ce7['statusText']);}return await _0x2a8ce7['json']();},async 'getEnvironments'(){const _0x4ea0cb=await fetch(API_BASE+'/environments');if(!_0x4ea0cb['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4ea0cb['statusText']);return await _0x4ea0cb['json']();},async 'getEnvironment'(_0x1e3901){const _0x2234bd=await fetch(API_BASE+'/environments/'+_0x1e3901);if(!_0x2234bd['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x2234bd['statusText']);return await _0x2234bd['json']();},async 'getEnvironmentRepoHistory'(_0x5ee915,_0x2a513f,_0x2b80d9={}){if(!_0x5ee915||!_0x2a513f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4df795=new URLSearchParams();if(_0x2b80d9['limit'])_0x4df795['set']('limit',String(_0x2b80d9['limit']));if(_0x2b80d9['offset'])_0x4df795['set']('offset',String(_0x2b80d9['offset']));if(_0x2b80d9['search'])_0x4df795['set']('search',String(_0x2b80d9['search']));if(_0x2b80d9['branch'])_0x4df795['set']('branch',String(_0x2b80d9['branch']));const _0x51f2a0=API_BASE+'/environments/'+encodeURIComponent(_0x5ee915)+'/repos/'+encodeURIComponent(_0x2a513f)+'/git/history',_0x33b6ff=await fetch(''+_0x51f2a0+(_0x4df795['toString']()?'?'+_0x4df795['toString']():''));if(!_0x33b6ff['ok']){const _0x17eaa8=await _0x33b6ff['json']()['catch'](()=>({}));throw new Error(_0x17eaa8['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x33b6ff['statusText']);}return await _0x33b6ff['json']();},async 'getEnvironmentRepoCommit'(_0x1632e5,_0x9c49a8,_0xc2300c){if(!_0x1632e5||!_0x9c49a8||!_0xc2300c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x595045=API_BASE+'/environments/'+encodeURIComponent(_0x1632e5)+'/repos/'+encodeURIComponent(_0x9c49a8)+'/git/commits/'+encodeURIComponent(_0xc2300c),_0x41adf3=await fetch(_0x595045);if(!_0x41adf3['ok']){const _0xf86323=await _0x41adf3['json']()['catch'](()=>({}));throw new Error(_0xf86323['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x41adf3['statusText']);}return await _0x41adf3['json']();},async 'getEnvironmentRepoBranches'(_0x5521a7,_0x44754b){if(!_0x5521a7||!_0x44754b)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1ef011=API_BASE+'/environments/'+encodeURIComponent(_0x5521a7)+'/repos/'+encodeURIComponent(_0x44754b)+'/git/branches',_0x4bfb0b=await fetch(_0x1ef011);if(!_0x4bfb0b['ok']){const _0x1fc556=await _0x4bfb0b['json']()['catch'](()=>({}));throw new Error(_0x1fc556['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x4bfb0b['statusText']);}return await _0x4bfb0b['json']();},async 'revertEnvironmentRepoCommit'(_0x18cfa2,_0x52b157,_0x72401c,_0x1595bf={}){if(!_0x18cfa2||!_0x52b157||!_0x72401c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x7de89f=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x18cfa2)+'/repos/'+encodeURIComponent(_0x52b157)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x72401c,..._0x1595bf})});if(!_0x7de89f['ok']){const _0x211174=await _0x7de89f['json']()['catch'](()=>({}));throw new Error(_0x211174['message']||_0x211174['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x7de89f['statusText']);}return await _0x7de89f['json']();},async 'getTemplates'(_0x40eddb={}){const _0x1cd70e=new URLSearchParams();if(_0x40eddb['include']){const _0x2144af=Array['isArray'](_0x40eddb['include'])?_0x40eddb['include']['join'](','):String(_0x40eddb['include']);if(_0x2144af)_0x1cd70e['set']('include',_0x2144af);}const _0x594b20=await fetch(API_BASE+'/templates'+(_0x1cd70e['toString']()?'?'+_0x1cd70e['toString']():''));if(!_0x594b20['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x594b20['statusText']);return await _0x594b20['json']();},async 'getTemplatesForEnvironment'(_0x1c3ac6,_0x3e9be5={}){if(!_0x1c3ac6)throw new Error('Environment\x20name\x20is\x20required');const _0x2d49f3=new URLSearchParams();if(_0x3e9be5['include']){const _0x1c60cf=Array['isArray'](_0x3e9be5['include'])?_0x3e9be5['include']['join'](','):String(_0x3e9be5['include']);if(_0x1c60cf)_0x2d49f3['set']('include',_0x1c60cf);}const _0x322fc1=await fetch(API_BASE+'/templates/'+_0x1c3ac6+(_0x2d49f3['toString']()?'?'+_0x2d49f3['toString']():''));if(!_0x322fc1['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x1c3ac6+':\x20'+_0x322fc1['statusText']);return await _0x322fc1['json']();},async 'getTemplate'(_0x384695,_0x268d57,_0x3d6a03={}){if(!_0x384695||!_0x268d57)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x57d2a1=new URLSearchParams();if(_0x3d6a03['include']){const _0x397989=Array['isArray'](_0x3d6a03['include'])?_0x3d6a03['include']['join'](','):String(_0x3d6a03['include']);if(_0x397989)_0x57d2a1['set']('include',_0x397989);}const _0x53a328=await fetch(API_BASE+'/templates/'+_0x384695+'/'+_0x268d57+(_0x57d2a1['toString']()?'?'+_0x57d2a1['toString']():''));if(!_0x53a328['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x53a328['statusText']);return await _0x53a328['json']();},async 'getTaskLogs'(_0x3a2eeb,_0x414b62={}){if(!_0x3a2eeb)throw new Error('Task\x20ID\x20is\x20required');const _0x33b8fa=new URLSearchParams();_0x414b62['tail']&&_0x33b8fa['set']('tail',String(_0x414b62['tail']));const _0x3ff80b=await fetch(API_BASE+'/tasks/'+_0x3a2eeb+'/logs'+(_0x33b8fa['toString']()?'?'+_0x33b8fa['toString']():''));if(!_0x3ff80b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3ff80b['statusText']);return await _0x3ff80b['text']();},async 'getContainers'(){const _0x57fddb=await fetch(API_BASE+'/containers');if(!_0x57fddb['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x57fddb['statusText']);return await _0x57fddb['json']();},async 'getContainer'(_0x39b91c){const _0x32711c=await fetch(API_BASE+'/containers/'+_0x39b91c);if(!_0x32711c['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x32711c['statusText']);return await _0x32711c['json']();},async 'startInteractiveContainer'(_0x1dd8cf){const _0x2d2f43=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1dd8cf)});if(!_0x2d2f43['ok']){const _0x622dac=await _0x2d2f43['json']()['catch'](()=>({}));throw new Error(_0x622dac['message']||'Failed\x20to\x20start\x20container:\x20'+_0x2d2f43['statusText']);}return await _0x2d2f43['json']();},async 'stopContainer'(_0x26c116){const _0x3a7c4c=await fetch(API_BASE+'/containers/'+_0x26c116,{'method':'DELETE'});if(!_0x3a7c4c['ok']){const _0x3c2a1a=await _0x3a7c4c['json']()['catch'](()=>({}));throw new Error(_0x3c2a1a['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3a7c4c['statusText']);}return await _0x3a7c4c['json']();},async 'stopTask'(_0x463b2b){if(!_0x463b2b)throw new Error('Task\x20ID\x20is\x20required');const _0x519cba=await fetch(API_BASE+'/tasks/'+_0x463b2b+'/stop',{'method':'POST'});if(!_0x519cba['ok']){const _0x166ed4=await _0x519cba['json']()['catch'](()=>({}));throw new Error(_0x166ed4['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x519cba['statusText']);}return await _0x519cba['json']();},async 'interruptTask'(_0xf974bf){if(!_0xf974bf)throw new Error('Task\x20ID\x20is\x20required');const _0x5198bb=await fetch(API_BASE+'/tasks/'+_0xf974bf+'/interrupt',{'method':'POST'});if(!_0x5198bb['ok']){const _0x1deb25=await _0x5198bb['json']()['catch'](()=>({}));throw new Error(_0x1deb25['error']||_0x1deb25['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5198bb['statusText']);}return await _0x5198bb['json']();},async 'startTask'(_0x286ed9){if(!_0x286ed9)throw new Error('Task\x20ID\x20is\x20required');const _0x149fe2=await fetch(API_BASE+'/tasks/'+_0x286ed9+'/start',{'method':'POST'});if(!_0x149fe2['ok']){const _0x44ac9c=await _0x149fe2['json']()['catch'](()=>({}));throw new Error(_0x44ac9c['error']||'Failed\x20to\x20start\x20task:\x20'+_0x149fe2['statusText']);}return await _0x149fe2['json']();},async 'deleteTask'(_0x18727c){if(!_0x18727c)throw new Error('Task\x20ID\x20is\x20required');const _0x1d87c1=await fetch(API_BASE+'/tasks/'+_0x18727c,{'method':'DELETE'});if(!_0x1d87c1['ok']){const _0x3a7740=await _0x1d87c1['json']()['catch'](()=>({}));throw new Error(_0x3a7740['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x1d87c1['statusText']);}return await _0x1d87c1['json']();},async 'refreshTasksFromDisk'(){const _0x1bf573=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1bf573['ok']){const _0x51db3b=await _0x1bf573['json']()['catch'](()=>({}));throw new Error(_0x51db3b['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1bf573['statusText']);}return await _0x1bf573['json']();},async 'approveTask'(_0xbebe95,_0x5199bf={}){if(!_0xbebe95)throw new Error('Task\x20ID\x20is\x20required');const _0x56fe67={'commit_message':_0x5199bf['commit_message']||'','pull':_0x5199bf['pull']??![],'push':_0x5199bf['push']??![]};_0x5199bf['new_branch']&&(_0x56fe67['new_branch']=_0x5199bf['new_branch']);const _0x31b5e6=await fetch(API_BASE+'/tasks/'+_0xbebe95+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56fe67)});if(!_0x31b5e6['ok']){const _0x2747a2=await _0x31b5e6['json']()['catch'](()=>({}));let _0x7a8156=_0x2747a2['error']||_0x2747a2['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x31b5e6['statusText'];if(_0x2747a2['results']&&Array['isArray'](_0x2747a2['results'])){const _0x182911=_0x2747a2['results']['filter'](_0x349cd8=>!_0x349cd8['success']&&_0x349cd8['error']);_0x182911['length']>0x0&&(_0x7a8156=_0x182911[0x0]['error']);}throw new Error(_0x7a8156);}return await _0x31b5e6['json']();},async 'getPullRequestInfo'(_0x45adfc){if(!_0x45adfc)throw new Error('Task\x20ID\x20is\x20required');const _0x1b5373=await fetch(API_BASE+'/tasks/'+_0x45adfc+'/pull-request-info');if(!_0x1b5373['ok']){const _0x51cf25=await _0x1b5373['json']()['catch'](()=>({}));throw new Error(_0x51cf25['error']||_0x51cf25['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1b5373['statusText']);}return await _0x1b5373['json']();},async 'createPullRequests'(_0x478891,_0x2fac65){if(!_0x478891)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2fac65||!Array['isArray'](_0x2fac65))throw new Error('repos\x20array\x20is\x20required');const _0x52de57=await fetch(API_BASE+'/tasks/'+_0x478891+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2fac65})});if(!_0x52de57['ok']){const _0xff45e5=await _0x52de57['json']()['catch'](()=>({}));let _0x1187ee=_0xff45e5['error']||_0xff45e5['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x52de57['statusText'];if(_0xff45e5['results']&&Array['isArray'](_0xff45e5['results'])){const _0x3be5e3=_0xff45e5['results']['filter'](_0x58238a=>!_0x58238a['success']&&_0x58238a['error']);_0x3be5e3['length']>0x0&&(_0x1187ee=_0x3be5e3[0x0]['error']);}throw new Error(_0x1187ee);}return await _0x52de57['json']();},async 'syncRepos'(_0x46ce25){if(!_0x46ce25)throw new Error('Task\x20ID\x20is\x20required');const _0x1db667=await fetch(API_BASE+'/tasks/'+_0x46ce25+'/sync-repos',{'method':'POST'});if(!_0x1db667['ok']){const _0x545552=await _0x1db667['json']()['catch'](()=>({}));throw new Error(_0x545552['error']||_0x545552['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x1db667['statusText']);}return await _0x1db667['json']();},async 'getIbmiSyncInfo'(_0x397672){if(!_0x397672)throw new Error('Task\x20ID\x20is\x20required');const _0x599efd=await fetch(API_BASE+'/tasks/'+_0x397672+'/ibmi-sync-info');if(!_0x599efd['ok']){const _0x3ad37c=await _0x599efd['json']()['catch'](()=>({}));throw new Error(_0x3ad37c['error']||_0x3ad37c['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x599efd['json']();},async 'getSyncFiles'(_0x2bde87){if(!_0x2bde87)throw new Error('Task\x20ID\x20is\x20required');const _0x133f5e=await fetch(API_BASE+'/tasks/'+_0x2bde87+'/sync-to-ibmi/files');if(!_0x133f5e['ok']){const _0x26d408=await _0x133f5e['json']()['catch'](()=>({}));throw new Error(_0x26d408['error']||_0x26d408['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x133f5e['json']();},async 'syncToIbmi'(_0x1175dd,_0x76d072,_0x2d729b=null,_0x15c80b=null,_0x530583=null){if(!_0x1175dd)throw new Error('Task\x20ID\x20is\x20required');const _0x1b8be1={'library':_0x76d072};if(_0x2d729b)_0x1b8be1['user']=_0x2d729b;if(_0x15c80b)_0x1b8be1['password']=_0x15c80b;if(_0x530583)_0x1b8be1['files']=_0x530583;const _0x23e223=await fetch(API_BASE+'/tasks/'+_0x1175dd+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b8be1)});if(!_0x23e223['ok']){const _0x12934d=await _0x23e223['json']()['catch'](()=>({}));throw new Error(_0x12934d['error']||_0x12934d['message']||'Sync\x20failed');}return await _0x23e223['json']();},async 'getIbmiSyncLog'(_0x242bf1){if(!_0x242bf1)throw new Error('Task\x20ID\x20is\x20required');const _0x53dbdd=await fetch(API_BASE+'/tasks/'+_0x242bf1+'/ibmi-sync-log');if(!_0x53dbdd['ok']){const _0x10fdaa=await _0x53dbdd['json']()['catch'](()=>({}));throw new Error(_0x10fdaa['error']||_0x10fdaa['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x53dbdd['json']();},async 'pullChanges'(_0x45bc9b){if(!_0x45bc9b)throw new Error('Task\x20ID\x20is\x20required');const _0x5bb5e7=await fetch(API_BASE+'/tasks/'+_0x45bc9b+'/pull-changes',{'method':'POST'});if(!_0x5bb5e7['ok']){const _0xa908dc=await _0x5bb5e7['json']()['catch'](()=>({}));throw new Error(_0xa908dc['error']||_0xa908dc['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5bb5e7['statusText']);}return await _0x5bb5e7['json']();},async 'readFile'(_0x3d93e4,_0x3f7c31){if(!_0x3d93e4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f7c31)throw new Error('File\x20path\x20is\x20required');const _0x218432=await fetch(API_BASE+'/tasks/'+_0x3d93e4+'/files?path='+encodeURIComponent(_0x3f7c31));if(!_0x218432['ok']){const _0x41f2ac=await _0x218432['json']()['catch'](()=>({}));throw new Error(_0x41f2ac['error']||_0x41f2ac['message']||'Failed\x20to\x20read\x20file:\x20'+_0x218432['statusText']);}return await _0x218432['json']();},'getTaskFileDownloadUrl'(_0x53ac3e,_0x1ec0fb){if(!_0x53ac3e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1ec0fb)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x53ac3e+'/files/download?path='+encodeURIComponent(_0x1ec0fb);},async 'writeFile'(_0x2159a6,_0xfb8e0f,_0x2c90ac){if(!_0x2159a6)throw new Error('Task\x20ID\x20is\x20required');if(!_0xfb8e0f)throw new Error('File\x20path\x20is\x20required');if(_0x2c90ac===undefined)throw new Error('Content\x20is\x20required');const _0x207e65=await fetch(API_BASE+'/tasks/'+_0x2159a6+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xfb8e0f,'content':_0x2c90ac})});if(!_0x207e65['ok']){const _0x870d4a=await _0x207e65['json']()['catch'](()=>({}));throw new Error(_0x870d4a['error']||_0x870d4a['message']||'Failed\x20to\x20write\x20file:\x20'+_0x207e65['statusText']);}return await _0x207e65['json']();},async 'uploadTaskFiles'(_0x26c39b,_0x27c0f8,_0x24c65d){if(!_0x26c39b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27c0f8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x24c65d||_0x24c65d['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x27d490=new FormData();_0x27d490['append']('targetDir',_0x27c0f8);for(const _0x659e7a of _0x24c65d){_0x27d490['append']('files',_0x659e7a,_0x659e7a['name']);}const _0x5b03ff=await fetch(API_BASE+'/tasks/'+_0x26c39b+'/files/upload',{'method':'POST','body':_0x27d490});if(!_0x5b03ff['ok']){const _0x73e7b3=await _0x5b03ff['json']()['catch'](()=>({}));throw new Error(_0x73e7b3['error']||_0x73e7b3['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x5b03ff['statusText']);}return await _0x5b03ff['json']();},async 'deleteFile'(_0x3fd071,_0x33965e){if(!_0x3fd071)throw new Error('Task\x20ID\x20is\x20required');if(!_0x33965e)throw new Error('File\x20path\x20is\x20required');const _0x5f2ee=await fetch(API_BASE+'/tasks/'+_0x3fd071+'/files?path='+encodeURIComponent(_0x33965e),{'method':'DELETE'});if(!_0x5f2ee['ok']){const _0x2548ef=await _0x5f2ee['json']()['catch'](()=>({}));throw new Error(_0x2548ef['error']||_0x2548ef['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5f2ee['statusText']);}return await _0x5f2ee['json']();},async 'discardFile'(_0x3ad60a,_0x4f04f4,_0x19ed79){if(!_0x3ad60a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4f04f4)throw new Error('File\x20path\x20is\x20required');if(!_0x19ed79)throw new Error('Repository\x20path\x20is\x20required');const _0x2c19ae=await fetch(API_BASE+'/tasks/'+_0x3ad60a+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4f04f4,'repoPath':_0x19ed79})});if(!_0x2c19ae['ok']){const _0x5d708c=await _0x2c19ae['json']()['catch'](()=>({}));throw new Error(_0x5d708c['error']||_0x5d708c['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2c19ae['statusText']);}return await _0x2c19ae['json']();},async 'followUpTask'(_0x7405f4,_0x17c4b3={}){if(!_0x7405f4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17c4b3['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x39632c,_0x2d6d10={};if(_0x17c4b3['files']&&_0x17c4b3['files']['length']>0x0){const _0x25c7bc=new FormData();_0x25c7bc['append']('instructions',_0x17c4b3['instructions']);for(const _0x2ae678 of _0x17c4b3['files']){_0x25c7bc['append']('attachments',_0x2ae678);}_0x39632c=_0x25c7bc;}else _0x2d6d10['Content-Type']='application/json',_0x39632c=JSON['stringify']({'instructions':_0x17c4b3['instructions']});const _0x6dea6b=await fetch(API_BASE+'/tasks/'+_0x7405f4+'/follow-up',{'method':'POST','headers':_0x2d6d10,'body':_0x39632c});if(!_0x6dea6b['ok']){const _0x216f0d=await _0x6dea6b['json']()['catch'](()=>({}));throw new Error(_0x216f0d['error']||_0x216f0d['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x6dea6b['statusText']);}return await _0x6dea6b['json']();},async 'getTaskRewindPoints'(_0x15e13d){if(!_0x15e13d)throw new Error('Task\x20ID\x20is\x20required');const _0x3a3896=await fetch(API_BASE+'/tasks/'+_0x15e13d+'/rewind-points');if(!_0x3a3896['ok']){const _0x3b77c6=await _0x3a3896['json']()['catch'](()=>({}));throw new Error(_0x3b77c6['error']||_0x3b77c6['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x3a3896['statusText']);}return await _0x3a3896['json']();},async 'rewindTask'(_0x45e7b3,_0x1061aa={}){if(!_0x45e7b3)throw new Error('Task\x20ID\x20is\x20required');const _0x334c34=Number['isInteger'](_0x1061aa['targetFollowUpCount'])?_0x1061aa['targetFollowUpCount']:0x0,_0x31bb6e={'targetFollowUpCount':_0x334c34};typeof _0x1061aa['instructions']==='string'&&_0x1061aa['instructions']['trim']()&&(_0x31bb6e['instructions']=_0x1061aa['instructions']['trim']());typeof _0x1061aa['rewindFiles']==='boolean'&&(_0x31bb6e['rewindFiles']=_0x1061aa['rewindFiles']);const _0x2c8f27=await fetch(API_BASE+'/tasks/'+_0x45e7b3+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31bb6e)});if(!_0x2c8f27['ok']){const _0x3261b0=await _0x2c8f27['json']()['catch'](()=>({}));throw new Error(_0x3261b0['error']||_0x3261b0['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2c8f27['statusText']);}return await _0x2c8f27['json']();},async 'login'(_0x2b1356,_0x4a1d27){const _0x3c4dba=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2b1356,'password':_0x4a1d27})});if(!_0x3c4dba['ok']){const _0x4e5370=await _0x3c4dba['json']();throw new Error(_0x4e5370['message']||'Login\x20failed');}return await _0x3c4dba['json']();},async 'logout'(){const _0x424cc0=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x424cc0['ok']){const _0x4cee50=await _0x424cc0['json']();throw new Error(_0x4cee50['message']||'Logout\x20failed');}return await _0x424cc0['json']();},async 'getCurrentUser'(){const _0x5295fc=await fetch(API_BASE+'/auth/me');if(!_0x5295fc['ok'])throw new Error('Not\x20authenticated');const _0x155f9d=await _0x5295fc['json']();return _0x155f9d['user'];},async 'getRolesInfo'(){const _0x20dc12=await fetch(API_BASE+'/users/roles');if(!_0x20dc12['ok']){const _0x2fbd2b=await _0x20dc12['json']();throw new Error(_0x2fbd2b['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x20dc12['json']();},async 'getUsers'(){const _0x8b149f=await fetch(API_BASE+'/users');if(!_0x8b149f['ok']){const _0x3fae54=await _0x8b149f['json']();throw new Error(_0x3fae54['message']||'Failed\x20to\x20get\x20users');}return await _0x8b149f['json']();},async 'getUser'(_0x416d24){const _0x16a4be=await fetch(API_BASE+'/users/'+_0x416d24);if(!_0x16a4be['ok']){const _0x420414=await _0x16a4be['json']();throw new Error(_0x420414['message']||'Failed\x20to\x20get\x20user');}return await _0x16a4be['json']();},async 'createUser'(_0x3ce872){const _0x2b230b=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ce872)});if(!_0x2b230b['ok']){const _0x508703=await _0x2b230b['json']();throw new Error(_0x508703['message']||'Failed\x20to\x20create\x20user');}return await _0x2b230b['json']();},async 'updateUser'(_0x5d2806,_0x5431b1){const _0x13486b=await fetch(API_BASE+'/users/'+_0x5d2806,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5431b1)});if(!_0x13486b['ok']){const _0x3043a9=await _0x13486b['json']();throw new Error(_0x3043a9['message']||'Failed\x20to\x20update\x20user');}return await _0x13486b['json']();},async 'deleteUser'(_0x30516b){const _0x35481c=await fetch(API_BASE+'/users/'+_0x30516b,{'method':'DELETE'});if(!_0x35481c['ok']){const _0x152320=await _0x35481c['json']();throw new Error(_0x152320['message']||'Failed\x20to\x20delete\x20user');}return await _0x35481c['json']();},async 'stopAllContainers'(){const _0x2c5f78=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1d13b1=await _0x2c5f78['json']()['catch'](()=>({}));if(!_0x2c5f78['ok'])throw new Error(_0x1d13b1['message']||_0x1d13b1['error']||'Failed\x20to\x20stop\x20containers');return _0x1d13b1;},async 'removeStoppedContainers'(){const _0x5d5dda=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x233fad=await _0x5d5dda['json']()['catch'](()=>({}));if(!_0x5d5dda['ok'])throw new Error(_0x233fad['message']||_0x233fad['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x233fad;},async 'pruneDockerResources'(){const _0x5ea288=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x3eed44=await _0x5ea288['json']()['catch'](()=>({}));if(!_0x5ea288['ok'])throw new Error(_0x3eed44['message']||_0x3eed44['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x3eed44;},async 'createPasswordToken'(_0x24efd9,_0x4ec8e4='setup',_0x4bcbf5=![]){const _0x135fac=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x24efd9,'type':_0x4ec8e4,'sendEmail':_0x4bcbf5})});if(!_0x135fac['ok']){const _0x44562c=await _0x135fac['json']();throw new Error(_0x44562c['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x135fac['json']();},async 'getEmailConfig'(){const _0x115abc=await fetch(API_BASE+'/password/email-config');if(!_0x115abc['ok']){const _0x1348e5=await _0x115abc['json']();throw new Error(_0x1348e5['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x115abc['json']();},async 'updateTaskName'(_0x542ae1,_0x2bb942){const _0x208860=await fetch(API_BASE+'/tasks/'+_0x542ae1,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x2bb942})});if(!_0x208860['ok']){const _0x511e5a=await _0x208860['json']();throw new Error(_0x511e5a['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x208860['json']();},async 'pinTask'(_0x50708a,_0xf9d815,_0x1b90f0=null){if(!_0x50708a)throw new Error('Task\x20ID\x20is\x20required');const _0xecabb3={'pinned':_0xf9d815};_0x1b90f0&&_0x1b90f0['length']>0x0&&(_0xecabb3['additionalTaskIds']=_0x1b90f0);const _0x14bf95=await fetch(API_BASE+'/tasks/'+_0x50708a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xecabb3)});if(!_0x14bf95['ok']){const _0x2c9aad=await _0x14bf95['json']();throw new Error(_0x2c9aad['error']||'Failed\x20to\x20pin\x20task');}return await _0x14bf95['json']();},async 'setTaskWinner'(_0x227ec6,_0x73c86e,_0x153b34=[]){if(!_0x227ec6)throw new Error('Task\x20ID\x20is\x20required');const _0x278753=await fetch(API_BASE+'/tasks/'+_0x227ec6+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x73c86e,'siblings':_0x153b34})});if(!_0x278753['ok']){const _0xbf22de=await _0x278753['json']();throw new Error(_0xbf22de['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x278753['json']();},async 'setTaskLoser'(_0x463d5a,_0x2db994){if(!_0x463d5a)throw new Error('Task\x20ID\x20is\x20required');const _0x32170b=await fetch(API_BASE+'/tasks/'+_0x463d5a+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2db994})});if(!_0x32170b['ok']){const _0x8c19e5=await _0x32170b['json']();throw new Error(_0x8c19e5['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x32170b['json']();},async 'createTaskGroup'(_0x5e6bc5){const _0x4ed11e=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e6bc5)});if(!_0x4ed11e['ok']){const _0x34a79=await _0x4ed11e['json']();throw new Error(_0x34a79['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4ed11e['json']();},async 'getTaskGroups'(_0x36f8d6={}){const _0x5038c=new URLSearchParams();if(_0x36f8d6['userId'])_0x5038c['set']('userId',String(_0x36f8d6['userId']));if(_0x36f8d6['status'])_0x5038c['set']('status',String(_0x36f8d6['status']));if(_0x36f8d6['limit'])_0x5038c['set']('limit',String(_0x36f8d6['limit']));const _0x1313ac=API_BASE+'/tasks/groups'+(_0x5038c['toString']()?'?'+_0x5038c['toString']():''),_0x4523ff=await fetch(_0x1313ac);if(!_0x4523ff['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4523ff['json']();},async 'getTaskGroup'(_0x1de98c){const _0x13b26c=await fetch(API_BASE+'/tasks/groups/'+_0x1de98c);if(!_0x13b26c['ok']){const _0x5f519b=await _0x13b26c['json']();throw new Error(_0x5f519b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x13b26c['json']();},async 'updateTaskGroup'(_0x4ae824,_0x56c012,_0x53f502){const _0x32c1a2=await fetch(API_BASE+'/tasks/'+_0x4ae824+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x56c012,'groupIndex':_0x53f502})});if(!_0x32c1a2['ok']){const _0x417378=await _0x32c1a2['json']();throw new Error(_0x417378['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x32c1a2['json']();},async 'removeTaskFromGroup'(_0x33b9ff){return this['updateTaskGroup'](_0x33b9ff,null,null);},async 'deleteTaskGroup'(_0x3027b3,_0x50298a=![]){const _0x272461=_0x50298a?'?deleteTasks=true':'',_0x228a2c=await fetch(API_BASE+'/tasks/groups/'+_0x3027b3+_0x272461,{'method':'DELETE'});if(!_0x228a2c['ok']){const _0xe033ad=await _0x228a2c['json']();throw new Error(_0xe033ad['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x35b39d,_0x3b1c6c){const _0x262b69=await fetch(API_BASE+'/tasks/groups/'+_0x35b39d+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3b1c6c})});if(!_0x262b69['ok']){const _0x1c0171=await _0x262b69['json']();throw new Error(_0x1c0171['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x262b69['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x21cda6){if(!_0x21cda6)throw new Error('Task\x20ID\x20is\x20required');const _0x1e9e32=await fetch(API_BASE+'/tasks/'+_0x21cda6+'/comments');if(!_0x1e9e32['ok']){const _0x1ca22b=await _0x1e9e32['json']()['catch'](()=>({}));throw new Error(_0x1ca22b['error']||'Failed\x20to\x20get\x20comments');}return await _0x1e9e32['json']();},async 'addComment'(_0x30a65f,_0x40069d){if(!_0x30a65f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40069d)throw new Error('Comment\x20content\x20is\x20required');const _0x49993d=await fetch(API_BASE+'/tasks/'+_0x30a65f+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x40069d})});if(!_0x49993d['ok']){const _0x4b7289=await _0x49993d['json']()['catch'](()=>({}));throw new Error(_0x4b7289['error']||'Failed\x20to\x20add\x20comment');}return await _0x49993d['json']();},async 'updateComment'(_0x479e53,_0x3b3e5c,_0x534b1b){if(!_0x479e53)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3b3e5c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x534b1b)throw new Error('Comment\x20content\x20is\x20required');const _0x588d75=await fetch(API_BASE+'/tasks/'+_0x479e53+'/comments/'+_0x3b3e5c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x534b1b})});if(!_0x588d75['ok']){const _0x19d203=await _0x588d75['json']()['catch'](()=>({}));throw new Error(_0x19d203['error']||'Failed\x20to\x20update\x20comment');}return await _0x588d75['json']();},async 'deleteComment'(_0xe5a3d4,_0x24c113){if(!_0xe5a3d4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24c113)throw new Error('Comment\x20ID\x20is\x20required');const _0x3b2aee=await fetch(API_BASE+'/tasks/'+_0xe5a3d4+'/comments/'+_0x24c113,{'method':'DELETE'});if(!_0x3b2aee['ok']){const _0x5e95cb=await _0x3b2aee['json']()['catch'](()=>({}));throw new Error(_0x5e95cb['error']||'Failed\x20to\x20delete\x20comment');}return await _0x3b2aee['json']();},async 'createObjective'(_0x214611){const _0x41c095={'objective':!![],'name':_0x214611['name']||'','environment':_0x214611['environment']||null,'agents':_0x214611['agents']||[],'branches':_0x214611['branches']||{},'isPinned':_0x214611['isPinned']||![],'parentObjectiveId':_0x214611['parentObjectiveId']||null,'env_vars':_0x214611['envVars']||{},'parameters':{'instructions':_0x214611['instructions']||''},'files':_0x214611['files']||[],'jira':_0x214611['jira']||null};return this['createTask'](_0x41c095);},async 'updateObjective'(_0x216c4,_0x33dd6b,_0x2fad9e=[],_0x523584=[]){let _0x4d1403,_0x1b7d27={};const _0x4f60ef={..._0x33dd6b};_0x523584&&_0x523584['length']>0x0&&(_0x4f60ef['removeAttachments']=_0x523584);if(_0x2fad9e&&_0x2fad9e['length']>0x0){const _0x49f816=new FormData();for(const [_0x435613,_0x283530]of Object['entries'](_0x4f60ef)){if(_0x283530==null)continue;typeof _0x283530==='object'?_0x49f816['append'](_0x435613,JSON['stringify'](_0x283530)):_0x49f816['append'](_0x435613,String(_0x283530));}for(const _0x246650 of _0x2fad9e){_0x49f816['append']('attachments',_0x246650);}_0x4d1403=_0x49f816;}else _0x1b7d27['Content-Type']='application/json',_0x4d1403=JSON['stringify'](_0x4f60ef);const _0x507e5b=await fetch(API_BASE+'/tasks/'+_0x216c4,{'method':'PATCH','headers':_0x1b7d27,'body':_0x4d1403});if(!_0x507e5b['ok']){const _0xf57ccb=await _0x507e5b['json']();throw new Error(_0xf57ccb['error']||'Failed\x20to\x20update\x20objective');}return await _0x507e5b['json']();},async 'deleteObjective'(_0x37095b){return this['deleteTask'](_0x37095b);},async 'launchObjective'(_0xa0a7db,_0x165c04={}){const _0x1018cc=await fetch(API_BASE+'/tasks/'+_0xa0a7db+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x165c04)});if(!_0x1018cc['ok']){const _0x1edbae=await _0x1018cc['json']();throw new Error(_0x1edbae['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1018cc['json']();},async 'getObjectiveAttachments'(_0x5af8f9){return this['getTaskAttachments'](_0x5af8f9);},async 'createJudgeTask'({environment:_0x2b09da,judgeAgent:_0x49a58b,groupId:_0x5dd963,taskIds:_0x32db71,judgeCustomInstructions:_0x21aa03,isPinned:_0x4d5ae6}){const _0xc079d2=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2b09da,'judgeAgent':_0x49a58b,'groupId':_0x5dd963,'taskIds':_0x32db71,'judgeCustomInstructions':_0x21aa03,'isPinned':_0x4d5ae6})});if(!_0xc079d2['ok']){const _0x282e58=await _0xc079d2['json']();throw new Error(_0x282e58['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xc079d2['json']();},async 'getJudgeTasks'(_0x12edfa){const _0x26a5a4=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x12edfa));if(!_0x26a5a4['ok']){const _0x8d2246=await _0x26a5a4['json']();throw new Error(_0x8d2246['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x26a5a4['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0xd489e1,_0x3488ae,_0x1ee50f=''){const _0x5e475b=await fetch(API_BASE+'/tasks/'+_0xd489e1+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3488ae,'customPreamble':_0x1ee50f})});if(!_0x5e475b['ok']){const _0x30b3f8=await _0x5e475b['json']();throw new Error(_0x30b3f8['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x5e475b['json']();},async 'getJiraConfig'(){const _0x4c0fb6=await fetch(API_BASE+'/jira/config');if(!_0x4c0fb6['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4c0fb6['json']();},async 'getJiraIssue'(_0x344bfa){const _0x38d366=await fetch(API_BASE+'/jira/issues/'+_0x344bfa);if(!_0x38d366['ok']){const _0x57985c=await _0x38d366['json']()['catch'](()=>({}));throw new Error(_0x57985c['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x38d366['statusText']);}return await _0x38d366['json']();},async 'searchJiraIssues'(_0xbf6a69,_0x494813=0x14){const _0x2df05b=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xbf6a69,'maxResults':_0x494813})});if(!_0x2df05b['ok']){const _0x28833f=await _0x2df05b['json']()['catch'](()=>({}));throw new Error(_0x28833f['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x2df05b['statusText']);}return await _0x2df05b['json']();},async 'postJiraComment'(_0x10683e,_0x2b2d1c){const _0x36b0bb=await fetch(API_BASE+'/jira/issues/'+_0x10683e+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x2b2d1c})});if(!_0x36b0bb['ok']){const _0x5af056=await _0x36b0bb['json']()['catch'](()=>({}));throw new Error(_0x5af056['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x36b0bb['statusText']);}return await _0x36b0bb['json']();},async 'getJiraComments'(_0x53c10c){const _0x2d4a45=await fetch(API_BASE+'/jira/issues/'+_0x53c10c+'/comments');if(!_0x2d4a45['ok']){const _0x3ec592=await _0x2d4a45['json']()['catch'](()=>({}));throw new Error(_0x3ec592['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2d4a45['statusText']);}return await _0x2d4a45['json']();},async 'promptParameter'({environment:_0x45597b,command:_0xc6d050,parser:parser='json'}){const _0x5a88ee=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x45597b,'command':_0xc6d050,'parser':parser})});if(!_0x5a88ee['ok']){const _0x4c0045=await _0x5a88ee['json']()['catch'](()=>({}));throw new Error(_0x4c0045['message']||_0x4c0045['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x5a88ee['statusText']);}return await _0x5a88ee['json']();},async 'promptParameterStream'(_0x229849,_0x260cc6){const _0x4b88df=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x229849)});if(!_0x4b88df['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4b88df['statusText']);const _0x375852=_0x4b88df['body']['getReader'](),_0x31bbc0=new TextDecoder();let _0x596d1f='';return new Promise((_0x29b209,_0x3385cd)=>{const _0x192006=async()=>{try{const {done:_0x3bbaa6,value:_0x201403}=await _0x375852['read']();if(_0x3bbaa6)return;_0x596d1f+=_0x31bbc0['decode'](_0x201403,{'stream':!![]});const _0x3c112c=_0x596d1f['split']('\x0a\x0a');_0x596d1f=_0x3c112c['pop']()||'';for(const _0x3f02a5 of _0x3c112c){if(!_0x3f02a5['trim']())continue;const _0x17319a=_0x3f02a5['split']('\x0a');let _0x57542e='message',_0x1164e9='';for(const _0x288090 of _0x17319a){if(_0x288090['startsWith']('event:'))_0x57542e=_0x288090['substring'](0x6)['trim']();else _0x288090['startsWith']('data:')&&(_0x1164e9=_0x288090['substring'](0x5)['trim']());}if(!_0x1164e9)continue;try{const _0x768f11=JSON['parse'](_0x1164e9);if(_0x57542e==='progress'&&_0x260cc6)_0x260cc6(_0x768f11['stage'],_0x768f11['message']);else{if(_0x57542e==='result'){_0x29b209(_0x768f11);return;}else{if(_0x57542e==='error'){let _0x25244a=_0x768f11['message']||_0x768f11['error']||'Prompt\x20command\x20failed';_0x768f11['rawOutput']&&(_0x25244a+='\x0a\x0aRaw\x20output:\x0a'+_0x768f11['rawOutput']);_0x3385cd(new Error(_0x25244a));return;}}}}catch(_0x43ff0f){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x43ff0f),console['error']('Event\x20type:',_0x57542e),console['error']('Event\x20data:',_0x1164e9),console['error']('First\x20200\x20chars:',_0x1164e9['substring'](0x0,0xc8)),_0x3385cd(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x43ff0f['message']+'\x0a\x0aData:\x20'+_0x1164e9['substring'](0x0,0x1f4)));return;}}_0x192006();}catch(_0x12957e){_0x3385cd(_0x12957e);}};_0x192006();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x531ce2){const _0x5bf15c=await fetch(''+API_BASE+_0x531ce2);if(!_0x5bf15c['ok']){const _0x1df44f=await _0x5bf15c['json']()['catch'](()=>({'error':_0x5bf15c['statusText']})),_0xc79e28=new Error(_0x1df44f['error']||_0x1df44f['message']||_0x5bf15c['statusText']);if(_0x1df44f['detail']!==undefined)_0xc79e28['detail']=_0x1df44f['detail'];throw _0xc79e28;}return await _0x5bf15c['json']();},async 'post'(_0x237aeb,_0x4fb398){const _0x1171f5=await fetch(''+API_BASE+_0x237aeb,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fb398)});if(!_0x1171f5['ok']){const _0x5503f9=await _0x1171f5['json']()['catch'](()=>({'error':_0x1171f5['statusText']})),_0xf2f2fd=new Error(_0x5503f9['error']||_0x5503f9['message']||_0x1171f5['statusText']);if(_0x5503f9['detail']!==undefined)_0xf2f2fd['detail']=_0x5503f9['detail'];throw _0xf2f2fd;}return await _0x1171f5['json']();},async 'put'(_0x34c9ac,_0x1249ce){const _0x11c21e=await fetch(''+API_BASE+_0x34c9ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1249ce)});if(!_0x11c21e['ok']){const _0x1f7bd7=await _0x11c21e['json']()['catch'](()=>({'error':_0x11c21e['statusText']})),_0x18f1e7=new Error(_0x1f7bd7['error']||_0x1f7bd7['message']||_0x11c21e['statusText']);if(_0x1f7bd7['detail']!==undefined)_0x18f1e7['detail']=_0x1f7bd7['detail'];throw _0x18f1e7;}return await _0x11c21e['json']();},async 'delete'(_0x37cd2b,_0xc25d4c){const _0x453309={'method':'DELETE'};_0xc25d4c&&(_0x453309['headers']={'Content-Type':'application/json'},_0x453309['body']=JSON['stringify'](_0xc25d4c));const _0x501d03=await fetch(''+API_BASE+_0x37cd2b,_0x453309);if(!_0x501d03['ok']){const _0x5ba84e=await _0x501d03['json']()['catch'](()=>({'error':_0x501d03['statusText']})),_0x3ca451=new Error(_0x5ba84e['error']||_0x5ba84e['message']||_0x501d03['statusText']);if(_0x5ba84e['detail']!==undefined)_0x3ca451['detail']=_0x5ba84e['detail'];throw _0x3ca451;}return await _0x501d03['json']();},async 'getSkills'(){const _0x1f582a=await fetch(API_BASE+'/skills');if(!_0x1f582a['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1f582a['statusText']);return await _0x1f582a['json']();},async 'getSkill'(_0x4f7050){const _0x179d91=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4f7050));if(!_0x179d91['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x179d91['statusText']);return await _0x179d91['json']();},async 'createSkill'(_0x4493b4){const _0x258d6d=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4493b4)});if(!_0x258d6d['ok']){const _0x2c310b=await _0x258d6d['json']()['catch'](()=>({'error':_0x258d6d['statusText']})),_0x382580=new Error(_0x2c310b['error']||_0x2c310b['message']||_0x258d6d['statusText']);if(_0x2c310b['detail']!==undefined)_0x382580['detail']=_0x2c310b['detail'];throw _0x382580;}return await _0x258d6d['json']();},async 'updateSkill'(_0x521efe,_0x5bfc79){const _0x30457f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x521efe),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5bfc79)});if(!_0x30457f['ok']){const _0x2e7f4d=await _0x30457f['json']()['catch'](()=>({'error':_0x30457f['statusText']})),_0x227f14=new Error(_0x2e7f4d['error']||_0x2e7f4d['message']||_0x30457f['statusText']);if(_0x2e7f4d['detail']!==undefined)_0x227f14['detail']=_0x2e7f4d['detail'];throw _0x227f14;}return await _0x30457f['json']();},async 'deleteSkill'(_0x501c79){const _0x367c82=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x501c79),{'method':'DELETE'});if(!_0x367c82['ok']){const _0x292e25=await _0x367c82['json']()['catch'](()=>({'error':_0x367c82['statusText']})),_0x27b349=new Error(_0x292e25['error']||_0x292e25['message']||_0x367c82['statusText']);if(_0x292e25['detail']!==undefined)_0x27b349['detail']=_0x292e25['detail'];throw _0x27b349;}return await _0x367c82['json']();},async 'getSkillFile'(_0x1d0d89,_0x202316){const _0x4b85cb=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1d0d89)+'/files/'+_0x202316);if(!_0x4b85cb['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x4b85cb['statusText']);return await _0x4b85cb['json']();},async 'saveSkillFile'(_0x5430ce,_0x5c728e,_0x32cccc){const _0x1ce320=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5430ce)+'/files/'+_0x5c728e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x32cccc})});if(!_0x1ce320['ok']){const _0x415366=await _0x1ce320['json']()['catch'](()=>({'error':_0x1ce320['statusText']})),_0x34ce78=new Error(_0x415366['error']||_0x415366['message']||_0x1ce320['statusText']);if(_0x415366['detail']!==undefined)_0x34ce78['detail']=_0x415366['detail'];throw _0x34ce78;}return await _0x1ce320['json']();},async 'deleteSkillFile'(_0x3be294,_0x488139){const _0x5aff80=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3be294)+'/files/'+_0x488139,{'method':'DELETE'});if(!_0x5aff80['ok']){const _0x5180cf=await _0x5aff80['json']()['catch'](()=>({'error':_0x5aff80['statusText']})),_0x4e858e=new Error(_0x5180cf['error']||_0x5180cf['message']||_0x5aff80['statusText']);if(_0x5180cf['detail']!==undefined)_0x4e858e['detail']=_0x5180cf['detail'];throw _0x4e858e;}return await _0x5aff80['json']();},async 'pullSkills'(){const _0x156eea=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x156eea['ok']){const _0x5c7416=await _0x156eea['json']()['catch'](()=>({'error':_0x156eea['statusText']})),_0x3e6230=new Error(_0x5c7416['error']||_0x5c7416['message']||_0x156eea['statusText']);if(_0x5c7416['detail']!==undefined)_0x3e6230['detail']=_0x5c7416['detail'];throw _0x3e6230;}return await _0x156eea['json']();},async 'commitSkills'(_0x388888,_0x4fed99={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x4fed99,_0x27a136=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x388888,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x27a136['ok']){const _0x5f4bbd=await _0x27a136['json']()['catch'](()=>({'error':_0x27a136['statusText']})),_0x15709d=new Error(_0x5f4bbd['error']||_0x5f4bbd['message']||_0x27a136['statusText']);if(_0x5f4bbd['detail']!==undefined)_0x15709d['detail']=_0x5f4bbd['detail'];throw _0x15709d;}return await _0x27a136['json']();},async 'discardSkillsChanges'(){const _0x35d9af=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x35d9af['ok']){const _0x291b65=await _0x35d9af['json']()['catch'](()=>({'error':_0x35d9af['statusText']})),_0x19a6eb=new Error(_0x291b65['error']||_0x291b65['message']||_0x35d9af['statusText']);if(_0x291b65['detail']!==undefined)_0x19a6eb['detail']=_0x291b65['detail'];throw _0x19a6eb;}return await _0x35d9af['json']();},async 'getSkillCatalog'(){const _0x3d03e4=await fetch(API_BASE+'/external-skills/catalog');if(!_0x3d03e4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x3d03e4['statusText']);return await _0x3d03e4['json']();},async 'getImportedSkillsRegistry'(){const _0x50f5e7=await fetch(API_BASE+'/external-skills/registry');if(!_0x50f5e7['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x50f5e7['statusText']);return await _0x50f5e7['json']();},async 'importCatalogSkill'(_0x2ce731){const _0x11c0de=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2ce731})});if(!_0x11c0de['ok']){const _0x8a9c71=await _0x11c0de['json']()['catch'](()=>({'error':_0x11c0de['statusText']})),_0x51d451=new Error(_0x8a9c71['error']||_0x8a9c71['message']||_0x11c0de['statusText']);if(_0x8a9c71['detail']!==undefined)_0x51d451['detail']=_0x8a9c71['detail'];throw _0x51d451;}return await _0x11c0de['json']();},async 'importSkillFromGit'(_0x695333,_0x58d7e6,_0x24e4d1='main',_0x516663=null){const _0x5133eb=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x695333,'skillPath':_0x58d7e6,'branch':_0x24e4d1,'skillId':_0x516663})});if(!_0x5133eb['ok']){const _0x4fef53=await _0x5133eb['json']()['catch'](()=>({'error':_0x5133eb['statusText']})),_0xb36a60=new Error(_0x4fef53['error']||_0x4fef53['message']||_0x5133eb['statusText']);if(_0x4fef53['detail']!==undefined)_0xb36a60['detail']=_0x4fef53['detail'];throw _0xb36a60;}return await _0x5133eb['json']();},async 'probeMarketplace'(_0x57e87a,_0x326349='main'){const _0x4d9117=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x57e87a,'branch':_0x326349})});if(!_0x4d9117['ok']){const _0x361e50=await _0x4d9117['json']()['catch'](()=>({'error':_0x4d9117['statusText']})),_0x5dba63=new Error(_0x361e50['error']||_0x361e50['message']||_0x4d9117['statusText']);if(_0x361e50['detail']!==undefined)_0x5dba63['detail']=_0x361e50['detail'];throw _0x5dba63;}return await _0x4d9117['json']();},async 'importMarketplaceBundle'(_0xd1e4cc,_0x3c8582,_0x48fa6f,_0x486adc=null){const _0x6ed5df=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xd1e4cc,'branch':_0x3c8582,'bundleId':_0x48fa6f,'selectedSkills':_0x486adc})});if(!_0x6ed5df['ok']){const _0x5de208=await _0x6ed5df['json']()['catch'](()=>({'error':_0x6ed5df['statusText']})),_0x511606=new Error(_0x5de208['error']||_0x5de208['message']||_0x6ed5df['statusText']);if(_0x5de208['detail']!==undefined)_0x511606['detail']=_0x5de208['detail'];throw _0x511606;}return await _0x6ed5df['json']();},async 'importSkillFromFolder'(_0xe5b0ec,_0xe7ba27=null){const _0x282753=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xe5b0ec,'skillId':_0xe7ba27})});if(!_0x282753['ok']){const _0x4d9115=await _0x282753['json']()['catch'](()=>({'error':_0x282753['statusText']})),_0xbb4880=new Error(_0x4d9115['error']||_0x4d9115['message']||_0x282753['statusText']);if(_0x4d9115['detail']!==undefined)_0xbb4880['detail']=_0x4d9115['detail'];throw _0xbb4880;}return await _0x282753['json']();},async 'importSkillFromNpm'(_0x502f12,_0x2142f6='latest',_0x340ebc=null,_0x1fdb81=null){const _0x443f44=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x502f12,'version':_0x2142f6,'skillId':_0x340ebc,'registry':_0x1fdb81})});if(!_0x443f44['ok']){const _0x25ea20=await _0x443f44['json']()['catch'](()=>({'error':_0x443f44['statusText']})),_0x5370bd=new Error(_0x25ea20['error']||_0x25ea20['message']||_0x443f44['statusText']);if(_0x25ea20['detail']!==undefined)_0x5370bd['detail']=_0x25ea20['detail'];throw _0x5370bd;}return await _0x443f44['json']();},async 'checkSkillUpdates'(_0x120431){const _0x790c6f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x120431)+'/check-updates',{'method':'POST'});if(!_0x790c6f['ok']){const _0x33cb89=await _0x790c6f['json']()['catch'](()=>({'error':_0x790c6f['statusText']})),_0x3fa915=new Error(_0x33cb89['error']||_0x33cb89['message']||_0x790c6f['statusText']);if(_0x33cb89['detail']!==undefined)_0x3fa915['detail']=_0x33cb89['detail'];throw _0x3fa915;}return await _0x790c6f['json']();},async 'updateExternalSkill'(_0x454f89){const _0x3b7eeb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x454f89)+'/update',{'method':'POST'});if(!_0x3b7eeb['ok']){const _0x37e1d6=await _0x3b7eeb['json']()['catch'](()=>({'error':_0x3b7eeb['statusText']})),_0x3a81fc=new Error(_0x37e1d6['error']||_0x37e1d6['message']||_0x3b7eeb['statusText']);if(_0x37e1d6['detail']!==undefined)_0x3a81fc['detail']=_0x37e1d6['detail'];throw _0x3a81fc;}return await _0x3b7eeb['json']();},async 'updateSkillFlags'(_0x1bd6c6,_0x41a9a4){const _0x71e64b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1bd6c6)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x41a9a4})});if(!_0x71e64b['ok']){const _0x4457fc=await _0x71e64b['json']()['catch'](()=>({'error':_0x71e64b['statusText']})),_0x1b1b37=new Error(_0x4457fc['error']||_0x4457fc['message']||_0x71e64b['statusText']);if(_0x4457fc['detail']!==undefined)_0x1b1b37['detail']=_0x4457fc['detail'];throw _0x1b1b37;}return await _0x71e64b['json']();},async 'removeFromImportedRegistry'(_0x71c053){const _0x3a9561=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x71c053)+'/registry',{'method':'DELETE'});if(!_0x3a9561['ok']){const _0x47bacb=await _0x3a9561['json']()['catch'](()=>({'error':_0x3a9561['statusText']})),_0x11cc8c=new Error(_0x47bacb['error']||_0x47bacb['message']||_0x3a9561['statusText']);if(_0x47bacb['detail']!==undefined)_0x11cc8c['detail']=_0x47bacb['detail'];throw _0x11cc8c;}return await _0x3a9561['json']();},async 'getTeams'(){const _0x542a35=await fetch(API_BASE+'/teams');if(!_0x542a35['ok']){const _0x2274ba=await _0x542a35['json']()['catch'](()=>({'message':_0x542a35['statusText']}));throw new Error(_0x2274ba['message']||'Failed\x20to\x20get\x20teams');}return await _0x542a35['json']();},async 'getTeam'(_0x13d429){const _0x37fa5c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x13d429));if(!_0x37fa5c['ok']){const _0x19fd54=await _0x37fa5c['json']()['catch'](()=>({'message':_0x37fa5c['statusText']}));throw new Error(_0x19fd54['message']||'Failed\x20to\x20get\x20team');}return await _0x37fa5c['json']();},async 'createTeam'(_0x550285){const _0x1ad593=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x550285)});if(!_0x1ad593['ok']){const _0x184102=await _0x1ad593['json']()['catch'](()=>({'message':_0x1ad593['statusText']}));throw new Error(_0x184102['message']||'Failed\x20to\x20create\x20team');}return await _0x1ad593['json']();},async 'updateTeam'(_0x5e8a14,_0x30cbb6){const _0xdfa41=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5e8a14),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30cbb6)});if(!_0xdfa41['ok']){const _0xfba54b=await _0xdfa41['json']()['catch'](()=>({'message':_0xdfa41['statusText']}));throw new Error(_0xfba54b['message']||'Failed\x20to\x20update\x20team');}return await _0xdfa41['json']();},async 'deleteTeam'(_0x96a194){const _0x1f4c01=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x96a194),{'method':'DELETE'});if(!_0x1f4c01['ok']){const _0x8ecb5a=await _0x1f4c01['json']()['catch'](()=>({'message':_0x1f4c01['statusText']}));throw new Error(_0x8ecb5a['message']||'Failed\x20to\x20delete\x20team');}return await _0x1f4c01['json']();},async 'addTeamMember'(_0x279617,_0x1f5759){const _0x16164d=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x279617)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x1f5759})});if(!_0x16164d['ok']){const _0x5a1458=await _0x16164d['json']()['catch'](()=>({'message':_0x16164d['statusText']}));throw new Error(_0x5a1458['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x16164d['json']();},async 'removeTeamMember'(_0x45822b,_0x30c8d1){const _0x1fd841=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x45822b)+'/members/'+encodeURIComponent(_0x30c8d1),{'method':'DELETE'});if(!_0x1fd841['ok']){const _0xfab525=await _0x1fd841['json']()['catch'](()=>({'message':_0x1fd841['statusText']}));throw new Error(_0xfab525['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1fd841['json']();},async 'getBindings'(_0x3b3071={}){const _0x4fef11=new URLSearchParams();if(_0x3b3071['resource_type'])_0x4fef11['set']('resource_type',_0x3b3071['resource_type']);if(_0x3b3071['resource_id'])_0x4fef11['set']('resource_id',_0x3b3071['resource_id']);if(_0x3b3071['subject_type'])_0x4fef11['set']('subject_type',_0x3b3071['subject_type']);if(_0x3b3071['subject_id'])_0x4fef11['set']('subject_id',_0x3b3071['subject_id']);const _0x55f2fa=_0x4fef11['toString'](),_0x5ed2c6=await fetch(API_BASE+'/bindings'+(_0x55f2fa?'?'+_0x55f2fa:''));if(!_0x5ed2c6['ok']){const _0x4659fd=await _0x5ed2c6['json']()['catch'](()=>({'message':_0x5ed2c6['statusText']}));throw new Error(_0x4659fd['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5ed2c6['json']();},async 'createBinding'(_0x362065){const _0x256bfe=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x362065)});if(!_0x256bfe['ok']){const _0x370635=await _0x256bfe['json']()['catch'](()=>({'message':_0x256bfe['statusText']}));throw new Error(_0x370635['message']||'Failed\x20to\x20create\x20binding');}return await _0x256bfe['json']();},async 'updateBinding'(_0x163079,_0x1b28e0){const _0x34a9dd=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x163079),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b28e0)});if(!_0x34a9dd['ok']){const _0x7acf1d=await _0x34a9dd['json']()['catch'](()=>({'message':_0x34a9dd['statusText']}));throw new Error(_0x7acf1d['message']||'Failed\x20to\x20update\x20binding');}return await _0x34a9dd['json']();},async 'deleteBinding'(_0x1ee23e){const _0x44e156=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1ee23e),{'method':'DELETE'});if(!_0x44e156['ok']){const _0x4f6f44=await _0x44e156['json']()['catch'](()=>({'message':_0x44e156['statusText']}));throw new Error(_0x4f6f44['message']||'Failed\x20to\x20delete\x20binding');}return await _0x44e156['json']();},async 'getRoleDefinitions'(){const _0x5da3e7=await fetch(API_BASE+'/roles');if(!_0x5da3e7['ok']){const _0x2973e6=await _0x5da3e7['json']()['catch'](()=>({'message':_0x5da3e7['statusText']}));throw new Error(_0x2973e6['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x5da3e7['json']();},async 'getRoleDefinition'(_0x1f0aa5){const _0x2fec51=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1f0aa5));if(!_0x2fec51['ok']){const _0x510dd3=await _0x2fec51['json']()['catch'](()=>({'message':_0x2fec51['statusText']}));throw new Error(_0x510dd3['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x2fec51['json']();},async 'createRoleDefinition'(_0x132fef){const _0x2582e7=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x132fef)});if(!_0x2582e7['ok']){const _0x28be07=await _0x2582e7['json']()['catch'](()=>({'message':_0x2582e7['statusText']}));throw new Error(_0x28be07['message']||_0x28be07['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2582e7['json']();},async 'updateRoleDefinition'(_0x368c8e,_0x4e3f42){const _0x40ff4d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x368c8e),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e3f42)});if(!_0x40ff4d['ok']){const _0xa3eed0=await _0x40ff4d['json']()['catch'](()=>({'message':_0x40ff4d['statusText']}));throw new Error(_0xa3eed0['message']||_0xa3eed0['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x40ff4d['json']();},async 'deleteRoleDefinition'(_0xd3039d){const _0x1819cd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xd3039d),{'method':'DELETE'});if(!_0x1819cd['ok']){const _0x1b67ec=await _0x1819cd['json']()['catch'](()=>({'message':_0x1819cd['statusText']}));throw new Error(_0x1b67ec['message']||_0x1b67ec['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x1819cd['json']();},async 'getAvailablePermissions'(){const _0x548614=await fetch(API_BASE+'/roles/available-permissions');if(!_0x548614['ok']){const _0x28f53e=await _0x548614['json']()['catch'](()=>({'message':_0x548614['statusText']}));throw new Error(_0x28f53e['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x548614['json']();},async 'getGitProviderAllowedTeams'(_0x2934f3){const _0x3e8123=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2934f3)+'/allowed-teams');if(!_0x3e8123['ok']){const _0x1a1139=await _0x3e8123['json']()['catch'](()=>({'message':_0x3e8123['statusText']}));throw new Error(_0x1a1139['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3e8123['json']();},async 'setGitProviderAllowedTeams'(_0x867c62,_0x3377bd){const _0x474c94=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x867c62)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3377bd})});if(!_0x474c94['ok']){const _0xafc948=await _0x474c94['json']()['catch'](()=>({'message':_0x474c94['statusText']}));throw new Error(_0xafc948['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x474c94['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 _0xf47623=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2db418=>{_0x2db418['el']['style']['bottom']=_0xf47623+'px';const _0x111c5b=_0x2db418['el']['offsetHeight']||toastState['defaultHeight'];_0xf47623+=_0x111c5b+toastState['gap'];});});}function removeToastById(_0x132605){const _0x187dbe=toastState['toasts']['findIndex'](_0x247d10=>_0x247d10['id']===_0x132605);if(_0x187dbe===-0x1)return;const _0x2f4aa4=toastState['toasts'][_0x187dbe];if(_0x2f4aa4['timeoutId'])clearTimeout(_0x2f4aa4['timeoutId']);_0x2f4aa4['el']['classList']['remove']('show'),setTimeout(()=>_0x2f4aa4['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x187dbe,0x1),repositionAllToasts();}function registerToast(_0x4216c7){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4216c7),repositionAllToasts(),_0x4216c7['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(_0x57af82){if(_0x57af82===null||_0x57af82===undefined)return'';return String(_0x57af82)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x15b483,_0x568ef5){if(_0x15b483&&typeof _0x15b483==='object'&&!Array['isArray'](_0x15b483))return{'code':typeof _0x15b483['text']==='string'?_0x15b483['text']:'','language':typeof _0x15b483['lang']==='string'?_0x15b483['lang']:''};return{'code':typeof _0x15b483==='string'?_0x15b483:'','language':typeof _0x568ef5==='string'?_0x568ef5:''};}function buildMermaidBlock(_0x30014c){const _0x19bf4c=String(_0x30014c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x19bf4c))+'\x22>'+escapeHtmlValue(_0x19bf4c)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0xfbad14=new marked['Renderer'](),_0x43026d=_0xfbad14['code']['bind'](_0xfbad14);return _0xfbad14['code']=function(_0x5015b8,_0xde0f57,..._0x2dbb11){const {code:_0x5b274c,language:_0x315892}=getMarkdownCodeBlockPayload(_0x5015b8,_0xde0f57),_0x4e6f49=String(_0x315892||'')['trim']()['toLowerCase']();if(_0x4e6f49==='mermaid')return buildMermaidBlock(_0x5b274c);const _0x4364e1=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x4364e1&&_0x4e6f49)try{const _0x43bd12=_0x4364e1['getLanguage'](_0x4e6f49)?_0x4e6f49:'plaintext',_0x37638b=_0x4364e1['highlight'](_0x5b274c,{'language':_0x43bd12})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4e6f49)+'\x22>'+_0x37638b+'</code></pre>';}catch(_0x3dd61b){console['error']('Syntax\x20highlighting\x20error:',_0x3dd61b);}return _0x43026d(_0x5015b8,_0xde0f57,..._0x2dbb11);},sharedMarkedRenderer=_0xfbad14,_0xfbad14;}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 _0x50037e=window['mermaid'];if(!_0x50037e||typeof _0x50037e['initialize']!=='function')return _0x50037e||null;return _0x50037e['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x50037e;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x40414e,_0x5f2d73)=>{const _0x449a78=()=>_0x40414e(configureMermaidInstance()),_0x38d20a=()=>{mermaidLoadPromise=null,_0x5f2d73(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x29bb4a=document['getElementById'](MERMAID_SCRIPT_ID);!_0x29bb4a&&(_0x29bb4a=document['createElement']('script'),_0x29bb4a['id']=MERMAID_SCRIPT_ID,_0x29bb4a['src']=MERMAID_SCRIPT_SRC,_0x29bb4a['async']=!![],document['head']['appendChild'](_0x29bb4a));if(window['mermaid']){_0x449a78();return;}_0x29bb4a['addEventListener']('load',_0x449a78,{'once':!![]}),_0x29bb4a['addEventListener']('error',_0x38d20a,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x49f670){const _0x362e03=_0x49f670['getAttribute']('data-mermaid-source');if(!_0x362e03)return null;let _0x502ef2=_0x362e03;try{_0x502ef2=decodeURIComponent(_0x362e03);}catch{}return _0x49f670['textContent']=_0x502ef2,_0x49f670['removeAttribute']('data-processed'),_0x49f670['removeAttribute']('aria-roledescription'),_0x49f670['removeAttribute']('role'),_0x49f670['removeAttribute']('aria-label'),_0x502ef2;}function collectMermaidNodes(_0x3e777f,_0xae380b){if(!(_0x3e777f instanceof Element))return;_0x3e777f['matches']('.mermaid[data-mermaid-source]')&&_0xae380b['add'](_0x3e777f),_0x3e777f['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2e0f4e=>{_0xae380b['add'](_0x2e0f4e);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x43cf07=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x28c648=>setTimeout(_0x28c648,0x0);_0x43cf07(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x4dba35=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x4dba35);});});}function queueMermaidRender(_0x2f1c25){const _0x5032c8=new Set();_0x2f1c25 instanceof Document||_0x2f1c25 instanceof DocumentFragment?_0x2f1c25['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3accbc=>_0x5032c8['add'](_0x3accbc)):collectMermaidNodes(_0x2f1c25,_0x5032c8);if(_0x5032c8['size']===0x0)return;_0x5032c8['forEach'](_0xb3c178=>pendingMermaidNodes['add'](_0xb3c178)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x3ce82c=Array['from'](pendingMermaidNodes)['filter'](_0xcc6a79=>_0xcc6a79['isConnected']);pendingMermaidNodes['clear']();if(_0x3ce82c['length']===0x0)return;const _0x242439=await loadMermaid();if(!_0x242439)return;configureMermaidInstance();const _0x43ebd7=getMermaidTheme();for(const _0x20da10 of _0x3ce82c){const _0x53ced7=_0x20da10['getAttribute']('data-mermaid-source');if(!_0x53ced7)continue;const _0x39eadc=_0x20da10['getAttribute']('data-processed')==='true';if(_0x39eadc&&_0x20da10['dataset']['mermaidTheme']===_0x43ebd7)continue;restoreMermaidSource(_0x20da10);try{if(typeof _0x242439['run']==='function')await _0x242439['run']({'nodes':[_0x20da10]});else typeof _0x242439['init']==='function'&&_0x242439['init'](undefined,[_0x20da10]);_0x20da10['dataset']['mermaidTheme']=_0x43ebd7,delete _0x20da10['dataset']['mermaidError'];}catch(_0x3fd5c3){console['error']('Mermaid\x20render\x20failed:',_0x3fd5c3),restoreMermaidSource(_0x20da10),_0x20da10['dataset']['mermaidError']='true',delete _0x20da10['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1f2d78=>{_0x1f2d78['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1f2d78);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x44cf63=>{_0x44cf63['forEach'](_0x124dc8=>{_0x124dc8['addedNodes']['forEach'](_0x19112d=>{_0x19112d['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x19112d);});});}),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'(_0x29d994){const _0x3a40c9=new Date(_0x29d994),_0x5b9a0e=new Date(),_0x3b9d45=_0x5b9a0e-_0x3a40c9,_0x1ce134=Math['floor'](_0x3b9d45/0x3e8),_0x103950=Math['floor'](_0x1ce134/0x3c),_0x30b175=Math['floor'](_0x103950/0x3c),_0x1f3c39=Math['floor'](_0x30b175/0x18);if(_0x1ce134<0x3c)return'now';if(_0x103950<0x3c)return _0x103950+'m\x20ago';if(_0x30b175<0x18)return _0x30b175+'h\x20ago';return _0x1f3c39+'d\x20ago';},'getStatusIcon'(_0x12788d){switch(_0x12788d){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x46ee17){switch(_0x46ee17){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'(_0x426ee4,_0x2d85f7=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x6a4e03={};_0x6a4e03['text/plain']=new Blob([_0x426ee4],{'type':'text/plain'});_0x2d85f7&&(_0x6a4e03['text/html']=new Blob([_0x2d85f7],{'type':'text/html'}));const _0x5453ec=new ClipboardItem(_0x6a4e03);return await navigator['clipboard']['write']([_0x5453ec]),!![];}catch(_0x413c0e){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x413c0e);}try{const _0x4ae4e0=_0x148ab7=>{_0x148ab7['preventDefault'](),_0x148ab7['clipboardData']['setData']('text/plain',_0x426ee4),_0x2d85f7&&_0x148ab7['clipboardData']['setData']('text/html',_0x2d85f7);};document['addEventListener']('copy',_0x4ae4e0);const _0x3e0512=document['execCommand']('copy');document['removeEventListener']('copy',_0x4ae4e0);if(_0x3e0512)return!![];}catch(_0x1b8b2d){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1b8b2d);}try{const _0x509421=document['createElement']('textarea');_0x509421['value']=_0x426ee4,_0x509421['style']['position']='fixed',_0x509421['style']['opacity']='0',_0x509421['style']['pointerEvents']='none',document['body']['appendChild'](_0x509421),_0x509421['select']();const _0x171b51=document['execCommand']('copy');return document['body']['removeChild'](_0x509421),_0x171b51;}catch(_0x58207e){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x58207e),![];}},'showToast'(_0xaeb336,_0x47bfb1='info'){const _0x3b27e3=getNextToastId(),_0x179e3c=document['createElement']('div');_0x179e3c['className']='toast\x20toast-'+_0x47bfb1,_0x179e3c['textContent']=_0xaeb336,_0x179e3c['dataset']['toastId']=_0x3b27e3,document['body']['appendChild'](_0x179e3c);const _0x53d03c=_0x47bfb1==='error'?0x2710:0xbb8,_0x2c7a45=setTimeout(()=>{removeToastById(_0x3b27e3);},_0x53d03c),_0x1d8b1d={'id':_0x3b27e3,'el':_0x179e3c,'timeoutId':_0x2c7a45};return registerToast(_0x1d8b1d),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x179e3c['classList']['add']('show');});}),_0x3b27e3;},'showError'(_0x567706){console['error'](_0x567706);const _0xab7cbb=typeof _0x567706==='string'?_0x567706:_0x567706['message']||'An\x20error\x20occurred';this['showToast'](_0xab7cbb,'error');},'showSuccess'(_0x2a5793){this['showToast'](_0x2a5793,'success');},'capitalize'(_0x22dd0c){if(!_0x22dd0c)return'';return _0x22dd0c['charAt'](0x0)['toUpperCase']()+_0x22dd0c['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2a9a06){return escapeHtmlValue(_0x2a9a06);},'ansiToHtml'(_0x524796){if(_0x524796===null||_0x524796===undefined)return'';let _0x4ea4c9=this['escapeHtml'](_0x524796);const _0xf8f655={'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'},_0x56d678={'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 _0x718409=0x0;return _0x4ea4c9=_0x4ea4c9['replace'](/\x1b\[([0-9;]*)m/g,(_0x5c956a,_0x4c5d30)=>{if(!_0x4c5d30||_0x4c5d30==='0'){const _0x50a720='</span>'['repeat'](_0x718409);return _0x718409=0x0,_0x50a720;}const _0x571e23=_0x4c5d30['split'](';'),_0x46adcc=[];for(const _0x3e56e8 of _0x571e23){if(_0x3e56e8==='1')_0x46adcc['push']('font-weight:bold');else{if(_0x3e56e8==='2')_0x46adcc['push']('opacity:0.7');else{if(_0x3e56e8==='3')_0x46adcc['push']('font-style:italic');else{if(_0x3e56e8==='4')_0x46adcc['push']('text-decoration:underline');else{if(_0x3e56e8==='9')_0x46adcc['push']('text-decoration:line-through');else{if(_0xf8f655[_0x3e56e8])_0x46adcc['push']('color:'+_0xf8f655[_0x3e56e8]);else{if(_0x56d678[_0x3e56e8])_0x46adcc['push']('background-color:'+_0x56d678[_0x3e56e8]);}}}}}}}if(_0x46adcc['length']>0x0)return _0x718409++,'<span\x20style=\x22'+_0x46adcc['join'](';')+'\x22>';return'';}),_0x4ea4c9+='</span>'['repeat'](_0x718409),_0x4ea4c9=_0x4ea4c9['replace'](/\\u001b\[([0-9;]*)m/g,(_0xe5da7d,_0x50cff6)=>{if(!_0x50cff6||_0x50cff6==='0')return'';const _0x316aba=_0x50cff6['split'](';'),_0x2d71e4=[];for(const _0x5db9ee of _0x316aba){if(_0x5db9ee==='1')_0x2d71e4['push']('font-weight:bold');else{if(_0xf8f655[_0x5db9ee])_0x2d71e4['push']('color:'+_0xf8f655[_0x5db9ee]);else{if(_0x56d678[_0x5db9ee])_0x2d71e4['push']('background-color:'+_0x56d678[_0x5db9ee]);}}}if(_0x2d71e4['length']>0x0)return'<span\x20style=\x22'+_0x2d71e4['join'](';')+'\x22>';return'';}),_0x4ea4c9;},'showModal'({title:_0x25962b,content:_0x262769,buttons:buttons=[]}){const _0x1842e3='\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'](_0x25962b)+'</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'+_0x262769+'\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']((_0x475e1a,_0x2ec087)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x475e1a['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x2ec087+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x475e1a['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',_0x4a9dcc=document['createElement']('div');_0x4a9dcc['id']='utils-modal',_0x4a9dcc['className']='modal',_0x4a9dcc['innerHTML']=_0x1842e3,document['body']['appendChild'](_0x4a9dcc);const _0x993d6c=document['getElementById']('utils-modal-close');_0x993d6c&&_0x993d6c['addEventListener']('click',()=>this['hideModal']());const _0x4881d5=_0x4a9dcc['querySelectorAll']('[data-btn-index]');_0x4881d5['forEach'](_0x41f9bc=>{const _0x1083d3=parseInt(_0x41f9bc['dataset']['btnIndex']);buttons[_0x1083d3]?.['onClick']&&_0x41f9bc['addEventListener']('click',buttons[_0x1083d3]['onClick']);});const _0x48a063=document['getElementById']('utils-modal-overlay');_0x48a063&&_0x48a063['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x26864f=document['getElementById']('utils-modal');_0x26864f&&_0x26864f['remove']();},'parseKeyValuePairs'(_0x15febe){const _0x419b86={};if(!_0x15febe)return _0x419b86;return _0x15febe['split'](/\r?\n/)['map'](_0x204e55=>_0x204e55['trim']())['filter'](Boolean)['forEach'](_0x199a7d=>{const _0x1b68cc=_0x199a7d['indexOf']('=');if(_0x1b68cc>0x0){const _0x30e751=_0x199a7d['slice'](0x0,_0x1b68cc)['trim'](),_0x3c4956=_0x199a7d['slice'](_0x1b68cc+0x1)['trim']();if(_0x30e751)_0x419b86[_0x30e751]=_0x3c4956;}}),_0x419b86;},'debounce'(_0xf46903,_0xb18c48=0xfa){let _0x815622=null;return(..._0x4f88ca)=>{clearTimeout(_0x815622),_0x815622=setTimeout(()=>_0xf46903['apply'](this,_0x4f88ca),_0xb18c48);};},'formatTimestamp'(_0x13d246){if(!_0x13d246)return'N/A';const _0x501c92=new Date(_0x13d246);return _0x501c92['toLocaleDateString']()+'\x20'+_0x501c92['toLocaleTimeString']();},'getQueryParams'(){const _0x2d05c0=new URLSearchParams(window['location']['search']),_0x2876c8={};for(const [_0x34d241,_0x3da2f3]of _0x2d05c0){_0x2876c8[_0x34d241]=_0x3da2f3;}return _0x2876c8;},'formatDuration'(_0x3b1bb7,_0x548cb3){if(!_0x3b1bb7)return'N/A';const _0x153c52=new Date(_0x3b1bb7),_0x176ef0=_0x548cb3?new Date(_0x548cb3):new Date(),_0x19740d=_0x176ef0-_0x153c52;if(_0x19740d<0x0)return'0s';const _0x5c807d=Math['floor'](_0x19740d/0x3e8),_0x7924be=Math['floor'](_0x5c807d/0x3c),_0x4e826e=Math['floor'](_0x7924be/0x3c),_0x1a8fc6=Math['floor'](_0x4e826e/0x18);if(_0x5c807d<0x3c)return _0x5c807d+'s';if(_0x7924be<0x3c)return _0x7924be+'m\x20'+_0x5c807d%0x3c+'s';if(_0x4e826e<0x18)return _0x4e826e+'h\x20'+_0x7924be%0x3c+'m\x20'+_0x5c807d%0x3c+'s';return _0x1a8fc6+'d\x20'+_0x4e826e%0x18+'h\x20'+_0x7924be%0x3c+'m';},'renderMarkdown'(_0x50997e,_0x1df2d9={}){if(!_0x50997e)return'';_0x50997e=this['rewriteAttachmentLinks'](_0x50997e,_0x1df2d9),_0x50997e=this['rewriteColorSyntax'](_0x50997e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x50997e,_0x1df2d9);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x50997e);}catch(_0xfc3d02){return console['error']('Markdown\x20parsing\x20error:',_0xfc3d02),this['renderMarkdownFallback'](_0x50997e,_0x1df2d9);}},'rewriteAttachmentLinks'(_0x2c5f00,_0x49c949={}){const _0x8a9150=typeof _0x49c949['resolveAttachmentUrl']==='function'?_0x49c949['resolveAttachmentUrl']:_0x49c949['taskId']?_0x49361e=>API_BASE+'/tasks/'+_0x49c949['taskId']+'/attachments/'+encodeURIComponent(_0x49361e):null;if(!_0x8a9150)return _0x2c5f00;return String(_0x2c5f00)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x38ecc4,_0x5c87be)=>{const _0x41af4e=String(_0x5c87be||'')['trim']();if(!_0x41af4e)return _0x38ecc4;let _0xe5a767=_0x41af4e;try{_0xe5a767=decodeURIComponent(_0x41af4e);}catch{}const _0x555170=_0x8a9150(_0xe5a767);if(!_0x555170)return _0x38ecc4;return']('+_0x555170+')';});},'rewriteColorSyntax'(_0x18ae3d){if(!_0x18ae3d)return _0x18ae3d;return String(_0x18ae3d)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x1f7d64,_0x5390e5,_0x3555bb)=>{const _0x49b007=this['rewriteColorSyntax'](_0x3555bb);return'<span\x20style=\x22color:\x20'+_0x5390e5+'\x22>'+_0x49b007+'</span>';});},'renderMarkdownFallback'(_0x1c5bf1,_0xf852ad={}){if(!_0x1c5bf1)return'';_0x1c5bf1=_0x1c5bf1['replace'](/\r\n/g,'\x0a'),_0x1c5bf1=_0x1c5bf1['replace'](/\r/g,'\x0a'),_0x1c5bf1=this['rewriteAttachmentLinks'](_0x1c5bf1,_0xf852ad);let _0x41ebbb=this['escapeHtml'](_0x1c5bf1);return _0x41ebbb=_0x41ebbb['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x41ebbb=_0x41ebbb['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x41ebbb=_0x41ebbb['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x41ebbb=_0x41ebbb['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x41ebbb=_0x41ebbb['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x41ebbb=_0x41ebbb['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x41ebbb=_0x41ebbb['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x41ebbb=_0x41ebbb['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x41ebbb=_0x41ebbb['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x41ebbb=_0x41ebbb['replace'](/\n\n/g,'</p><p>'),_0x41ebbb=_0x41ebbb['replace'](/\n/g,'<br>'),'<p>'+_0x41ebbb+'</p>';}};export class CustomSelect{constructor(_0x1b4f6d,_0x1b3add={}){this['nativeSelect']=_0x1b4f6d,this['options']=_0x1b3add,this['isOpen']=![],this['selectedValue']=_0x1b4f6d['value']||'',this['searchable']=_0x1b3add['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x138142=document['createElement']('div');_0x138142['className']='custom-select';const _0x3a8730=document['createElement']('div');_0x3a8730['className']='custom-select-trigger',_0x3a8730['setAttribute']('tabindex','0'),_0x3a8730['setAttribute']('role','button'),_0x3a8730['setAttribute']('aria-haspopup','listbox');const _0x36ca5f=document['createElement']('span');_0x36ca5f['className']='custom-select-trigger-text';const _0x432408=document['createElement']('span');_0x432408['className']='custom-select-arrow',_0x432408['textContent']='▼',_0x3a8730['appendChild'](_0x36ca5f),_0x3a8730['appendChild'](_0x432408);const _0x86dda4=document['createElement']('div');_0x86dda4['className']='custom-select-dropdown',_0x86dda4['setAttribute']('role','listbox');if(this['searchable']){const _0x25d10e=document['createElement']('div');_0x25d10e['className']='custom-select-search';const _0x4c6fbc=document['createElement']('input');_0x4c6fbc['type']='text',_0x4c6fbc['className']='custom-select-search-input',_0x4c6fbc['placeholder']='Type\x20to\x20search...',_0x4c6fbc['setAttribute']('aria-label','Search\x20options'),_0x4c6fbc['addEventListener']('input',_0xd88ff6=>{this['searchQuery']=_0xd88ff6['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x4c6fbc['addEventListener']('keydown',_0x6360ba=>{if(_0x6360ba['key']==='Escape')_0x6360ba['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x6360ba['key']==='Enter'){_0x6360ba['preventDefault'](),_0x6360ba['stopPropagation']();const _0x411538=_0x86dda4['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x411538){const _0x3ccaac=_0x411538['getAttribute']('data-value');this['select'](_0x3ccaac);}}}}),_0x25d10e['appendChild'](_0x4c6fbc),_0x86dda4['appendChild'](_0x25d10e),this['searchInput']=_0x4c6fbc;}const _0x1e58cd=document['createElement']('div');_0x1e58cd['className']='custom-select-options',_0x86dda4['appendChild'](_0x1e58cd),_0x138142['appendChild'](_0x3a8730),_0x138142['appendChild'](_0x86dda4),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x138142,this['nativeSelect']),this['wrapper']=_0x138142,this['trigger']=_0x3a8730,this['triggerText']=_0x36ca5f,this['dropdown']=_0x86dda4,this['optionsContainer']=_0x1e58cd,_0x3a8730['addEventListener']('click',()=>this['toggle']()),_0x3a8730['addEventListener']('keydown',_0x15a6bb=>this['handleKeydown'](_0x15a6bb)),document['addEventListener']('click',_0x20100e=>{!_0x138142['contains'](_0x20100e['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x418620=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x418620['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x28c54f=new MutationObserver(()=>{this['updateDisabledState']();});_0x28c54f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x927a14=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x927a14['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x49b12f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x49b12f),this['trigger']['setAttribute']('aria-disabled',_0x49b12f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x49b12f?'-1':'0'),_0x49b12f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2bd263=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1a5028=_0x2bd263['filter'](_0x1afc95=>!_0x1afc95['disabled']&&!_0x1afc95['hidden']);_0x2bd263['forEach']((_0x1ba959,_0x2a80e5)=>{const _0x2c1162=document['createElement']('div');_0x2c1162['className']='custom-select-option',_0x2c1162['textContent']=_0x1ba959['textContent'],_0x2c1162['setAttribute']('data-value',_0x1ba959['value']),_0x2c1162['setAttribute']('data-index',_0x2a80e5),_0x2c1162['setAttribute']('role','option'),_0x1ba959['disabled']?_0x2c1162['classList']['add']('disabled'):_0x2c1162['addEventListener']('click',()=>this['select'](_0x1ba959['value'])),_0x1ba959['value']===this['selectedValue']&&_0x2c1162['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2c1162),this['allOptions']['push']({'element':_0x2c1162,'text':_0x1ba959['textContent']['toLowerCase'](),'value':_0x1ba959['value'],'disabled':_0x1ba959['disabled']});});if(this['searchable']&&this['searchInput']){const _0x21fdb2=this['searchInput']['parentElement'];_0x1a5028['length']>0x3?_0x21fdb2['style']['display']='':_0x21fdb2['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xfa9afa=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x34712c=>{if(!_0xfa9afa||_0x34712c['disabled'])_0x34712c['element']['style']['display']='';else{const _0x213a0e=_0x34712c['text']['includes'](_0xfa9afa);_0x34712c['element']['style']['display']=_0x213a0e?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x4015a1){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x4015a1,this['nativeSelect']['value']=_0x4015a1;const _0x992394=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x992394),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x487d68=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x487d68&&(this['triggerText']['textContent']=_0x487d68['textContent'],_0x487d68['disabled']||_0x487d68['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x27a431=>{_0x27a431['getAttribute']('data-value')===this['selectedValue']?_0x27a431['classList']['add']('selected'):_0x27a431['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 _0x414298=window['getComputedStyle'](this['dropdown']);if(_0x414298['position']==='fixed'){const _0x49b776=this['trigger']['getBoundingClientRect'](),_0x1bea1b=parseInt(_0x414298['maxHeight'])||0xc8,_0x24be6e=window['innerHeight'],_0x45eef9=_0x24be6e-_0x49b776['bottom'],_0x4f4904=_0x49b776['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0xbe2f3f;_0x45eef9<_0x1bea1b&&_0x4f4904>_0x45eef9?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x24be6e-_0x49b776['top']+'px',_0xbe2f3f=Math['min'](_0x1bea1b,_0x4f4904-0xa),this['dropdown']['style']['maxHeight']=_0xbe2f3f+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x49b776['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0xbe2f3f=Math['min'](_0x1bea1b,_0x45eef9-0xa),this['dropdown']['style']['maxHeight']=_0xbe2f3f+'px');if(this['optionsContainer']){let _0x24d7a5=_0xbe2f3f;if(this['searchInput']){const _0x25d0f1=this['searchInput']['parentElement'];_0x25d0f1&&(_0x24d7a5-=_0x25d0f1['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x24d7a5)+'px';}this['dropdown']['style']['left']=_0x49b776['left']+'px',this['dropdown']['style']['width']=_0x49b776['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xbb73a=this['searchInput']['parentElement'];_0xbb73a&&_0xbb73a['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'](_0x519ce0){if(this['nativeSelect']['disabled'])return;if(_0x519ce0['key']==='Enter'||_0x519ce0['key']==='\x20')_0x519ce0['preventDefault'](),this['toggle']();else _0x519ce0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4be967='\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',_0x4be967),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4a8e88=document['getElementById']('confirm-dialog-close'),_0x2313c0=document['getElementById']('confirm-dialog-cancel'),_0x431ee3=document['getElementById']('confirm-dialog-confirm'),_0x31f216=this['_modal']['querySelector']('.modal-overlay');_0x4a8e88['addEventListener']('click',()=>this['_resolve'](![])),_0x2313c0['addEventListener']('click',()=>this['_resolve'](![])),_0x431ee3['addEventListener']('click',()=>this['_resolve'](!![])),_0x31f216['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0xd5afba=>{if(_0xd5afba['key']==='Escape')_0xd5afba['preventDefault'](),this['_resolve'](![]);else _0xd5afba['key']==='Enter'&&(_0xd5afba['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x38f0f7,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x252916=>{this['_resolvePromise']=_0x252916,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x38f0f7;const _0x4da18c=document['getElementById']('confirm-dialog-cancel'),_0xc75fca=document['getElementById']('confirm-dialog-confirm');_0x4da18c['textContent']=cancelText,_0xc75fca['textContent']=confirmText,_0xc75fca['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xc75fca['focus']();});},'_resolve'(_0x1087d9){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1087d9),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2b58c0,_0x1a85ff={}){this['container']=_0x2b58c0,this['options']={'placeholder':_0x1a85ff['placeholder']||'Type\x20to\x20search...','maxItems':_0x1a85ff['maxItems']||0x64,'loadItems':_0x1a85ff['loadItems']||(async()=>[]),'renderItem':_0x1a85ff['renderItem']||(_0x1df43a=>({'primary':String(_0x1df43a),'secondary':''})),'onSelect':_0x1a85ff['onSelect']||(()=>{}),'filterItems':_0x1a85ff['filterItems']||null,'getItemValue':_0x1a85ff['getItemValue']||(_0x2d219e=>_0x2d219e),'sortItems':_0x1a85ff['sortItems']||null,'debounceMs':_0x1a85ff['debounceMs']||0xc8,'minCharsForSearch':_0x1a85ff['minCharsForSearch']||0x0,'emptyMessage':_0x1a85ff['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1a85ff['loadingMessage']||'Loading...','preload':_0x1a85ff['preload']!==![],'searchMode':_0x1a85ff['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',_0x179cee=>this['onBlur'](_0x179cee)),this['input']['addEventListener']('input',_0x3810ce=>this['onInput'](_0x3810ce)),this['input']['addEventListener']('keydown',_0x4446f0=>this['onKeydown'](_0x4446f0)),this['clearBtn']['addEventListener']('mousedown',_0x5c808f=>{_0x5c808f['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x452c0b=>{_0x452c0b['preventDefault']();}),document['addEventListener']('click',_0x1320e0=>{!this['wrapper']['contains'](_0x1320e0['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(_0x3c3d0d){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x3c3d0d);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5b65f9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x34e9f4){const _0x400552=_0x34e9f4['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x400552);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x400552):this['loadAndShow'](_0x400552);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x54ed39){switch(_0x54ed39['key']){case'ArrowDown':_0x54ed39['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x54ed39['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x54ed39['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x54ed39['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x560c65){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x53bebd=this['selectedIndex']+_0x560c65;if(_0x53bebd>=0x0&&_0x53bebd<this['filteredItems']['length']){this['selectedIndex']=_0x53bebd,this['updateSelectionHighlight']();const _0x42c6c8=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x42c6c8[this['selectedIndex']]&&_0x42c6c8[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2b3382=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2b3382['forEach']((_0x38eb3d,_0x26c5e3)=>{_0x38eb3d['classList']['toggle']('keyboard-selected',_0x26c5e3===this['selectedIndex']);});}async['loadAndShow'](_0x1810ba){this['showLoading']();try{const _0x1a7487=await this['options']['loadItems'](_0x1810ba);if(this['options']['searchMode']==='server'){let _0x594a57=_0x1a7487;this['options']['sortItems']&&(_0x594a57=this['options']['sortItems']([..._0x1a7487]));this['filteredItems']=_0x594a57;const _0x36d63c=this['filteredItems']['length']>=this['options']['maxItems'];_0x36d63c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x36d63c),this['open']();}else this['allItems']=_0x1a7487,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x1810ba);}catch(_0xf70079){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0xf70079),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x16dd36){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x16dd36):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x1a98f4=this['filteredItems']['length']>=this['options']['maxItems'];_0x1a98f4&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x1a98f4),this['open']();}['renderItems'](_0x2f62f6){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']((_0x1b9219,_0x2c691e)=>{const _0x2b86be=document['createElement']('div');_0x2b86be['className']='autocomplete-select-item',_0x2b86be['setAttribute']('role','option'),_0x2b86be['setAttribute']('data-index',_0x2c691e);const _0x3dc1ed=this['options']['renderItem'](_0x1b9219);let _0x493925='';_0x3dc1ed['icon']&&(_0x493925='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x3dc1ed['iconClass']||'')+'\x22>'+_0x3dc1ed['icon']+'</span>'),_0x2b86be['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x493925+'\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'](_0x3dc1ed['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3dc1ed['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x3dc1ed['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x2b86be['addEventListener']('click',()=>{this['selectItem'](_0x1b9219);}),_0x2b86be['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x2c691e,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x2b86be);}),_0x2f62f6?(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'](_0x51f58f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x51f58f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x12dff5){this['selectedItem']=_0x12dff5;const _0x445236=this['options']['renderItem'](_0x12dff5);this['input']['value']=_0x445236['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x12dff5);}['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'](_0x2b9a0c){if(_0x2b9a0c){this['selectedItem']=_0x2b9a0c;const _0x4922ca=this['options']['renderItem'](_0x2b9a0c);this['input']['value']=_0x4922ca['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x58b245){this['allItems']=_0x58b245,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'](_0x564b8b){this['input']['placeholder']=_0x564b8b;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x51f91a=null){const _0x4fbde5=document['getElementById']('admin-menu-container'),_0x56bfe9=document['getElementById']('admin-menu-btn'),_0x42866e=document['getElementById']('admin-menu');if(!_0x4fbde5||!_0x56bfe9||!_0x42866e)return;try{!_0x51f91a&&(_0x51f91a=await API['getCurrentUser']());if(_0x51f91a){const _0x578252=window['Permissions'],_0x279d30=_0x578252['hasServerPermission'](_0x51f91a,'*')||_0x578252['hasEnvPermission'](_0x51f91a,'environments:manage')||_0x578252['hasServerPermission'](_0x51f91a,'users:create')||_0x578252['hasTeamPermission'](_0x51f91a,'teams:manage')||_0x578252['hasAnyEnvironment'](_0x51f91a);if(!_0x279d30)return;_0x4fbde5['hidden']=![];if(!_0x578252['hasServerPermission'](_0x51f91a,'*')){const _0x4895ce=_0x42866e['querySelectorAll']('.admin-menu-item');_0x4895ce['forEach'](_0x365c8a=>{const _0x4734b8=_0x365c8a['querySelector']('.option-text')?.['textContent']?.['trim']();_0x4734b8==='Users'&&!_0x578252['hasServerPermission'](_0x51f91a,'users:create')&&(_0x365c8a['hidden']=!![]),_0x4734b8==='Skills'&&(_0x365c8a['hidden']=!![]),_0x4734b8==='Server\x20Settings'&&(_0x365c8a['hidden']=!![]),_0x4734b8==='Server\x20Health'&&(_0x365c8a['hidden']=!![]),_0x4734b8==='Git\x20History'&&(_0x365c8a['hidden']=!![]),_0x4734b8==='Roles'&&(_0x365c8a['hidden']=!![]);});}_0x56bfe9['addEventListener']('click',_0x22cd75=>{_0x22cd75['stopPropagation']();const _0x1223a9=document['getElementById']('actions-menu');if(_0x1223a9)_0x1223a9['hidden']=!![];_0x42866e['hidden']=!_0x42866e['hidden'];}),document['addEventListener']('click',_0xfc9b3=>{!_0x42866e['hidden']&&!_0x56bfe9['contains'](_0xfc9b3['target'])&&!_0x42866e['contains'](_0xfc9b3['target'])&&(_0x42866e['hidden']=!![]);}),document['addEventListener']('keydown',_0x3be107=>{_0x3be107['key']==='Escape'&&!_0x42866e['hidden']&&(_0x42866e['hidden']=!![]);});const _0x306b4d=document['getElementById']('server-health-btn');_0x306b4d&&_0x306b4d['addEventListener']('click',async()=>{_0x42866e['hidden']=!![];const {openServerHealthModal:_0x1ce0e8}=await import('./server-health.js');_0x1ce0e8();});}}catch(_0x1a0348){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1a0348['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 _0x42476c=window['location']['pathname'],_0x558d68=_0x42476c['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x558d68)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x558d68[0x1]),_0x558d68[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x43de9c={}){const _0x1dcaed=new URLSearchParams();_0x43de9c['userId']&&_0x1dcaed['set']('userId',String(_0x43de9c['userId']));_0x43de9c['automation']&&_0x1dcaed['set']('automation',String(_0x43de9c['automation']));const _0x59b5cf=API_BASE+'/tasks/stats'+(_0x1dcaed['toString']()?'?'+_0x1dcaed['toString']():''),_0x50f9fa=await fetch(_0x59b5cf);if(!_0x50f9fa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x50f9fa['statusText']);return await _0x50f9fa['json']();},async 'getTasks'(_0x250da0={}){const _0x4f39c0=new URLSearchParams();_0x250da0['status']&&_0x4f39c0['set']('status',String(_0x250da0['status']));_0x250da0['environment']&&_0x4f39c0['set']('environment',String(_0x250da0['environment']));_0x250da0['automation']&&_0x4f39c0['set']('automation',String(_0x250da0['automation']));if(_0x250da0['include']){const _0x48ff97=Array['isArray'](_0x250da0['include'])?_0x250da0['include']['join'](','):String(_0x250da0['include']);_0x48ff97&&_0x4f39c0['set']('include',_0x48ff97);}_0x250da0['filter']&&_0x4f39c0['set']('filter',String(_0x250da0['filter']));_0x250da0['page']&&_0x4f39c0['set']('page',String(_0x250da0['page']));_0x250da0['limit']&&_0x4f39c0['set']('limit',String(_0x250da0['limit']));_0x250da0['userId']&&_0x4f39c0['set']('userId',String(_0x250da0['userId']));_0x250da0['search']&&_0x4f39c0['set']('search',String(_0x250da0['search']));_0x250da0['includeChildTasks']&&_0x4f39c0['set']('includeChildTasks','true');const _0x2de641=API_BASE+'/tasks'+(_0x4f39c0['toString']()?'?'+_0x4f39c0['toString']():''),_0x20bec9=await fetch(_0x2de641);if(!_0x20bec9['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x20bec9['statusText']);return await _0x20bec9['json']();},async 'getAutomations'(_0x1246fe={}){const _0x321b7e=new URLSearchParams();_0x1246fe['environment']&&_0x321b7e['set']('environment',String(_0x1246fe['environment']));const _0x404ecb=await fetch(API_BASE+'/api/automations'+(_0x321b7e['toString']()?'?'+_0x321b7e['toString']():''));if(!_0x404ecb['ok']){const _0x11d396=await _0x404ecb['json']()['catch'](()=>({}));throw new Error(_0x11d396['message']||_0x11d396['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x404ecb['statusText']);}return await _0x404ecb['json']();},async 'getAutomation'(_0x5370ca){const _0x341304=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5370ca));if(!_0x341304['ok']){const _0x289565=await _0x341304['json']()['catch'](()=>({}));throw new Error(_0x289565['message']||_0x289565['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x341304['statusText']);}return await _0x341304['json']();},async 'createAutomation'(_0x29c72c){const _0x365953=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29c72c||{})});if(!_0x365953['ok']){const _0x4768d5=await _0x365953['json']()['catch'](()=>({}));throw new Error(_0x4768d5['message']||_0x4768d5['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x365953['statusText']);}return await _0x365953['json']();},async 'updateAutomation'(_0x305c01,_0x19dbfa){const _0x4e593c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x305c01),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19dbfa||{})});if(!_0x4e593c['ok']){const _0x1a2f37=await _0x4e593c['json']()['catch'](()=>({}));throw new Error(_0x1a2f37['message']||_0x1a2f37['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4e593c['statusText']);}return await _0x4e593c['json']();},async 'deleteAutomation'(_0x44ca89){const _0x5b73a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x44ca89),{'method':'DELETE'});if(!_0x5b73a['ok']){const _0x4674f6=await _0x5b73a['json']()['catch'](()=>({}));throw new Error(_0x4674f6['message']||_0x4674f6['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5b73a['statusText']);}return await _0x5b73a['json']();},async 'triggerAutomation'(_0x4d3daf){const _0x44fb3b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d3daf)+'/trigger',{'method':'POST'});if(!_0x44fb3b['ok']){const _0x561c44=await _0x44fb3b['json']()['catch'](()=>({}));throw new Error(_0x561c44['message']||_0x561c44['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x44fb3b['statusText']);}return await _0x44fb3b['json']();},async 'setAutomationEnabled'(_0x31c4b8,_0x569658){const _0x4e751a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31c4b8)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x569658})});if(!_0x4e751a['ok']){const _0x408971=await _0x4e751a['json']()['catch'](()=>({}));throw new Error(_0x408971['message']||_0x408971['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4e751a['statusText']);}return await _0x4e751a['json']();},async 'getAutomationHistory'(_0x16912d,_0x161393=0x32){const _0x40cc1b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x16912d)+'/history?limit='+encodeURIComponent(String(_0x161393)));if(!_0x40cc1b['ok']){const _0x4fc767=await _0x40cc1b['json']()['catch'](()=>({}));throw new Error(_0x4fc767['message']||_0x4fc767['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x40cc1b['statusText']);}return await _0x40cc1b['json']();},async 'getTask'(_0x498122,_0x52b715={}){const _0x103f4a=new URLSearchParams();if(_0x52b715['include']){const _0x2bdf9e=Array['isArray'](_0x52b715['include'])?_0x52b715['include']['join'](','):String(_0x52b715['include']);if(_0x2bdf9e)_0x103f4a['set']('include',_0x2bdf9e);}const _0xeaae=await fetch(API_BASE+'/tasks/'+_0x498122+(_0x103f4a['toString']()?'?'+_0x103f4a['toString']():''));if(!_0xeaae['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xeaae['statusText']);return await _0xeaae['json']();},async 'getTaskResults'(_0x42657f){const _0x2a2a91=await fetch(API_BASE+'/tasks/'+_0x42657f+'/results');if(!_0x2a2a91['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2a2a91['statusText']);return await _0x2a2a91['json']();},async 'getTaskPatches'(_0x3a5009){const _0xcb2d04=await fetch(API_BASE+'/tasks/'+_0x3a5009+'/patches');if(!_0xcb2d04['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0xcb2d04['statusText']);return await _0xcb2d04['json']();},async 'getTaskAttachments'(_0x5d9f86){const _0x777c45=await fetch(API_BASE+'/tasks/'+_0x5d9f86+'/attachments');if(!_0x777c45['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x777c45['statusText']);return await _0x777c45['json']();},async 'uploadAttachments'(_0x372826,_0x3eb7b9){const _0x236fdc=new FormData();for(const _0x4c417a of _0x3eb7b9){_0x236fdc['append']('attachments',_0x4c417a);}const _0x3e5746=await fetch(API_BASE+'/tasks/'+_0x372826+'/attachments',{'method':'POST','body':_0x236fdc});if(!_0x3e5746['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3e5746['statusText']);return await _0x3e5746['json']();},async 'isAINameGenerationAvailable'(){try{const _0x5c4a21=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x5c4a21['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x5c4a21['json']();}catch(_0x486119){return{'available':![],'reason':_0x486119['message']};}},async 'generateTaskName'(_0x4e445e){try{const _0x4a708c=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x4e445e})});return await _0x4a708c['json']();}catch(_0x135a72){return{'success':![],'error':_0x135a72['message']};}},async 'createTask'(_0x5a411f){let _0x822d50,_0x17ff5c={};if(_0x5a411f['files']&&_0x5a411f['files']['length']>0x0){const _0x324ef0=new FormData();for(const [_0x3d4553,_0x477af7]of Object['entries'](_0x5a411f)){if(_0x3d4553!=='files'){if(_0x477af7==null)continue;typeof _0x477af7==='object'?_0x324ef0['append'](_0x3d4553,JSON['stringify'](_0x477af7)):_0x324ef0['append'](_0x3d4553,String(_0x477af7));}}for(const _0x344553 of _0x5a411f['files']){_0x324ef0['append']('attachments',_0x344553);}_0x822d50=_0x324ef0;}else _0x17ff5c['Content-Type']='application/json',_0x822d50=JSON['stringify'](_0x5a411f);const _0x2f7600=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x17ff5c,'body':_0x822d50});if(!_0x2f7600['ok']){const _0x3b7770=await _0x2f7600['json'](),_0x5c5a25=new Error(_0x3b7770['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2f7600['statusText']),{message:_0x3c6d5e,..._0x192f98}=_0x3b7770;Object['assign'](_0x5c5a25,_0x192f98);throw _0x5c5a25;}return await _0x2f7600['json']();},async 'createTestTask'(_0x1a5069){const _0x52847e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a5069)});if(!_0x52847e['ok']){const _0x4eade0=await _0x52847e['json']();throw new Error(_0x4eade0['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x52847e['statusText']);}return await _0x52847e['json']();},async 'createEphemeralTest'(_0x3f92f2){const _0xc67335=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f92f2)});if(!_0xc67335['ok']){const _0x61b045=await _0xc67335['json']();throw new Error(_0x61b045['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0xc67335['statusText']);}return await _0xc67335['json']();},async 'createDeployTask'(_0x351295){const _0x25b9ff=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x351295)});if(!_0x25b9ff['ok']){const _0x390dfd=await _0x25b9ff['json']();throw new Error(_0x390dfd['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x25b9ff['statusText']);}return await _0x25b9ff['json']();},async 'getEnvironments'(){const _0xb4c4e8=await fetch(API_BASE+'/environments');if(!_0xb4c4e8['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xb4c4e8['statusText']);return await _0xb4c4e8['json']();},async 'getEnvironment'(_0x3cc28e){const _0x20af52=await fetch(API_BASE+'/environments/'+_0x3cc28e);if(!_0x20af52['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x20af52['statusText']);return await _0x20af52['json']();},async 'getEnvironmentRepoHistory'(_0x3985fd,_0x4da5f0,_0x41ccf1={}){if(!_0x3985fd||!_0x4da5f0)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2ffa82=new URLSearchParams();if(_0x41ccf1['limit'])_0x2ffa82['set']('limit',String(_0x41ccf1['limit']));if(_0x41ccf1['offset'])_0x2ffa82['set']('offset',String(_0x41ccf1['offset']));if(_0x41ccf1['search'])_0x2ffa82['set']('search',String(_0x41ccf1['search']));if(_0x41ccf1['branch'])_0x2ffa82['set']('branch',String(_0x41ccf1['branch']));const _0x5a7f3f=API_BASE+'/environments/'+encodeURIComponent(_0x3985fd)+'/repos/'+encodeURIComponent(_0x4da5f0)+'/git/history',_0x229db6=await fetch(''+_0x5a7f3f+(_0x2ffa82['toString']()?'?'+_0x2ffa82['toString']():''));if(!_0x229db6['ok']){const _0x3a9f71=await _0x229db6['json']()['catch'](()=>({}));throw new Error(_0x3a9f71['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x229db6['statusText']);}return await _0x229db6['json']();},async 'getEnvironmentRepoCommit'(_0x451bef,_0x41e024,_0x112cbb){if(!_0x451bef||!_0x41e024||!_0x112cbb)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x161219=API_BASE+'/environments/'+encodeURIComponent(_0x451bef)+'/repos/'+encodeURIComponent(_0x41e024)+'/git/commits/'+encodeURIComponent(_0x112cbb),_0x425f42=await fetch(_0x161219);if(!_0x425f42['ok']){const _0x367791=await _0x425f42['json']()['catch'](()=>({}));throw new Error(_0x367791['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x425f42['statusText']);}return await _0x425f42['json']();},async 'getEnvironmentRepoBranches'(_0xe0cbf7,_0x1a24bd){if(!_0xe0cbf7||!_0x1a24bd)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2a999f=API_BASE+'/environments/'+encodeURIComponent(_0xe0cbf7)+'/repos/'+encodeURIComponent(_0x1a24bd)+'/git/branches',_0xe4409e=await fetch(_0x2a999f);if(!_0xe4409e['ok']){const _0x566444=await _0xe4409e['json']()['catch'](()=>({}));throw new Error(_0x566444['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xe4409e['statusText']);}return await _0xe4409e['json']();},async 'revertEnvironmentRepoCommit'(_0x255ead,_0x23d32b,_0x9d8a3c,_0x54ddb2={}){if(!_0x255ead||!_0x23d32b||!_0x9d8a3c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x597b93=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x255ead)+'/repos/'+encodeURIComponent(_0x23d32b)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x9d8a3c,..._0x54ddb2})});if(!_0x597b93['ok']){const _0x31a053=await _0x597b93['json']()['catch'](()=>({}));throw new Error(_0x31a053['message']||_0x31a053['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x597b93['statusText']);}return await _0x597b93['json']();},async 'getTemplates'(_0x5caee4={}){const _0x16a05b=new URLSearchParams();if(_0x5caee4['include']){const _0x4a241e=Array['isArray'](_0x5caee4['include'])?_0x5caee4['include']['join'](','):String(_0x5caee4['include']);if(_0x4a241e)_0x16a05b['set']('include',_0x4a241e);}const _0x3d7a44=await fetch(API_BASE+'/templates'+(_0x16a05b['toString']()?'?'+_0x16a05b['toString']():''));if(!_0x3d7a44['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3d7a44['statusText']);return await _0x3d7a44['json']();},async 'getTemplatesForEnvironment'(_0xc528e9,_0x35353a={}){if(!_0xc528e9)throw new Error('Environment\x20name\x20is\x20required');const _0x718a59=new URLSearchParams();if(_0x35353a['include']){const _0x2593c5=Array['isArray'](_0x35353a['include'])?_0x35353a['include']['join'](','):String(_0x35353a['include']);if(_0x2593c5)_0x718a59['set']('include',_0x2593c5);}const _0x4adac0=await fetch(API_BASE+'/templates/'+_0xc528e9+(_0x718a59['toString']()?'?'+_0x718a59['toString']():''));if(!_0x4adac0['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0xc528e9+':\x20'+_0x4adac0['statusText']);return await _0x4adac0['json']();},async 'getTemplate'(_0x598d43,_0x2e0d94,_0x1f4e92={}){if(!_0x598d43||!_0x2e0d94)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x212bcf=new URLSearchParams();if(_0x1f4e92['include']){const _0x559a1b=Array['isArray'](_0x1f4e92['include'])?_0x1f4e92['include']['join'](','):String(_0x1f4e92['include']);if(_0x559a1b)_0x212bcf['set']('include',_0x559a1b);}const _0x218e30=await fetch(API_BASE+'/templates/'+_0x598d43+'/'+_0x2e0d94+(_0x212bcf['toString']()?'?'+_0x212bcf['toString']():''));if(!_0x218e30['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x218e30['statusText']);return await _0x218e30['json']();},async 'getTaskLogs'(_0x4699da,_0xa9739c={}){if(!_0x4699da)throw new Error('Task\x20ID\x20is\x20required');const _0x3287ed=new URLSearchParams();_0xa9739c['tail']&&_0x3287ed['set']('tail',String(_0xa9739c['tail']));const _0x2239c3=await fetch(API_BASE+'/tasks/'+_0x4699da+'/logs'+(_0x3287ed['toString']()?'?'+_0x3287ed['toString']():''));if(!_0x2239c3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2239c3['statusText']);return await _0x2239c3['text']();},async 'getContainers'(){const _0x2ed2e4=await fetch(API_BASE+'/containers');if(!_0x2ed2e4['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2ed2e4['statusText']);return await _0x2ed2e4['json']();},async 'getContainer'(_0x3d3281){const _0x529cbe=await fetch(API_BASE+'/containers/'+_0x3d3281);if(!_0x529cbe['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x529cbe['statusText']);return await _0x529cbe['json']();},async 'startInteractiveContainer'(_0x2d1f5c){const _0x478aca=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d1f5c)});if(!_0x478aca['ok']){const _0x84aded=await _0x478aca['json']()['catch'](()=>({}));throw new Error(_0x84aded['message']||'Failed\x20to\x20start\x20container:\x20'+_0x478aca['statusText']);}return await _0x478aca['json']();},async 'stopContainer'(_0x1c7379){const _0x4dc06e=await fetch(API_BASE+'/containers/'+_0x1c7379,{'method':'DELETE'});if(!_0x4dc06e['ok']){const _0x315233=await _0x4dc06e['json']()['catch'](()=>({}));throw new Error(_0x315233['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4dc06e['statusText']);}return await _0x4dc06e['json']();},async 'stopTask'(_0x3e58f1){if(!_0x3e58f1)throw new Error('Task\x20ID\x20is\x20required');const _0x403311=await fetch(API_BASE+'/tasks/'+_0x3e58f1+'/stop',{'method':'POST'});if(!_0x403311['ok']){const _0x407205=await _0x403311['json']()['catch'](()=>({}));throw new Error(_0x407205['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x403311['statusText']);}return await _0x403311['json']();},async 'interruptTask'(_0x1d85d5){if(!_0x1d85d5)throw new Error('Task\x20ID\x20is\x20required');const _0x4861b5=await fetch(API_BASE+'/tasks/'+_0x1d85d5+'/interrupt',{'method':'POST'});if(!_0x4861b5['ok']){const _0x39ff50=await _0x4861b5['json']()['catch'](()=>({}));throw new Error(_0x39ff50['error']||_0x39ff50['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x4861b5['statusText']);}return await _0x4861b5['json']();},async 'startTask'(_0x23057f){if(!_0x23057f)throw new Error('Task\x20ID\x20is\x20required');const _0x290b07=await fetch(API_BASE+'/tasks/'+_0x23057f+'/start',{'method':'POST'});if(!_0x290b07['ok']){const _0x293c39=await _0x290b07['json']()['catch'](()=>({}));throw new Error(_0x293c39['error']||'Failed\x20to\x20start\x20task:\x20'+_0x290b07['statusText']);}return await _0x290b07['json']();},async 'deleteTask'(_0x57eb11){if(!_0x57eb11)throw new Error('Task\x20ID\x20is\x20required');const _0xe4f711=await fetch(API_BASE+'/tasks/'+_0x57eb11,{'method':'DELETE'});if(!_0xe4f711['ok']){const _0x2be710=await _0xe4f711['json']()['catch'](()=>({}));throw new Error(_0x2be710['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xe4f711['statusText']);}return await _0xe4f711['json']();},async 'refreshTasksFromDisk'(){const _0x3e961c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3e961c['ok']){const _0xb433f3=await _0x3e961c['json']()['catch'](()=>({}));throw new Error(_0xb433f3['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3e961c['statusText']);}return await _0x3e961c['json']();},async 'approveTask'(_0x2b7f93,_0x11ae6e={}){if(!_0x2b7f93)throw new Error('Task\x20ID\x20is\x20required');const _0x4f0fc3={'commit_message':_0x11ae6e['commit_message']||'','pull':_0x11ae6e['pull']??![],'push':_0x11ae6e['push']??![]};_0x11ae6e['new_branch']&&(_0x4f0fc3['new_branch']=_0x11ae6e['new_branch']);const _0x1b2227=await fetch(API_BASE+'/tasks/'+_0x2b7f93+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f0fc3)});if(!_0x1b2227['ok']){const _0x2aa5fd=await _0x1b2227['json']()['catch'](()=>({}));let _0x17c73f=_0x2aa5fd['error']||_0x2aa5fd['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1b2227['statusText'];if(_0x2aa5fd['results']&&Array['isArray'](_0x2aa5fd['results'])){const _0x710d2a=_0x2aa5fd['results']['filter'](_0xa67d26=>!_0xa67d26['success']&&_0xa67d26['error']);_0x710d2a['length']>0x0&&(_0x17c73f=_0x710d2a[0x0]['error']);}throw new Error(_0x17c73f);}return await _0x1b2227['json']();},async 'getPullRequestInfo'(_0x3da47c){if(!_0x3da47c)throw new Error('Task\x20ID\x20is\x20required');const _0x38f305=await fetch(API_BASE+'/tasks/'+_0x3da47c+'/pull-request-info');if(!_0x38f305['ok']){const _0x1639e7=await _0x38f305['json']()['catch'](()=>({}));throw new Error(_0x1639e7['error']||_0x1639e7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x38f305['statusText']);}return await _0x38f305['json']();},async 'createPullRequests'(_0x258f89,_0x429529){if(!_0x258f89)throw new Error('Task\x20ID\x20is\x20required');if(!_0x429529||!Array['isArray'](_0x429529))throw new Error('repos\x20array\x20is\x20required');const _0x428464=await fetch(API_BASE+'/tasks/'+_0x258f89+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x429529})});if(!_0x428464['ok']){const _0x2611bc=await _0x428464['json']()['catch'](()=>({}));let _0x39f4a1=_0x2611bc['error']||_0x2611bc['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x428464['statusText'];if(_0x2611bc['results']&&Array['isArray'](_0x2611bc['results'])){const _0xc562ca=_0x2611bc['results']['filter'](_0x4d15c6=>!_0x4d15c6['success']&&_0x4d15c6['error']);_0xc562ca['length']>0x0&&(_0x39f4a1=_0xc562ca[0x0]['error']);}throw new Error(_0x39f4a1);}return await _0x428464['json']();},async 'syncRepos'(_0x1c30ec){if(!_0x1c30ec)throw new Error('Task\x20ID\x20is\x20required');const _0x576734=await fetch(API_BASE+'/tasks/'+_0x1c30ec+'/sync-repos',{'method':'POST'});if(!_0x576734['ok']){const _0x1f7d64=await _0x576734['json']()['catch'](()=>({}));throw new Error(_0x1f7d64['error']||_0x1f7d64['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x576734['statusText']);}return await _0x576734['json']();},async 'getIbmiSyncInfo'(_0x22a24a){if(!_0x22a24a)throw new Error('Task\x20ID\x20is\x20required');const _0x22cf62=await fetch(API_BASE+'/tasks/'+_0x22a24a+'/ibmi-sync-info');if(!_0x22cf62['ok']){const _0x3ca861=await _0x22cf62['json']()['catch'](()=>({}));throw new Error(_0x3ca861['error']||_0x3ca861['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x22cf62['json']();},async 'getSyncFiles'(_0xd6487f){if(!_0xd6487f)throw new Error('Task\x20ID\x20is\x20required');const _0x5ffc73=await fetch(API_BASE+'/tasks/'+_0xd6487f+'/sync-to-ibmi/files');if(!_0x5ffc73['ok']){const _0xcfcd8c=await _0x5ffc73['json']()['catch'](()=>({}));throw new Error(_0xcfcd8c['error']||_0xcfcd8c['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5ffc73['json']();},async 'syncToIbmi'(_0x988772,_0x5f889e,_0x1be4db=null,_0x23293a=null,_0x14dc2e=null){if(!_0x988772)throw new Error('Task\x20ID\x20is\x20required');const _0x4bc0c9={'library':_0x5f889e};if(_0x1be4db)_0x4bc0c9['user']=_0x1be4db;if(_0x23293a)_0x4bc0c9['password']=_0x23293a;if(_0x14dc2e)_0x4bc0c9['files']=_0x14dc2e;const _0x52b87f=await fetch(API_BASE+'/tasks/'+_0x988772+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bc0c9)});if(!_0x52b87f['ok']){const _0x49ff76=await _0x52b87f['json']()['catch'](()=>({}));throw new Error(_0x49ff76['error']||_0x49ff76['message']||'Sync\x20failed');}return await _0x52b87f['json']();},async 'getIbmiSyncLog'(_0xb9fc59){if(!_0xb9fc59)throw new Error('Task\x20ID\x20is\x20required');const _0x569cdf=await fetch(API_BASE+'/tasks/'+_0xb9fc59+'/ibmi-sync-log');if(!_0x569cdf['ok']){const _0x1c3d64=await _0x569cdf['json']()['catch'](()=>({}));throw new Error(_0x1c3d64['error']||_0x1c3d64['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x569cdf['json']();},async 'pullChanges'(_0x32bfe1){if(!_0x32bfe1)throw new Error('Task\x20ID\x20is\x20required');const _0x1f0fd8=await fetch(API_BASE+'/tasks/'+_0x32bfe1+'/pull-changes',{'method':'POST'});if(!_0x1f0fd8['ok']){const _0x27588a=await _0x1f0fd8['json']()['catch'](()=>({}));throw new Error(_0x27588a['error']||_0x27588a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x1f0fd8['statusText']);}return await _0x1f0fd8['json']();},async 'readFile'(_0x5d3d82,_0xf724e4){if(!_0x5d3d82)throw new Error('Task\x20ID\x20is\x20required');if(!_0xf724e4)throw new Error('File\x20path\x20is\x20required');const _0x2d8e8e=await fetch(API_BASE+'/tasks/'+_0x5d3d82+'/files?path='+encodeURIComponent(_0xf724e4));if(!_0x2d8e8e['ok']){const _0x41ac1d=await _0x2d8e8e['json']()['catch'](()=>({}));throw new Error(_0x41ac1d['error']||_0x41ac1d['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2d8e8e['statusText']);}return await _0x2d8e8e['json']();},'getTaskFileDownloadUrl'(_0x3bb483,_0x1852a6){if(!_0x3bb483)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1852a6)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x3bb483+'/files/download?path='+encodeURIComponent(_0x1852a6);},async 'writeFile'(_0x1e285b,_0x4e8aa6,_0x22cb52){if(!_0x1e285b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4e8aa6)throw new Error('File\x20path\x20is\x20required');if(_0x22cb52===undefined)throw new Error('Content\x20is\x20required');const _0x4cc7ae=await fetch(API_BASE+'/tasks/'+_0x1e285b+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4e8aa6,'content':_0x22cb52})});if(!_0x4cc7ae['ok']){const _0x549006=await _0x4cc7ae['json']()['catch'](()=>({}));throw new Error(_0x549006['error']||_0x549006['message']||'Failed\x20to\x20write\x20file:\x20'+_0x4cc7ae['statusText']);}return await _0x4cc7ae['json']();},async 'uploadTaskFiles'(_0x114294,_0x48eeb5,_0x528713){if(!_0x114294)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48eeb5)throw new Error('Target\x20directory\x20is\x20required');if(!_0x528713||_0x528713['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x52d198=new FormData();_0x52d198['append']('targetDir',_0x48eeb5);for(const _0x1e9bbe of _0x528713){_0x52d198['append']('files',_0x1e9bbe,_0x1e9bbe['name']);}const _0x128072=await fetch(API_BASE+'/tasks/'+_0x114294+'/files/upload',{'method':'POST','body':_0x52d198});if(!_0x128072['ok']){const _0x4735e6=await _0x128072['json']()['catch'](()=>({}));throw new Error(_0x4735e6['error']||_0x4735e6['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x128072['statusText']);}return await _0x128072['json']();},async 'deleteFile'(_0x4db528,_0x559ccd){if(!_0x4db528)throw new Error('Task\x20ID\x20is\x20required');if(!_0x559ccd)throw new Error('File\x20path\x20is\x20required');const _0x476e73=await fetch(API_BASE+'/tasks/'+_0x4db528+'/files?path='+encodeURIComponent(_0x559ccd),{'method':'DELETE'});if(!_0x476e73['ok']){const _0x45370e=await _0x476e73['json']()['catch'](()=>({}));throw new Error(_0x45370e['error']||_0x45370e['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x476e73['statusText']);}return await _0x476e73['json']();},async 'discardFile'(_0x5e66de,_0x1b02a4,_0x270edf){if(!_0x5e66de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b02a4)throw new Error('File\x20path\x20is\x20required');if(!_0x270edf)throw new Error('Repository\x20path\x20is\x20required');const _0x3c868c=await fetch(API_BASE+'/tasks/'+_0x5e66de+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1b02a4,'repoPath':_0x270edf})});if(!_0x3c868c['ok']){const _0x508ee5=await _0x3c868c['json']()['catch'](()=>({}));throw new Error(_0x508ee5['error']||_0x508ee5['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3c868c['statusText']);}return await _0x3c868c['json']();},async 'followUpTask'(_0x4cfe7f,_0x2067d7={}){if(!_0x4cfe7f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2067d7['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x45870e,_0x3c09f2={};if(_0x2067d7['files']&&_0x2067d7['files']['length']>0x0){const _0x40fe01=new FormData();_0x40fe01['append']('instructions',_0x2067d7['instructions']);for(const _0xde4dd1 of _0x2067d7['files']){_0x40fe01['append']('attachments',_0xde4dd1);}_0x45870e=_0x40fe01;}else _0x3c09f2['Content-Type']='application/json',_0x45870e=JSON['stringify']({'instructions':_0x2067d7['instructions']});const _0x523dbb=await fetch(API_BASE+'/tasks/'+_0x4cfe7f+'/follow-up',{'method':'POST','headers':_0x3c09f2,'body':_0x45870e});if(!_0x523dbb['ok']){const _0x3e7a64=await _0x523dbb['json']()['catch'](()=>({}));throw new Error(_0x3e7a64['error']||_0x3e7a64['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x523dbb['statusText']);}return await _0x523dbb['json']();},async 'getTaskRewindPoints'(_0x263d39){if(!_0x263d39)throw new Error('Task\x20ID\x20is\x20required');const _0x3ed208=await fetch(API_BASE+'/tasks/'+_0x263d39+'/rewind-points');if(!_0x3ed208['ok']){const _0x48fef8=await _0x3ed208['json']()['catch'](()=>({}));throw new Error(_0x48fef8['error']||_0x48fef8['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x3ed208['statusText']);}return await _0x3ed208['json']();},async 'rewindTask'(_0x409d0c,_0x45dd31={}){if(!_0x409d0c)throw new Error('Task\x20ID\x20is\x20required');const _0x193e57=Number['isInteger'](_0x45dd31['targetFollowUpCount'])?_0x45dd31['targetFollowUpCount']:0x0,_0x2f9eae={'targetFollowUpCount':_0x193e57};typeof _0x45dd31['instructions']==='string'&&_0x45dd31['instructions']['trim']()&&(_0x2f9eae['instructions']=_0x45dd31['instructions']['trim']());typeof _0x45dd31['rewindFiles']==='boolean'&&(_0x2f9eae['rewindFiles']=_0x45dd31['rewindFiles']);const _0x4f9f3d=await fetch(API_BASE+'/tasks/'+_0x409d0c+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f9eae)});if(!_0x4f9f3d['ok']){const _0x56a4db=await _0x4f9f3d['json']()['catch'](()=>({}));throw new Error(_0x56a4db['error']||_0x56a4db['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x4f9f3d['statusText']);}return await _0x4f9f3d['json']();},async 'login'(_0x47164b,_0x1fdb3f){const _0x1b36a7=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x47164b,'password':_0x1fdb3f})});if(!_0x1b36a7['ok']){const _0x502417=await _0x1b36a7['json']();throw new Error(_0x502417['message']||'Login\x20failed');}return await _0x1b36a7['json']();},async 'logout'(){const _0xafeed2=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0xafeed2['ok']){const _0x2a287b=await _0xafeed2['json']();throw new Error(_0x2a287b['message']||'Logout\x20failed');}return await _0xafeed2['json']();},async 'getCurrentUser'(){const _0x28c93a=await fetch(API_BASE+'/auth/me');if(!_0x28c93a['ok'])throw new Error('Not\x20authenticated');const _0x11eb18=await _0x28c93a['json']();return _0x11eb18['user'];},async 'getRolesInfo'(){const _0x3ad0e7=await fetch(API_BASE+'/users/roles');if(!_0x3ad0e7['ok']){const _0x3ee58a=await _0x3ad0e7['json']();throw new Error(_0x3ee58a['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x3ad0e7['json']();},async 'getUsers'(){const _0x32c42f=await fetch(API_BASE+'/users');if(!_0x32c42f['ok']){const _0x7b104e=await _0x32c42f['json']();throw new Error(_0x7b104e['message']||'Failed\x20to\x20get\x20users');}return await _0x32c42f['json']();},async 'getUser'(_0xc1799f){const _0x8b2305=await fetch(API_BASE+'/users/'+_0xc1799f);if(!_0x8b2305['ok']){const _0x3c632d=await _0x8b2305['json']();throw new Error(_0x3c632d['message']||'Failed\x20to\x20get\x20user');}return await _0x8b2305['json']();},async 'createUser'(_0x257e2b){const _0x29064e=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x257e2b)});if(!_0x29064e['ok']){const _0x2d99d5=await _0x29064e['json']();throw new Error(_0x2d99d5['message']||'Failed\x20to\x20create\x20user');}return await _0x29064e['json']();},async 'updateUser'(_0x23ae54,_0x29e49b){const _0x33b06=await fetch(API_BASE+'/users/'+_0x23ae54,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29e49b)});if(!_0x33b06['ok']){const _0x561a8f=await _0x33b06['json']();throw new Error(_0x561a8f['message']||'Failed\x20to\x20update\x20user');}return await _0x33b06['json']();},async 'deleteUser'(_0x2e1714){const _0x5ac332=await fetch(API_BASE+'/users/'+_0x2e1714,{'method':'DELETE'});if(!_0x5ac332['ok']){const _0x3ecd95=await _0x5ac332['json']();throw new Error(_0x3ecd95['message']||'Failed\x20to\x20delete\x20user');}return await _0x5ac332['json']();},async 'stopAllContainers'(){const _0x14163f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x16a727=await _0x14163f['json']()['catch'](()=>({}));if(!_0x14163f['ok'])throw new Error(_0x16a727['message']||_0x16a727['error']||'Failed\x20to\x20stop\x20containers');return _0x16a727;},async 'removeStoppedContainers'(){const _0x5205dd=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bf738=await _0x5205dd['json']()['catch'](()=>({}));if(!_0x5205dd['ok'])throw new Error(_0x2bf738['message']||_0x2bf738['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bf738;},async 'pruneDockerResources'(){const _0x37cdd2=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x2a395b=await _0x37cdd2['json']()['catch'](()=>({}));if(!_0x37cdd2['ok'])throw new Error(_0x2a395b['message']||_0x2a395b['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x2a395b;},async 'createPasswordToken'(_0x19c799,_0x50ec2d='setup',_0x549bdc=![]){const _0x5390a8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x19c799,'type':_0x50ec2d,'sendEmail':_0x549bdc})});if(!_0x5390a8['ok']){const _0x10c112=await _0x5390a8['json']();throw new Error(_0x10c112['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5390a8['json']();},async 'getEmailConfig'(){const _0x228a12=await fetch(API_BASE+'/password/email-config');if(!_0x228a12['ok']){const _0x5708e1=await _0x228a12['json']();throw new Error(_0x5708e1['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x228a12['json']();},async 'updateTaskName'(_0x3357df,_0x20e80a){const _0x2a4d70=await fetch(API_BASE+'/tasks/'+_0x3357df,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x20e80a})});if(!_0x2a4d70['ok']){const _0x20760c=await _0x2a4d70['json']();throw new Error(_0x20760c['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2a4d70['json']();},async 'pinTask'(_0x18e7c9,_0x52bd03,_0x374c4a=null){if(!_0x18e7c9)throw new Error('Task\x20ID\x20is\x20required');const _0x1c7fd4={'pinned':_0x52bd03};_0x374c4a&&_0x374c4a['length']>0x0&&(_0x1c7fd4['additionalTaskIds']=_0x374c4a);const _0x2defe7=await fetch(API_BASE+'/tasks/'+_0x18e7c9+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c7fd4)});if(!_0x2defe7['ok']){const _0x573cd9=await _0x2defe7['json']();throw new Error(_0x573cd9['error']||'Failed\x20to\x20pin\x20task');}return await _0x2defe7['json']();},async 'setTaskWinner'(_0x50e37a,_0x13c258,_0x4bd746=[]){if(!_0x50e37a)throw new Error('Task\x20ID\x20is\x20required');const _0x2ee07b=await fetch(API_BASE+'/tasks/'+_0x50e37a+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x13c258,'siblings':_0x4bd746})});if(!_0x2ee07b['ok']){const _0x95a63c=await _0x2ee07b['json']();throw new Error(_0x95a63c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2ee07b['json']();},async 'setTaskLoser'(_0x3cb566,_0xb22c02){if(!_0x3cb566)throw new Error('Task\x20ID\x20is\x20required');const _0x4016ff=await fetch(API_BASE+'/tasks/'+_0x3cb566+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xb22c02})});if(!_0x4016ff['ok']){const _0x41773c=await _0x4016ff['json']();throw new Error(_0x41773c['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x4016ff['json']();},async 'createTaskGroup'(_0x513382){const _0x478e2a=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x513382)});if(!_0x478e2a['ok']){const _0x747db2=await _0x478e2a['json']();throw new Error(_0x747db2['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x478e2a['json']();},async 'getTaskGroups'(_0x348059={}){const _0x48aadc=new URLSearchParams();if(_0x348059['userId'])_0x48aadc['set']('userId',String(_0x348059['userId']));if(_0x348059['status'])_0x48aadc['set']('status',String(_0x348059['status']));if(_0x348059['limit'])_0x48aadc['set']('limit',String(_0x348059['limit']));const _0x58823f=API_BASE+'/tasks/groups'+(_0x48aadc['toString']()?'?'+_0x48aadc['toString']():''),_0x277e9d=await fetch(_0x58823f);if(!_0x277e9d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x277e9d['json']();},async 'getTaskGroup'(_0x129a28){const _0x191942=await fetch(API_BASE+'/tasks/groups/'+_0x129a28);if(!_0x191942['ok']){const _0x107485=await _0x191942['json']();throw new Error(_0x107485['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x191942['json']();},async 'updateTaskGroup'(_0x3a6133,_0x35cd9d,_0x3e0bd6){const _0x392fc6=await fetch(API_BASE+'/tasks/'+_0x3a6133+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x35cd9d,'groupIndex':_0x3e0bd6})});if(!_0x392fc6['ok']){const _0xbf9b83=await _0x392fc6['json']();throw new Error(_0xbf9b83['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x392fc6['json']();},async 'removeTaskFromGroup'(_0x54775a){return this['updateTaskGroup'](_0x54775a,null,null);},async 'deleteTaskGroup'(_0x1d069d,_0x5abb96=![]){const _0x4a091c=_0x5abb96?'?deleteTasks=true':'',_0x36b2b1=await fetch(API_BASE+'/tasks/groups/'+_0x1d069d+_0x4a091c,{'method':'DELETE'});if(!_0x36b2b1['ok']){const _0x4d51fc=await _0x36b2b1['json']();throw new Error(_0x4d51fc['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x52206f,_0x51a790){const _0x3b9f6a=await fetch(API_BASE+'/tasks/groups/'+_0x52206f+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x51a790})});if(!_0x3b9f6a['ok']){const _0xda0aca=await _0x3b9f6a['json']();throw new Error(_0xda0aca['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3b9f6a['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x54e2e5){if(!_0x54e2e5)throw new Error('Task\x20ID\x20is\x20required');const _0x489e9c=await fetch(API_BASE+'/tasks/'+_0x54e2e5+'/comments');if(!_0x489e9c['ok']){const _0x213b7f=await _0x489e9c['json']()['catch'](()=>({}));throw new Error(_0x213b7f['error']||'Failed\x20to\x20get\x20comments');}return await _0x489e9c['json']();},async 'addComment'(_0x43763d,_0x5e455e){if(!_0x43763d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5e455e)throw new Error('Comment\x20content\x20is\x20required');const _0xa65c27=await fetch(API_BASE+'/tasks/'+_0x43763d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5e455e})});if(!_0xa65c27['ok']){const _0x4c85ba=await _0xa65c27['json']()['catch'](()=>({}));throw new Error(_0x4c85ba['error']||'Failed\x20to\x20add\x20comment');}return await _0xa65c27['json']();},async 'updateComment'(_0x453e1,_0xd2577c,_0x28e867){if(!_0x453e1)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd2577c)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x28e867)throw new Error('Comment\x20content\x20is\x20required');const _0x3d08a8=await fetch(API_BASE+'/tasks/'+_0x453e1+'/comments/'+_0xd2577c,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x28e867})});if(!_0x3d08a8['ok']){const _0x58558f=await _0x3d08a8['json']()['catch'](()=>({}));throw new Error(_0x58558f['error']||'Failed\x20to\x20update\x20comment');}return await _0x3d08a8['json']();},async 'deleteComment'(_0x4df4ce,_0x1f84a4){if(!_0x4df4ce)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1f84a4)throw new Error('Comment\x20ID\x20is\x20required');const _0x555a01=await fetch(API_BASE+'/tasks/'+_0x4df4ce+'/comments/'+_0x1f84a4,{'method':'DELETE'});if(!_0x555a01['ok']){const _0x501499=await _0x555a01['json']()['catch'](()=>({}));throw new Error(_0x501499['error']||'Failed\x20to\x20delete\x20comment');}return await _0x555a01['json']();},async 'createObjective'(_0x3ab068){const _0x189cd2={'objective':!![],'name':_0x3ab068['name']||'','environment':_0x3ab068['environment']||null,'agents':_0x3ab068['agents']||[],'branches':_0x3ab068['branches']||{},'isPinned':_0x3ab068['isPinned']||![],'parentObjectiveId':_0x3ab068['parentObjectiveId']||null,'env_vars':_0x3ab068['envVars']||{},'parameters':{'instructions':_0x3ab068['instructions']||''},'files':_0x3ab068['files']||[],'jira':_0x3ab068['jira']||null};return this['createTask'](_0x189cd2);},async 'updateObjective'(_0x4217d4,_0x8490dc,_0x4d92ca=[],_0x25f963=[]){let _0x52efc2,_0x2e4e03={};const _0x1fbb48={..._0x8490dc};_0x25f963&&_0x25f963['length']>0x0&&(_0x1fbb48['removeAttachments']=_0x25f963);if(_0x4d92ca&&_0x4d92ca['length']>0x0){const _0x3318ed=new FormData();for(const [_0xf5dc50,_0x40fa02]of Object['entries'](_0x1fbb48)){if(_0x40fa02==null)continue;typeof _0x40fa02==='object'?_0x3318ed['append'](_0xf5dc50,JSON['stringify'](_0x40fa02)):_0x3318ed['append'](_0xf5dc50,String(_0x40fa02));}for(const _0x5cfadb of _0x4d92ca){_0x3318ed['append']('attachments',_0x5cfadb);}_0x52efc2=_0x3318ed;}else _0x2e4e03['Content-Type']='application/json',_0x52efc2=JSON['stringify'](_0x1fbb48);const _0x7958d7=await fetch(API_BASE+'/tasks/'+_0x4217d4,{'method':'PATCH','headers':_0x2e4e03,'body':_0x52efc2});if(!_0x7958d7['ok']){const _0x382abe=await _0x7958d7['json']();throw new Error(_0x382abe['error']||'Failed\x20to\x20update\x20objective');}return await _0x7958d7['json']();},async 'deleteObjective'(_0x216d92){return this['deleteTask'](_0x216d92);},async 'launchObjective'(_0x1d6967,_0x26b458={}){const _0x309255=await fetch(API_BASE+'/tasks/'+_0x1d6967+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26b458)});if(!_0x309255['ok']){const _0x1e50c1=await _0x309255['json']();throw new Error(_0x1e50c1['error']||'Failed\x20to\x20launch\x20objective');}return await _0x309255['json']();},async 'getObjectiveAttachments'(_0x3adcbb){return this['getTaskAttachments'](_0x3adcbb);},async 'createJudgeTask'({environment:_0x108d0e,judgeAgent:_0x4fab18,groupId:_0x1f8019,taskIds:_0x4cf49c,judgeCustomInstructions:_0x538e39,isPinned:_0x46f9cc}){const _0x382ecd=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x108d0e,'judgeAgent':_0x4fab18,'groupId':_0x1f8019,'taskIds':_0x4cf49c,'judgeCustomInstructions':_0x538e39,'isPinned':_0x46f9cc})});if(!_0x382ecd['ok']){const _0x144ea0=await _0x382ecd['json']();throw new Error(_0x144ea0['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x382ecd['json']();},async 'getJudgeTasks'(_0x4a145d){const _0x132c89=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x4a145d));if(!_0x132c89['ok']){const _0x4ace71=await _0x132c89['json']();throw new Error(_0x4ace71['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x132c89['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x2a226e,_0x564e0a,_0x4fef3=''){const _0x1f01a7=await fetch(API_BASE+'/tasks/'+_0x2a226e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x564e0a,'customPreamble':_0x4fef3})});if(!_0x1f01a7['ok']){const _0xa0c8cc=await _0x1f01a7['json']();throw new Error(_0xa0c8cc['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1f01a7['json']();},async 'getJiraConfig'(){const _0x4e285c=await fetch(API_BASE+'/jira/config');if(!_0x4e285c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4e285c['json']();},async 'getJiraIssue'(_0x3b493a){const _0x179e6f=await fetch(API_BASE+'/jira/issues/'+_0x3b493a);if(!_0x179e6f['ok']){const _0x3ff39e=await _0x179e6f['json']()['catch'](()=>({}));throw new Error(_0x3ff39e['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x179e6f['statusText']);}return await _0x179e6f['json']();},async 'searchJiraIssues'(_0x423248,_0x488052=0x14){const _0x25b4ea=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x423248,'maxResults':_0x488052})});if(!_0x25b4ea['ok']){const _0x314af8=await _0x25b4ea['json']()['catch'](()=>({}));throw new Error(_0x314af8['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x25b4ea['statusText']);}return await _0x25b4ea['json']();},async 'postJiraComment'(_0x29f2c9,_0x3bc22e){const _0x4764f0=await fetch(API_BASE+'/jira/issues/'+_0x29f2c9+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3bc22e})});if(!_0x4764f0['ok']){const _0x4c2757=await _0x4764f0['json']()['catch'](()=>({}));throw new Error(_0x4c2757['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4764f0['statusText']);}return await _0x4764f0['json']();},async 'getJiraComments'(_0x582392){const _0x1f9d51=await fetch(API_BASE+'/jira/issues/'+_0x582392+'/comments');if(!_0x1f9d51['ok']){const _0x590929=await _0x1f9d51['json']()['catch'](()=>({}));throw new Error(_0x590929['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f9d51['statusText']);}return await _0x1f9d51['json']();},async 'promptParameter'({environment:_0x3d8fa8,command:_0x2e7e4d,parser:parser='json'}){const _0x37f201=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3d8fa8,'command':_0x2e7e4d,'parser':parser})});if(!_0x37f201['ok']){const _0x1624c6=await _0x37f201['json']()['catch'](()=>({}));throw new Error(_0x1624c6['message']||_0x1624c6['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x37f201['statusText']);}return await _0x37f201['json']();},async 'promptParameterStream'(_0xb1905b,_0x33b90){const _0x55e68f=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb1905b)});if(!_0x55e68f['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x55e68f['statusText']);const _0x2ff7be=_0x55e68f['body']['getReader'](),_0x80d65=new TextDecoder();let _0x1d4e49='';return new Promise((_0xb4f896,_0x18ca82)=>{const _0x49440d=async()=>{try{const {done:_0x3b0972,value:_0x253294}=await _0x2ff7be['read']();if(_0x3b0972)return;_0x1d4e49+=_0x80d65['decode'](_0x253294,{'stream':!![]});const _0x3b3b5d=_0x1d4e49['split']('\x0a\x0a');_0x1d4e49=_0x3b3b5d['pop']()||'';for(const _0x5dfdf7 of _0x3b3b5d){if(!_0x5dfdf7['trim']())continue;const _0x163635=_0x5dfdf7['split']('\x0a');let _0x1864af='message',_0x468787='';for(const _0x4141a2 of _0x163635){if(_0x4141a2['startsWith']('event:'))_0x1864af=_0x4141a2['substring'](0x6)['trim']();else _0x4141a2['startsWith']('data:')&&(_0x468787=_0x4141a2['substring'](0x5)['trim']());}if(!_0x468787)continue;try{const _0x35f6bf=JSON['parse'](_0x468787);if(_0x1864af==='progress'&&_0x33b90)_0x33b90(_0x35f6bf['stage'],_0x35f6bf['message']);else{if(_0x1864af==='result'){_0xb4f896(_0x35f6bf);return;}else{if(_0x1864af==='error'){let _0x1e9a4e=_0x35f6bf['message']||_0x35f6bf['error']||'Prompt\x20command\x20failed';_0x35f6bf['rawOutput']&&(_0x1e9a4e+='\x0a\x0aRaw\x20output:\x0a'+_0x35f6bf['rawOutput']);_0x18ca82(new Error(_0x1e9a4e));return;}}}}catch(_0x30fe07){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x30fe07),console['error']('Event\x20type:',_0x1864af),console['error']('Event\x20data:',_0x468787),console['error']('First\x20200\x20chars:',_0x468787['substring'](0x0,0xc8)),_0x18ca82(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x30fe07['message']+'\x0a\x0aData:\x20'+_0x468787['substring'](0x0,0x1f4)));return;}}_0x49440d();}catch(_0x22827b){_0x18ca82(_0x22827b);}};_0x49440d();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5bd063){const _0x236f97=await fetch(''+API_BASE+_0x5bd063);if(!_0x236f97['ok']){const _0x5b0c48=await _0x236f97['json']()['catch'](()=>({'error':_0x236f97['statusText']})),_0x1a7f71=new Error(_0x5b0c48['error']||_0x5b0c48['message']||_0x236f97['statusText']);if(_0x5b0c48['detail']!==undefined)_0x1a7f71['detail']=_0x5b0c48['detail'];throw _0x1a7f71;}return await _0x236f97['json']();},async 'post'(_0x1db669,_0x3430d2){const _0x2ada6d=await fetch(''+API_BASE+_0x1db669,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3430d2)});if(!_0x2ada6d['ok']){const _0x3ed745=await _0x2ada6d['json']()['catch'](()=>({'error':_0x2ada6d['statusText']})),_0x474272=new Error(_0x3ed745['error']||_0x3ed745['message']||_0x2ada6d['statusText']);if(_0x3ed745['detail']!==undefined)_0x474272['detail']=_0x3ed745['detail'];throw _0x474272;}return await _0x2ada6d['json']();},async 'put'(_0x49d644,_0x255baf){const _0x55a275=await fetch(''+API_BASE+_0x49d644,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x255baf)});if(!_0x55a275['ok']){const _0x4e5f57=await _0x55a275['json']()['catch'](()=>({'error':_0x55a275['statusText']})),_0x185994=new Error(_0x4e5f57['error']||_0x4e5f57['message']||_0x55a275['statusText']);if(_0x4e5f57['detail']!==undefined)_0x185994['detail']=_0x4e5f57['detail'];throw _0x185994;}return await _0x55a275['json']();},async 'delete'(_0x44980e,_0x37975d){const _0x505dcd={'method':'DELETE'};_0x37975d&&(_0x505dcd['headers']={'Content-Type':'application/json'},_0x505dcd['body']=JSON['stringify'](_0x37975d));const _0x3e999f=await fetch(''+API_BASE+_0x44980e,_0x505dcd);if(!_0x3e999f['ok']){const _0x608dbc=await _0x3e999f['json']()['catch'](()=>({'error':_0x3e999f['statusText']})),_0x22a1c3=new Error(_0x608dbc['error']||_0x608dbc['message']||_0x3e999f['statusText']);if(_0x608dbc['detail']!==undefined)_0x22a1c3['detail']=_0x608dbc['detail'];throw _0x22a1c3;}return await _0x3e999f['json']();},async 'getSkills'(){const _0x505399=await fetch(API_BASE+'/skills');if(!_0x505399['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x505399['statusText']);return await _0x505399['json']();},async 'getSkill'(_0x12951d){const _0x1867f4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x12951d));if(!_0x1867f4['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1867f4['statusText']);return await _0x1867f4['json']();},async 'createSkill'(_0x234c80){const _0x5883a5=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x234c80)});if(!_0x5883a5['ok']){const _0x38a232=await _0x5883a5['json']()['catch'](()=>({'error':_0x5883a5['statusText']})),_0x99c5be=new Error(_0x38a232['error']||_0x38a232['message']||_0x5883a5['statusText']);if(_0x38a232['detail']!==undefined)_0x99c5be['detail']=_0x38a232['detail'];throw _0x99c5be;}return await _0x5883a5['json']();},async 'updateSkill'(_0x3da565,_0xc2876d){const _0x2525f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3da565),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc2876d)});if(!_0x2525f0['ok']){const _0x425fce=await _0x2525f0['json']()['catch'](()=>({'error':_0x2525f0['statusText']})),_0x42252d=new Error(_0x425fce['error']||_0x425fce['message']||_0x2525f0['statusText']);if(_0x425fce['detail']!==undefined)_0x42252d['detail']=_0x425fce['detail'];throw _0x42252d;}return await _0x2525f0['json']();},async 'deleteSkill'(_0x27f2ab){const _0x15820e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x27f2ab),{'method':'DELETE'});if(!_0x15820e['ok']){const _0x4c3237=await _0x15820e['json']()['catch'](()=>({'error':_0x15820e['statusText']})),_0x166acb=new Error(_0x4c3237['error']||_0x4c3237['message']||_0x15820e['statusText']);if(_0x4c3237['detail']!==undefined)_0x166acb['detail']=_0x4c3237['detail'];throw _0x166acb;}return await _0x15820e['json']();},async 'getSkillFile'(_0x3ebcc0,_0x250ca5){const _0x297d54=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3ebcc0)+'/files/'+_0x250ca5);if(!_0x297d54['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x297d54['statusText']);return await _0x297d54['json']();},async 'saveSkillFile'(_0x176708,_0x1110ad,_0x3180b2){const _0x4778b3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x176708)+'/files/'+_0x1110ad,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3180b2})});if(!_0x4778b3['ok']){const _0x29f5a2=await _0x4778b3['json']()['catch'](()=>({'error':_0x4778b3['statusText']})),_0x591fd9=new Error(_0x29f5a2['error']||_0x29f5a2['message']||_0x4778b3['statusText']);if(_0x29f5a2['detail']!==undefined)_0x591fd9['detail']=_0x29f5a2['detail'];throw _0x591fd9;}return await _0x4778b3['json']();},async 'deleteSkillFile'(_0x329790,_0x20c81d){const _0x444a16=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x329790)+'/files/'+_0x20c81d,{'method':'DELETE'});if(!_0x444a16['ok']){const _0x7187a4=await _0x444a16['json']()['catch'](()=>({'error':_0x444a16['statusText']})),_0x18cd8d=new Error(_0x7187a4['error']||_0x7187a4['message']||_0x444a16['statusText']);if(_0x7187a4['detail']!==undefined)_0x18cd8d['detail']=_0x7187a4['detail'];throw _0x18cd8d;}return await _0x444a16['json']();},async 'pullSkills'(){const _0x1a0bcb=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x1a0bcb['ok']){const _0x6dccd9=await _0x1a0bcb['json']()['catch'](()=>({'error':_0x1a0bcb['statusText']})),_0x5cd070=new Error(_0x6dccd9['error']||_0x6dccd9['message']||_0x1a0bcb['statusText']);if(_0x6dccd9['detail']!==undefined)_0x5cd070['detail']=_0x6dccd9['detail'];throw _0x5cd070;}return await _0x1a0bcb['json']();},async 'commitSkills'(_0x5ebf17,_0x36226d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x36226d,_0xcd2eed=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5ebf17,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0xcd2eed['ok']){const _0x5d2aa2=await _0xcd2eed['json']()['catch'](()=>({'error':_0xcd2eed['statusText']})),_0x488c80=new Error(_0x5d2aa2['error']||_0x5d2aa2['message']||_0xcd2eed['statusText']);if(_0x5d2aa2['detail']!==undefined)_0x488c80['detail']=_0x5d2aa2['detail'];throw _0x488c80;}return await _0xcd2eed['json']();},async 'discardSkillsChanges'(){const _0x450e55=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x450e55['ok']){const _0x42c100=await _0x450e55['json']()['catch'](()=>({'error':_0x450e55['statusText']})),_0x3dec0b=new Error(_0x42c100['error']||_0x42c100['message']||_0x450e55['statusText']);if(_0x42c100['detail']!==undefined)_0x3dec0b['detail']=_0x42c100['detail'];throw _0x3dec0b;}return await _0x450e55['json']();},async 'getSkillCatalog'(){const _0x76844c=await fetch(API_BASE+'/external-skills/catalog');if(!_0x76844c['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x76844c['statusText']);return await _0x76844c['json']();},async 'getImportedSkillsRegistry'(){const _0x3bb006=await fetch(API_BASE+'/external-skills/registry');if(!_0x3bb006['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3bb006['statusText']);return await _0x3bb006['json']();},async 'importCatalogSkill'(_0x375190){const _0x60d5bb=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x375190})});if(!_0x60d5bb['ok']){const _0x1abd76=await _0x60d5bb['json']()['catch'](()=>({'error':_0x60d5bb['statusText']})),_0x1b0419=new Error(_0x1abd76['error']||_0x1abd76['message']||_0x60d5bb['statusText']);if(_0x1abd76['detail']!==undefined)_0x1b0419['detail']=_0x1abd76['detail'];throw _0x1b0419;}return await _0x60d5bb['json']();},async 'importSkillFromGit'(_0x190a8a,_0x2919bf,_0x2af31f='main',_0x2da099=null){const _0x2b7792=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x190a8a,'skillPath':_0x2919bf,'branch':_0x2af31f,'skillId':_0x2da099})});if(!_0x2b7792['ok']){const _0x3bae0e=await _0x2b7792['json']()['catch'](()=>({'error':_0x2b7792['statusText']})),_0xaf6a98=new Error(_0x3bae0e['error']||_0x3bae0e['message']||_0x2b7792['statusText']);if(_0x3bae0e['detail']!==undefined)_0xaf6a98['detail']=_0x3bae0e['detail'];throw _0xaf6a98;}return await _0x2b7792['json']();},async 'probeMarketplace'(_0x28beeb,_0x59d750='main'){const _0x2288f7=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x28beeb,'branch':_0x59d750})});if(!_0x2288f7['ok']){const _0x44dce4=await _0x2288f7['json']()['catch'](()=>({'error':_0x2288f7['statusText']})),_0x27985c=new Error(_0x44dce4['error']||_0x44dce4['message']||_0x2288f7['statusText']);if(_0x44dce4['detail']!==undefined)_0x27985c['detail']=_0x44dce4['detail'];throw _0x27985c;}return await _0x2288f7['json']();},async 'importMarketplaceBundle'(_0x1b5fd5,_0x4f25b0,_0x46f256,_0x2da15b=null){const _0x524adb=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1b5fd5,'branch':_0x4f25b0,'bundleId':_0x46f256,'selectedSkills':_0x2da15b})});if(!_0x524adb['ok']){const _0x163439=await _0x524adb['json']()['catch'](()=>({'error':_0x524adb['statusText']})),_0x494461=new Error(_0x163439['error']||_0x163439['message']||_0x524adb['statusText']);if(_0x163439['detail']!==undefined)_0x494461['detail']=_0x163439['detail'];throw _0x494461;}return await _0x524adb['json']();},async 'importSkillFromFolder'(_0x5c5901,_0x189550=null){const _0x1a2dc0=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x5c5901,'skillId':_0x189550})});if(!_0x1a2dc0['ok']){const _0x562189=await _0x1a2dc0['json']()['catch'](()=>({'error':_0x1a2dc0['statusText']})),_0x36f4c8=new Error(_0x562189['error']||_0x562189['message']||_0x1a2dc0['statusText']);if(_0x562189['detail']!==undefined)_0x36f4c8['detail']=_0x562189['detail'];throw _0x36f4c8;}return await _0x1a2dc0['json']();},async 'importSkillFromNpm'(_0x407ef4,_0x167ecf='latest',_0x970b32=null,_0x25246c=null){const _0x268e70=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x407ef4,'version':_0x167ecf,'skillId':_0x970b32,'registry':_0x25246c})});if(!_0x268e70['ok']){const _0x295c8b=await _0x268e70['json']()['catch'](()=>({'error':_0x268e70['statusText']})),_0x127512=new Error(_0x295c8b['error']||_0x295c8b['message']||_0x268e70['statusText']);if(_0x295c8b['detail']!==undefined)_0x127512['detail']=_0x295c8b['detail'];throw _0x127512;}return await _0x268e70['json']();},async 'checkSkillUpdates'(_0x21cca5){const _0x36ec29=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x21cca5)+'/check-updates',{'method':'POST'});if(!_0x36ec29['ok']){const _0x35e5f2=await _0x36ec29['json']()['catch'](()=>({'error':_0x36ec29['statusText']})),_0x16a007=new Error(_0x35e5f2['error']||_0x35e5f2['message']||_0x36ec29['statusText']);if(_0x35e5f2['detail']!==undefined)_0x16a007['detail']=_0x35e5f2['detail'];throw _0x16a007;}return await _0x36ec29['json']();},async 'updateExternalSkill'(_0x40d700){const _0x3663e7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x40d700)+'/update',{'method':'POST'});if(!_0x3663e7['ok']){const _0x2832d6=await _0x3663e7['json']()['catch'](()=>({'error':_0x3663e7['statusText']})),_0x4eeb36=new Error(_0x2832d6['error']||_0x2832d6['message']||_0x3663e7['statusText']);if(_0x2832d6['detail']!==undefined)_0x4eeb36['detail']=_0x2832d6['detail'];throw _0x4eeb36;}return await _0x3663e7['json']();},async 'updateSkillFlags'(_0x4f99fd,_0x291450){const _0x4e57f6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4f99fd)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x291450})});if(!_0x4e57f6['ok']){const _0x5efcd0=await _0x4e57f6['json']()['catch'](()=>({'error':_0x4e57f6['statusText']})),_0x4ef618=new Error(_0x5efcd0['error']||_0x5efcd0['message']||_0x4e57f6['statusText']);if(_0x5efcd0['detail']!==undefined)_0x4ef618['detail']=_0x5efcd0['detail'];throw _0x4ef618;}return await _0x4e57f6['json']();},async 'removeFromImportedRegistry'(_0x1fe7fe){const _0x56d589=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1fe7fe)+'/registry',{'method':'DELETE'});if(!_0x56d589['ok']){const _0x291681=await _0x56d589['json']()['catch'](()=>({'error':_0x56d589['statusText']})),_0x43aaaa=new Error(_0x291681['error']||_0x291681['message']||_0x56d589['statusText']);if(_0x291681['detail']!==undefined)_0x43aaaa['detail']=_0x291681['detail'];throw _0x43aaaa;}return await _0x56d589['json']();},async 'getTeams'(){const _0x4fae50=await fetch(API_BASE+'/teams');if(!_0x4fae50['ok']){const _0x4c9fe9=await _0x4fae50['json']()['catch'](()=>({'message':_0x4fae50['statusText']}));throw new Error(_0x4c9fe9['message']||'Failed\x20to\x20get\x20teams');}return await _0x4fae50['json']();},async 'getTeam'(_0x165b38){const _0x3bfde3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x165b38));if(!_0x3bfde3['ok']){const _0x2ab6d3=await _0x3bfde3['json']()['catch'](()=>({'message':_0x3bfde3['statusText']}));throw new Error(_0x2ab6d3['message']||'Failed\x20to\x20get\x20team');}return await _0x3bfde3['json']();},async 'createTeam'(_0x4dfac6){const _0xa9485a=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dfac6)});if(!_0xa9485a['ok']){const _0x502eeb=await _0xa9485a['json']()['catch'](()=>({'message':_0xa9485a['statusText']}));throw new Error(_0x502eeb['message']||'Failed\x20to\x20create\x20team');}return await _0xa9485a['json']();},async 'updateTeam'(_0x31c89b,_0x39ba42){const _0x94a367=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x31c89b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39ba42)});if(!_0x94a367['ok']){const _0xc7232a=await _0x94a367['json']()['catch'](()=>({'message':_0x94a367['statusText']}));throw new Error(_0xc7232a['message']||'Failed\x20to\x20update\x20team');}return await _0x94a367['json']();},async 'deleteTeam'(_0x279e4e){const _0x8664c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x279e4e),{'method':'DELETE'});if(!_0x8664c['ok']){const _0x1de73=await _0x8664c['json']()['catch'](()=>({'message':_0x8664c['statusText']}));throw new Error(_0x1de73['message']||'Failed\x20to\x20delete\x20team');}return await _0x8664c['json']();},async 'addTeamMember'(_0x1c3242,_0x69851c){const _0x7c2563=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1c3242)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x69851c})});if(!_0x7c2563['ok']){const _0x3a7c1b=await _0x7c2563['json']()['catch'](()=>({'message':_0x7c2563['statusText']}));throw new Error(_0x3a7c1b['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x7c2563['json']();},async 'removeTeamMember'(_0xe83c61,_0x16dbe0){const _0xd465d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xe83c61)+'/members/'+encodeURIComponent(_0x16dbe0),{'method':'DELETE'});if(!_0xd465d1['ok']){const _0x3a3e9b=await _0xd465d1['json']()['catch'](()=>({'message':_0xd465d1['statusText']}));throw new Error(_0x3a3e9b['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xd465d1['json']();},async 'getBindings'(_0x2444b9={}){const _0x248343=new URLSearchParams();if(_0x2444b9['resource_type'])_0x248343['set']('resource_type',_0x2444b9['resource_type']);if(_0x2444b9['resource_id'])_0x248343['set']('resource_id',_0x2444b9['resource_id']);if(_0x2444b9['subject_type'])_0x248343['set']('subject_type',_0x2444b9['subject_type']);if(_0x2444b9['subject_id'])_0x248343['set']('subject_id',_0x2444b9['subject_id']);const _0x137101=_0x248343['toString'](),_0x50833a=await fetch(API_BASE+'/bindings'+(_0x137101?'?'+_0x137101:''));if(!_0x50833a['ok']){const _0xb58eed=await _0x50833a['json']()['catch'](()=>({'message':_0x50833a['statusText']}));throw new Error(_0xb58eed['message']||'Failed\x20to\x20get\x20bindings');}return await _0x50833a['json']();},async 'createBinding'(_0x2f6d0b){const _0x40fb18=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f6d0b)});if(!_0x40fb18['ok']){const _0x509928=await _0x40fb18['json']()['catch'](()=>({'message':_0x40fb18['statusText']}));throw new Error(_0x509928['message']||'Failed\x20to\x20create\x20binding');}return await _0x40fb18['json']();},async 'updateBinding'(_0xa4cde9,_0x49ad57){const _0x418974=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xa4cde9),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x49ad57)});if(!_0x418974['ok']){const _0x5a9b67=await _0x418974['json']()['catch'](()=>({'message':_0x418974['statusText']}));throw new Error(_0x5a9b67['message']||'Failed\x20to\x20update\x20binding');}return await _0x418974['json']();},async 'deleteBinding'(_0x4ffd6d){const _0x23fb4c=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4ffd6d),{'method':'DELETE'});if(!_0x23fb4c['ok']){const _0x824f=await _0x23fb4c['json']()['catch'](()=>({'message':_0x23fb4c['statusText']}));throw new Error(_0x824f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x23fb4c['json']();},async 'getRoleDefinitions'(){const _0x5a34d0=await fetch(API_BASE+'/roles');if(!_0x5a34d0['ok']){const _0x5c249c=await _0x5a34d0['json']()['catch'](()=>({'message':_0x5a34d0['statusText']}));throw new Error(_0x5c249c['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x5a34d0['json']();},async 'getRoleDefinition'(_0x31aca3){const _0x5d14ed=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31aca3));if(!_0x5d14ed['ok']){const _0x168362=await _0x5d14ed['json']()['catch'](()=>({'message':_0x5d14ed['statusText']}));throw new Error(_0x168362['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x5d14ed['json']();},async 'createRoleDefinition'(_0x22f5dd){const _0x2ee1a0=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22f5dd)});if(!_0x2ee1a0['ok']){const _0x2249ed=await _0x2ee1a0['json']()['catch'](()=>({'message':_0x2ee1a0['statusText']}));throw new Error(_0x2249ed['message']||_0x2249ed['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2ee1a0['json']();},async 'updateRoleDefinition'(_0x5adb76,_0x3459ae){const _0x10fb16=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5adb76),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3459ae)});if(!_0x10fb16['ok']){const _0x58f317=await _0x10fb16['json']()['catch'](()=>({'message':_0x10fb16['statusText']}));throw new Error(_0x58f317['message']||_0x58f317['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x10fb16['json']();},async 'deleteRoleDefinition'(_0x115874){const _0x3d6bbd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x115874),{'method':'DELETE'});if(!_0x3d6bbd['ok']){const _0x4c3190=await _0x3d6bbd['json']()['catch'](()=>({'message':_0x3d6bbd['statusText']}));throw new Error(_0x4c3190['message']||_0x4c3190['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x3d6bbd['json']();},async 'getAvailablePermissions'(){const _0xdbf1d6=await fetch(API_BASE+'/roles/available-permissions');if(!_0xdbf1d6['ok']){const _0x2eebd1=await _0xdbf1d6['json']()['catch'](()=>({'message':_0xdbf1d6['statusText']}));throw new Error(_0x2eebd1['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xdbf1d6['json']();},async 'getGitProviderAllowedTeams'(_0x4e5abd){const _0x3f2dca=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4e5abd)+'/allowed-teams');if(!_0x3f2dca['ok']){const _0x562ad9=await _0x3f2dca['json']()['catch'](()=>({'message':_0x3f2dca['statusText']}));throw new Error(_0x562ad9['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3f2dca['json']();},async 'setGitProviderAllowedTeams'(_0x58dc34,_0x30f03a){const _0x200e64=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x58dc34)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x30f03a})});if(!_0x200e64['ok']){const _0x507d32=await _0x200e64['json']()['catch'](()=>({'message':_0x200e64['statusText']}));throw new Error(_0x507d32['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x200e64['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 _0x3307c0=toastState['baseBottom'];toastState['toasts']['forEach'](_0x447151=>{_0x447151['el']['style']['bottom']=_0x3307c0+'px';const _0x32d995=_0x447151['el']['offsetHeight']||toastState['defaultHeight'];_0x3307c0+=_0x32d995+toastState['gap'];});});}function removeToastById(_0x5f3048){const _0x55eeaf=toastState['toasts']['findIndex'](_0x1862c8=>_0x1862c8['id']===_0x5f3048);if(_0x55eeaf===-0x1)return;const _0x5c415f=toastState['toasts'][_0x55eeaf];if(_0x5c415f['timeoutId'])clearTimeout(_0x5c415f['timeoutId']);_0x5c415f['el']['classList']['remove']('show'),setTimeout(()=>_0x5c415f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x55eeaf,0x1),repositionAllToasts();}function registerToast(_0x40fc0c){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x40fc0c),repositionAllToasts(),_0x40fc0c['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(_0x20a126){if(_0x20a126===null||_0x20a126===undefined)return'';return String(_0x20a126)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0x536407,_0x3b7480){if(_0x536407&&typeof _0x536407==='object'&&!Array['isArray'](_0x536407))return{'code':typeof _0x536407['text']==='string'?_0x536407['text']:'','language':typeof _0x536407['lang']==='string'?_0x536407['lang']:''};return{'code':typeof _0x536407==='string'?_0x536407:'','language':typeof _0x3b7480==='string'?_0x3b7480:''};}function buildMermaidBlock(_0x4ea6bf){const _0x4e0b0f=String(_0x4ea6bf||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4e0b0f))+'\x22>'+escapeHtmlValue(_0x4e0b0f)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x182b1e=new marked['Renderer'](),_0x4f295f=_0x182b1e['code']['bind'](_0x182b1e);return _0x182b1e['code']=function(_0x1b0c14,_0x1a202d,..._0x406a22){const {code:_0x3e0ac1,language:_0x52938a}=getMarkdownCodeBlockPayload(_0x1b0c14,_0x1a202d),_0x1e9bc9=String(_0x52938a||'')['trim']()['toLowerCase']();if(_0x1e9bc9==='mermaid')return buildMermaidBlock(_0x3e0ac1);const _0x4c71a3=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x4c71a3&&_0x1e9bc9)try{const _0x5c5f55=_0x4c71a3['getLanguage'](_0x1e9bc9)?_0x1e9bc9:'plaintext',_0x2dd074=_0x4c71a3['highlight'](_0x3e0ac1,{'language':_0x5c5f55})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1e9bc9)+'\x22>'+_0x2dd074+'</code></pre>';}catch(_0x39e55b){console['error']('Syntax\x20highlighting\x20error:',_0x39e55b);}return _0x4f295f(_0x1b0c14,_0x1a202d,..._0x406a22);},sharedMarkedRenderer=_0x182b1e,_0x182b1e;}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 _0x1f3ef9=window['mermaid'];if(!_0x1f3ef9||typeof _0x1f3ef9['initialize']!=='function')return _0x1f3ef9||null;return _0x1f3ef9['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1f3ef9;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2d381d,_0x54e82e)=>{const _0x4df2d5=()=>_0x2d381d(configureMermaidInstance()),_0x1a2824=()=>{mermaidLoadPromise=null,_0x54e82e(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0xe2ba29=document['getElementById'](MERMAID_SCRIPT_ID);!_0xe2ba29&&(_0xe2ba29=document['createElement']('script'),_0xe2ba29['id']=MERMAID_SCRIPT_ID,_0xe2ba29['src']=MERMAID_SCRIPT_SRC,_0xe2ba29['async']=!![],document['head']['appendChild'](_0xe2ba29));if(window['mermaid']){_0x4df2d5();return;}_0xe2ba29['addEventListener']('load',_0x4df2d5,{'once':!![]}),_0xe2ba29['addEventListener']('error',_0x1a2824,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x14f82d){const _0x2cd517=_0x14f82d['getAttribute']('data-mermaid-source');if(!_0x2cd517)return null;let _0x5953dd=_0x2cd517;try{_0x5953dd=decodeURIComponent(_0x2cd517);}catch{}return _0x14f82d['textContent']=_0x5953dd,_0x14f82d['removeAttribute']('data-processed'),_0x14f82d['removeAttribute']('aria-roledescription'),_0x14f82d['removeAttribute']('role'),_0x14f82d['removeAttribute']('aria-label'),_0x5953dd;}function collectMermaidNodes(_0x3afd22,_0x506205){if(!(_0x3afd22 instanceof Element))return;_0x3afd22['matches']('.mermaid[data-mermaid-source]')&&_0x506205['add'](_0x3afd22),_0x3afd22['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3a8011=>{_0x506205['add'](_0x3a8011);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x14119c=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x198554=>setTimeout(_0x198554,0x0);_0x14119c(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x37431b=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x37431b);});});}function queueMermaidRender(_0x37465d){const _0x4ad636=new Set();_0x37465d instanceof Document||_0x37465d instanceof DocumentFragment?_0x37465d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x480212=>_0x4ad636['add'](_0x480212)):collectMermaidNodes(_0x37465d,_0x4ad636);if(_0x4ad636['size']===0x0)return;_0x4ad636['forEach'](_0x3b1c99=>pendingMermaidNodes['add'](_0x3b1c99)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xa53688=Array['from'](pendingMermaidNodes)['filter'](_0x255e4a=>_0x255e4a['isConnected']);pendingMermaidNodes['clear']();if(_0xa53688['length']===0x0)return;const _0x1e53e3=await loadMermaid();if(!_0x1e53e3)return;configureMermaidInstance();const _0x4d426c=getMermaidTheme();for(const _0x59ef9e of _0xa53688){const _0x231787=_0x59ef9e['getAttribute']('data-mermaid-source');if(!_0x231787)continue;const _0x572088=_0x59ef9e['getAttribute']('data-processed')==='true';if(_0x572088&&_0x59ef9e['dataset']['mermaidTheme']===_0x4d426c)continue;restoreMermaidSource(_0x59ef9e);try{if(typeof _0x1e53e3['run']==='function')await _0x1e53e3['run']({'nodes':[_0x59ef9e]});else typeof _0x1e53e3['init']==='function'&&_0x1e53e3['init'](undefined,[_0x59ef9e]);_0x59ef9e['dataset']['mermaidTheme']=_0x4d426c,delete _0x59ef9e['dataset']['mermaidError'];}catch(_0x3a7485){console['error']('Mermaid\x20render\x20failed:',_0x3a7485),restoreMermaidSource(_0x59ef9e),_0x59ef9e['dataset']['mermaidError']='true',delete _0x59ef9e['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x97308=>{_0x97308['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x97308);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x5b3ca0=>{_0x5b3ca0['forEach'](_0x458441=>{_0x458441['addedNodes']['forEach'](_0x5b0c92=>{_0x5b0c92['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x5b0c92);});});}),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'(_0x138b82){const _0x8cedfc=new Date(_0x138b82),_0xd82a86=new Date(),_0x45bdbe=_0xd82a86-_0x8cedfc,_0x5e0d77=Math['floor'](_0x45bdbe/0x3e8),_0xd03d54=Math['floor'](_0x5e0d77/0x3c),_0xb7fdf8=Math['floor'](_0xd03d54/0x3c),_0x36a856=Math['floor'](_0xb7fdf8/0x18);if(_0x5e0d77<0x3c)return'now';if(_0xd03d54<0x3c)return _0xd03d54+'m\x20ago';if(_0xb7fdf8<0x18)return _0xb7fdf8+'h\x20ago';return _0x36a856+'d\x20ago';},'getStatusIcon'(_0x4a8f51){switch(_0x4a8f51){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x38da31){switch(_0x38da31){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'(_0x210d73,_0x3b6f2c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x44c29b={};_0x44c29b['text/plain']=new Blob([_0x210d73],{'type':'text/plain'});_0x3b6f2c&&(_0x44c29b['text/html']=new Blob([_0x3b6f2c],{'type':'text/html'}));const _0xd30f31=new ClipboardItem(_0x44c29b);return await navigator['clipboard']['write']([_0xd30f31]),!![];}catch(_0x174390){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x174390);}try{const _0x1696af=_0x2d973a=>{_0x2d973a['preventDefault'](),_0x2d973a['clipboardData']['setData']('text/plain',_0x210d73),_0x3b6f2c&&_0x2d973a['clipboardData']['setData']('text/html',_0x3b6f2c);};document['addEventListener']('copy',_0x1696af);const _0x50be4b=document['execCommand']('copy');document['removeEventListener']('copy',_0x1696af);if(_0x50be4b)return!![];}catch(_0x175005){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x175005);}try{const _0x4dc4d1=document['createElement']('textarea');_0x4dc4d1['value']=_0x210d73,_0x4dc4d1['style']['position']='fixed',_0x4dc4d1['style']['opacity']='0',_0x4dc4d1['style']['pointerEvents']='none',document['body']['appendChild'](_0x4dc4d1),_0x4dc4d1['select']();const _0x32a5ff=document['execCommand']('copy');return document['body']['removeChild'](_0x4dc4d1),_0x32a5ff;}catch(_0x55c1dd){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x55c1dd),![];}},'showToast'(_0x5a113e,_0x4068d3='info'){const _0x1d88a7=getNextToastId(),_0xed22c3=document['createElement']('div');_0xed22c3['className']='toast\x20toast-'+_0x4068d3,_0xed22c3['textContent']=_0x5a113e,_0xed22c3['dataset']['toastId']=_0x1d88a7,document['body']['appendChild'](_0xed22c3);const _0x28259c=_0x4068d3==='error'?0x2710:0xbb8,_0xda34c2=setTimeout(()=>{removeToastById(_0x1d88a7);},_0x28259c),_0x46e9b1={'id':_0x1d88a7,'el':_0xed22c3,'timeoutId':_0xda34c2};return registerToast(_0x46e9b1),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0xed22c3['classList']['add']('show');});}),_0x1d88a7;},'showError'(_0x59eb54){console['error'](_0x59eb54);const _0x1d2d34=typeof _0x59eb54==='string'?_0x59eb54:_0x59eb54['message']||'An\x20error\x20occurred';this['showToast'](_0x1d2d34,'error');},'showSuccess'(_0x5f1f4d){this['showToast'](_0x5f1f4d,'success');},'capitalize'(_0xaec8f1){if(!_0xaec8f1)return'';return _0xaec8f1['charAt'](0x0)['toUpperCase']()+_0xaec8f1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x54b85a){return escapeHtmlValue(_0x54b85a);},'ansiToHtml'(_0x35848e){if(_0x35848e===null||_0x35848e===undefined)return'';let _0x498c61=this['escapeHtml'](_0x35848e);const _0x44606b={'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'},_0x2c3299={'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 _0x5073a3=0x0;return _0x498c61=_0x498c61['replace'](/\x1b\[([0-9;]*)m/g,(_0x306611,_0x4734dc)=>{if(!_0x4734dc||_0x4734dc==='0'){const _0x32e20b='</span>'['repeat'](_0x5073a3);return _0x5073a3=0x0,_0x32e20b;}const _0x1af24e=_0x4734dc['split'](';'),_0x564c72=[];for(const _0x4ccb29 of _0x1af24e){if(_0x4ccb29==='1')_0x564c72['push']('font-weight:bold');else{if(_0x4ccb29==='2')_0x564c72['push']('opacity:0.7');else{if(_0x4ccb29==='3')_0x564c72['push']('font-style:italic');else{if(_0x4ccb29==='4')_0x564c72['push']('text-decoration:underline');else{if(_0x4ccb29==='9')_0x564c72['push']('text-decoration:line-through');else{if(_0x44606b[_0x4ccb29])_0x564c72['push']('color:'+_0x44606b[_0x4ccb29]);else{if(_0x2c3299[_0x4ccb29])_0x564c72['push']('background-color:'+_0x2c3299[_0x4ccb29]);}}}}}}}if(_0x564c72['length']>0x0)return _0x5073a3++,'<span\x20style=\x22'+_0x564c72['join'](';')+'\x22>';return'';}),_0x498c61+='</span>'['repeat'](_0x5073a3),_0x498c61=_0x498c61['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4177f9,_0x1d98f0)=>{if(!_0x1d98f0||_0x1d98f0==='0')return'';const _0x2d0512=_0x1d98f0['split'](';'),_0x491be5=[];for(const _0x5c6810 of _0x2d0512){if(_0x5c6810==='1')_0x491be5['push']('font-weight:bold');else{if(_0x44606b[_0x5c6810])_0x491be5['push']('color:'+_0x44606b[_0x5c6810]);else{if(_0x2c3299[_0x5c6810])_0x491be5['push']('background-color:'+_0x2c3299[_0x5c6810]);}}}if(_0x491be5['length']>0x0)return'<span\x20style=\x22'+_0x491be5['join'](';')+'\x22>';return'';}),_0x498c61;},'showModal'({title:_0x507932,content:_0x200215,buttons:buttons=[]}){const _0x30450d='\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'](_0x507932)+'</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'+_0x200215+'\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']((_0x527b08,_0xb35d2c)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x527b08['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xb35d2c+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x527b08['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',_0x4bfeb5=document['createElement']('div');_0x4bfeb5['id']='utils-modal',_0x4bfeb5['className']='modal',_0x4bfeb5['innerHTML']=_0x30450d,document['body']['appendChild'](_0x4bfeb5);const _0x1e4974=document['getElementById']('utils-modal-close');_0x1e4974&&_0x1e4974['addEventListener']('click',()=>this['hideModal']());const _0x55c083=_0x4bfeb5['querySelectorAll']('[data-btn-index]');_0x55c083['forEach'](_0x3be19d=>{const _0x1975fd=parseInt(_0x3be19d['dataset']['btnIndex']);buttons[_0x1975fd]?.['onClick']&&_0x3be19d['addEventListener']('click',buttons[_0x1975fd]['onClick']);});const _0xf53d2f=document['getElementById']('utils-modal-overlay');_0xf53d2f&&_0xf53d2f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x29466a=document['getElementById']('utils-modal');_0x29466a&&_0x29466a['remove']();},'parseKeyValuePairs'(_0x417782){const _0x246833={};if(!_0x417782)return _0x246833;return _0x417782['split'](/\r?\n/)['map'](_0x2eaa35=>_0x2eaa35['trim']())['filter'](Boolean)['forEach'](_0x509555=>{const _0x23f9d2=_0x509555['indexOf']('=');if(_0x23f9d2>0x0){const _0xead946=_0x509555['slice'](0x0,_0x23f9d2)['trim'](),_0x23f0f2=_0x509555['slice'](_0x23f9d2+0x1)['trim']();if(_0xead946)_0x246833[_0xead946]=_0x23f0f2;}}),_0x246833;},'debounce'(_0x473757,_0x3e745b=0xfa){let _0x2c3dfd=null;return(..._0x4bbb51)=>{clearTimeout(_0x2c3dfd),_0x2c3dfd=setTimeout(()=>_0x473757['apply'](this,_0x4bbb51),_0x3e745b);};},'formatTimestamp'(_0x8ebf7c){if(!_0x8ebf7c)return'N/A';const _0x1e6262=new Date(_0x8ebf7c);return _0x1e6262['toLocaleDateString']()+'\x20'+_0x1e6262['toLocaleTimeString']();},'getQueryParams'(){const _0x5a5d75=new URLSearchParams(window['location']['search']),_0x509acc={};for(const [_0x27f3fe,_0x3368f4]of _0x5a5d75){_0x509acc[_0x27f3fe]=_0x3368f4;}return _0x509acc;},'formatDuration'(_0x191dce,_0x5ddd74){if(!_0x191dce)return'N/A';const _0x97e268=new Date(_0x191dce),_0x1639d3=_0x5ddd74?new Date(_0x5ddd74):new Date(),_0x481ff6=_0x1639d3-_0x97e268;if(_0x481ff6<0x0)return'0s';const _0x4fdbc9=Math['floor'](_0x481ff6/0x3e8),_0x56a6aa=Math['floor'](_0x4fdbc9/0x3c),_0x3ec545=Math['floor'](_0x56a6aa/0x3c),_0x7042f3=Math['floor'](_0x3ec545/0x18);if(_0x4fdbc9<0x3c)return _0x4fdbc9+'s';if(_0x56a6aa<0x3c)return _0x56a6aa+'m\x20'+_0x4fdbc9%0x3c+'s';if(_0x3ec545<0x18)return _0x3ec545+'h\x20'+_0x56a6aa%0x3c+'m\x20'+_0x4fdbc9%0x3c+'s';return _0x7042f3+'d\x20'+_0x3ec545%0x18+'h\x20'+_0x56a6aa%0x3c+'m';},'renderMarkdown'(_0x18713b,_0x231108={}){if(!_0x18713b)return'';_0x18713b=this['rewriteAttachmentLinks'](_0x18713b,_0x231108),_0x18713b=this['rewriteColorSyntax'](_0x18713b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x18713b,_0x231108);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x18713b);}catch(_0x15c280){return console['error']('Markdown\x20parsing\x20error:',_0x15c280),this['renderMarkdownFallback'](_0x18713b,_0x231108);}},'rewriteAttachmentLinks'(_0x2323bb,_0x18b555={}){const _0x2f1010=typeof _0x18b555['resolveAttachmentUrl']==='function'?_0x18b555['resolveAttachmentUrl']:_0x18b555['taskId']?_0x1c0dd4=>API_BASE+'/tasks/'+_0x18b555['taskId']+'/attachments/'+encodeURIComponent(_0x1c0dd4):null;if(!_0x2f1010)return _0x2323bb;return String(_0x2323bb)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x230b2b,_0x131976)=>{const _0x1e8301=String(_0x131976||'')['trim']();if(!_0x1e8301)return _0x230b2b;let _0x3ad8cb=_0x1e8301;try{_0x3ad8cb=decodeURIComponent(_0x1e8301);}catch{}const _0x1c8296=_0x2f1010(_0x3ad8cb);if(!_0x1c8296)return _0x230b2b;return']('+_0x1c8296+')';});},'rewriteColorSyntax'(_0x13a351){if(!_0x13a351)return _0x13a351;return String(_0x13a351)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x356d65,_0x51a7cc,_0x377fa4)=>{const _0x3def5c=this['rewriteColorSyntax'](_0x377fa4);return'<span\x20style=\x22color:\x20'+_0x51a7cc+'\x22>'+_0x3def5c+'</span>';});},'renderMarkdownFallback'(_0x297afa,_0x2d8d3e={}){if(!_0x297afa)return'';_0x297afa=_0x297afa['replace'](/\r\n/g,'\x0a'),_0x297afa=_0x297afa['replace'](/\r/g,'\x0a'),_0x297afa=this['rewriteAttachmentLinks'](_0x297afa,_0x2d8d3e);let _0x21e7cc=this['escapeHtml'](_0x297afa);return _0x21e7cc=_0x21e7cc['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x21e7cc=_0x21e7cc['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x21e7cc=_0x21e7cc['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x21e7cc=_0x21e7cc['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x21e7cc=_0x21e7cc['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x21e7cc=_0x21e7cc['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x21e7cc=_0x21e7cc['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x21e7cc=_0x21e7cc['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x21e7cc=_0x21e7cc['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x21e7cc=_0x21e7cc['replace'](/\n\n/g,'</p><p>'),_0x21e7cc=_0x21e7cc['replace'](/\n/g,'<br>'),'<p>'+_0x21e7cc+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x205afd=new Uint8Array(0x10);crypto['getRandomValues'](_0x205afd),_0x205afd[0x6]=_0x205afd[0x6]&0xf|0x40,_0x205afd[0x8]=_0x205afd[0x8]&0x3f|0x80;const _0x43c18f=Array['from'](_0x205afd,_0x3bb9b2=>_0x3bb9b2['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x43c18f['slice'](0x0,0x8)+'-'+_0x43c18f['slice'](0x8,0xc)+'-'+_0x43c18f['slice'](0xc,0x10)+'-'+_0x43c18f['slice'](0x10,0x14)+'-'+_0x43c18f['slice'](0x14);}};export class CustomSelect{constructor(_0x57d27b,_0x31d8fb={}){this['nativeSelect']=_0x57d27b,this['options']=_0x31d8fb,this['isOpen']=![],this['selectedValue']=_0x57d27b['value']||'',this['searchable']=_0x31d8fb['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4780a4=document['createElement']('div');_0x4780a4['className']='custom-select';const _0x4e0379=document['createElement']('div');_0x4e0379['className']='custom-select-trigger',_0x4e0379['setAttribute']('tabindex','0'),_0x4e0379['setAttribute']('role','button'),_0x4e0379['setAttribute']('aria-haspopup','listbox');const _0x59d7ae=document['createElement']('span');_0x59d7ae['className']='custom-select-trigger-text';const _0x1343d0=document['createElement']('span');_0x1343d0['className']='custom-select-arrow',_0x1343d0['textContent']='▼',_0x4e0379['appendChild'](_0x59d7ae),_0x4e0379['appendChild'](_0x1343d0);const _0x63410d=document['createElement']('div');_0x63410d['className']='custom-select-dropdown',_0x63410d['setAttribute']('role','listbox');if(this['searchable']){const _0x1f1d73=document['createElement']('div');_0x1f1d73['className']='custom-select-search';const _0x350eff=document['createElement']('input');_0x350eff['type']='text',_0x350eff['className']='custom-select-search-input',_0x350eff['placeholder']='Type\x20to\x20search...',_0x350eff['setAttribute']('aria-label','Search\x20options'),_0x350eff['addEventListener']('input',_0x15d3f1=>{this['searchQuery']=_0x15d3f1['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x350eff['addEventListener']('keydown',_0x2e3405=>{if(_0x2e3405['key']==='Escape')_0x2e3405['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2e3405['key']==='Enter'){_0x2e3405['preventDefault'](),_0x2e3405['stopPropagation']();const _0x416ab2=_0x63410d['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x416ab2){const _0x407b52=_0x416ab2['getAttribute']('data-value');this['select'](_0x407b52);}}}}),_0x1f1d73['appendChild'](_0x350eff),_0x63410d['appendChild'](_0x1f1d73),this['searchInput']=_0x350eff;}const _0x233cf9=document['createElement']('div');_0x233cf9['className']='custom-select-options',_0x63410d['appendChild'](_0x233cf9),_0x4780a4['appendChild'](_0x4e0379),_0x4780a4['appendChild'](_0x63410d),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4780a4,this['nativeSelect']),this['wrapper']=_0x4780a4,this['trigger']=_0x4e0379,this['triggerText']=_0x59d7ae,this['dropdown']=_0x63410d,this['optionsContainer']=_0x233cf9,_0x4e0379['addEventListener']('click',()=>this['toggle']()),_0x4e0379['addEventListener']('keydown',_0x4b868f=>this['handleKeydown'](_0x4b868f)),document['addEventListener']('click',_0x25c90c=>{!_0x4780a4['contains'](_0x25c90c['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x59518e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x59518e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1c9220=new MutationObserver(()=>{this['updateDisabledState']();});_0x1c9220['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x16a0f9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x16a0f9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0xf79a29=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0xf79a29),this['trigger']['setAttribute']('aria-disabled',_0xf79a29?'true':'false'),this['trigger']['setAttribute']('tabindex',_0xf79a29?'-1':'0'),_0xf79a29&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x300157=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x279f6e=_0x300157['filter'](_0xaea9b8=>!_0xaea9b8['disabled']&&!_0xaea9b8['hidden']);_0x300157['forEach']((_0x142d4a,_0x5c1206)=>{const _0x1803ba=document['createElement']('div');_0x1803ba['className']='custom-select-option',_0x1803ba['textContent']=_0x142d4a['textContent'],_0x1803ba['setAttribute']('data-value',_0x142d4a['value']),_0x1803ba['setAttribute']('data-index',_0x5c1206),_0x1803ba['setAttribute']('role','option'),_0x142d4a['disabled']?_0x1803ba['classList']['add']('disabled'):_0x1803ba['addEventListener']('click',()=>this['select'](_0x142d4a['value'])),_0x142d4a['value']===this['selectedValue']&&_0x1803ba['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1803ba),this['allOptions']['push']({'element':_0x1803ba,'text':_0x142d4a['textContent']['toLowerCase'](),'value':_0x142d4a['value'],'disabled':_0x142d4a['disabled']});});if(this['searchable']&&this['searchInput']){const _0x418652=this['searchInput']['parentElement'];_0x279f6e['length']>0x3?_0x418652['style']['display']='':_0x418652['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2b4da6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x13d781=>{if(!_0x2b4da6||_0x13d781['disabled'])_0x13d781['element']['style']['display']='';else{const _0x4634d7=_0x13d781['text']['includes'](_0x2b4da6);_0x13d781['element']['style']['display']=_0x4634d7?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x42563f){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x42563f,this['nativeSelect']['value']=_0x42563f;const _0xd88095=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xd88095),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1d5f1b=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1d5f1b&&(this['triggerText']['textContent']=_0x1d5f1b['textContent'],_0x1d5f1b['disabled']||_0x1d5f1b['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x53b74b=>{_0x53b74b['getAttribute']('data-value')===this['selectedValue']?_0x53b74b['classList']['add']('selected'):_0x53b74b['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 _0x25e476=window['getComputedStyle'](this['dropdown']);if(_0x25e476['position']==='fixed'){const _0x4c6410=this['trigger']['getBoundingClientRect'](),_0x5850c1=parseInt(_0x25e476['maxHeight'])||0xc8,_0x3249dd=window['innerHeight'],_0x4f5e5e=_0x3249dd-_0x4c6410['bottom'],_0x3d7138=_0x4c6410['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x1c9be6;_0x4f5e5e<_0x5850c1&&_0x3d7138>_0x4f5e5e?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3249dd-_0x4c6410['top']+'px',_0x1c9be6=Math['min'](_0x5850c1,_0x3d7138-0xa),this['dropdown']['style']['maxHeight']=_0x1c9be6+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4c6410['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x1c9be6=Math['min'](_0x5850c1,_0x4f5e5e-0xa),this['dropdown']['style']['maxHeight']=_0x1c9be6+'px');if(this['optionsContainer']){let _0x59945b=_0x1c9be6;if(this['searchInput']){const _0x16e6c1=this['searchInput']['parentElement'];_0x16e6c1&&(_0x59945b-=_0x16e6c1['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x59945b)+'px';}this['dropdown']['style']['left']=_0x4c6410['left']+'px',this['dropdown']['style']['width']=_0x4c6410['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x4848d6=this['searchInput']['parentElement'];_0x4848d6&&_0x4848d6['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'](_0x261709){if(this['nativeSelect']['disabled'])return;if(_0x261709['key']==='Enter'||_0x261709['key']==='\x20')_0x261709['preventDefault'](),this['toggle']();else _0x261709['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3a49fa='\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',_0x3a49fa),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x24b3ea=document['getElementById']('confirm-dialog-close'),_0x15e9ff=document['getElementById']('confirm-dialog-cancel'),_0x1f2f0e=document['getElementById']('confirm-dialog-confirm'),_0x2324be=this['_modal']['querySelector']('.modal-overlay');_0x24b3ea['addEventListener']('click',()=>this['_resolve'](![])),_0x15e9ff['addEventListener']('click',()=>this['_resolve'](![])),_0x1f2f0e['addEventListener']('click',()=>this['_resolve'](!![])),_0x2324be['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x286240=>{if(_0x286240['key']==='Escape')_0x286240['preventDefault'](),this['_resolve'](![]);else _0x286240['key']==='Enter'&&(_0x286240['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1deb22,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x255fdf=>{this['_resolvePromise']=_0x255fdf,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1deb22;const _0x52e0dc=document['getElementById']('confirm-dialog-cancel'),_0x17476a=document['getElementById']('confirm-dialog-confirm');_0x52e0dc['textContent']=cancelText,_0x17476a['textContent']=confirmText,_0x17476a['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x17476a['focus']();});},'_resolve'(_0x1b9d1b){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1b9d1b),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x369a3e,_0x26a9e0={}){this['container']=_0x369a3e,this['options']={'placeholder':_0x26a9e0['placeholder']||'Type\x20to\x20search...','maxItems':_0x26a9e0['maxItems']||0x64,'loadItems':_0x26a9e0['loadItems']||(async()=>[]),'renderItem':_0x26a9e0['renderItem']||(_0x386177=>({'primary':String(_0x386177),'secondary':''})),'onSelect':_0x26a9e0['onSelect']||(()=>{}),'filterItems':_0x26a9e0['filterItems']||null,'getItemValue':_0x26a9e0['getItemValue']||(_0x58f63f=>_0x58f63f),'sortItems':_0x26a9e0['sortItems']||null,'debounceMs':_0x26a9e0['debounceMs']||0xc8,'minCharsForSearch':_0x26a9e0['minCharsForSearch']||0x0,'emptyMessage':_0x26a9e0['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x26a9e0['loadingMessage']||'Loading...','preload':_0x26a9e0['preload']!==![],'searchMode':_0x26a9e0['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',_0x3746d1=>this['onBlur'](_0x3746d1)),this['input']['addEventListener']('input',_0x54c01b=>this['onInput'](_0x54c01b)),this['input']['addEventListener']('keydown',_0x9ea724=>this['onKeydown'](_0x9ea724)),this['clearBtn']['addEventListener']('mousedown',_0x2bb166=>{_0x2bb166['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x25361f=>{_0x25361f['preventDefault']();}),document['addEventListener']('click',_0x3786cf=>{!this['wrapper']['contains'](_0x3786cf['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(_0x38412e){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x38412e);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x20a060){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5e938e){const _0x18a280=_0x5e938e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x18a280);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x18a280):this['loadAndShow'](_0x18a280);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x35be46){switch(_0x35be46['key']){case'ArrowDown':_0x35be46['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x35be46['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x35be46['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x35be46['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x45f072){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x25c9f5=this['selectedIndex']+_0x45f072;if(_0x25c9f5>=0x0&&_0x25c9f5<this['filteredItems']['length']){this['selectedIndex']=_0x25c9f5,this['updateSelectionHighlight']();const _0x2cc322=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2cc322[this['selectedIndex']]&&_0x2cc322[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x138e33=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x138e33['forEach']((_0x528cd7,_0x45221f)=>{_0x528cd7['classList']['toggle']('keyboard-selected',_0x45221f===this['selectedIndex']);});}async['loadAndShow'](_0xc7f594){this['showLoading']();try{const _0x52e810=await this['options']['loadItems'](_0xc7f594);if(this['options']['searchMode']==='server'){let _0x3fb20e=_0x52e810;this['options']['sortItems']&&(_0x3fb20e=this['options']['sortItems']([..._0x52e810]));this['filteredItems']=_0x3fb20e;const _0x2aa222=this['filteredItems']['length']>=this['options']['maxItems'];_0x2aa222&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2aa222),this['open']();}else this['allItems']=_0x52e810,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0xc7f594);}catch(_0xc8f0a3){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0xc8f0a3),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x424367){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x424367):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x31679b=this['filteredItems']['length']>=this['options']['maxItems'];_0x31679b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x31679b),this['open']();}['renderItems'](_0x32dce1){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']((_0x54dc00,_0x429d6a)=>{const _0x1b04e1=document['createElement']('div');_0x1b04e1['className']='autocomplete-select-item',_0x1b04e1['setAttribute']('role','option'),_0x1b04e1['setAttribute']('data-index',_0x429d6a);const _0x596f29=this['options']['renderItem'](_0x54dc00);let _0x148dd9='';_0x596f29['icon']&&(_0x148dd9='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x596f29['iconClass']||'')+'\x22>'+_0x596f29['icon']+'</span>'),_0x1b04e1['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x148dd9+'\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'](_0x596f29['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x596f29['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x596f29['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x1b04e1['addEventListener']('click',()=>{this['selectItem'](_0x54dc00);}),_0x1b04e1['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x429d6a,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x1b04e1);}),_0x32dce1?(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'](_0x470dd2){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x470dd2)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x11a3ea){this['selectedItem']=_0x11a3ea;const _0x5d2e22=this['options']['renderItem'](_0x11a3ea);this['input']['value']=_0x5d2e22['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x11a3ea);}['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'](_0x482f44){if(_0x482f44){this['selectedItem']=_0x482f44;const _0x3737d8=this['options']['renderItem'](_0x482f44);this['input']['value']=_0x3737d8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4e9747){this['allItems']=_0x4e9747,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'](_0x9eb395){this['input']['placeholder']=_0x9eb395;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x404e93=null){const _0x9bedce=document['getElementById']('admin-menu-container'),_0x13efff=document['getElementById']('admin-menu-btn'),_0x1cb969=document['getElementById']('admin-menu');if(!_0x9bedce||!_0x13efff||!_0x1cb969)return;try{!_0x404e93&&(_0x404e93=await API['getCurrentUser']());if(_0x404e93){const _0x4cddeb=window['Permissions'],_0x54e846=_0x4cddeb['hasServerPermission'](_0x404e93,'*')||_0x4cddeb['hasEnvPermission'](_0x404e93,'environments:manage')||_0x4cddeb['hasServerPermission'](_0x404e93,'users:create')||_0x4cddeb['hasTeamPermission'](_0x404e93,'teams:manage')||_0x4cddeb['hasAnyEnvironment'](_0x404e93);if(!_0x54e846)return;_0x9bedce['hidden']=![];if(!_0x4cddeb['hasServerPermission'](_0x404e93,'*')){const _0x51cc15=_0x1cb969['querySelectorAll']('.admin-menu-item');_0x51cc15['forEach'](_0x2396e7=>{const _0x65a0ed=_0x2396e7['querySelector']('.option-text')?.['textContent']?.['trim']();_0x65a0ed==='Users'&&!_0x4cddeb['hasServerPermission'](_0x404e93,'users:create')&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Skills'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Server\x20Settings'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Server\x20Health'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Git\x20History'&&(_0x2396e7['hidden']=!![]),_0x65a0ed==='Roles'&&(_0x2396e7['hidden']=!![]);});}_0x13efff['addEventListener']('click',_0x35569c=>{_0x35569c['stopPropagation']();const _0x2830a9=document['getElementById']('actions-menu');if(_0x2830a9)_0x2830a9['hidden']=!![];_0x1cb969['hidden']=!_0x1cb969['hidden'];}),document['addEventListener']('click',_0x13ffa8=>{!_0x1cb969['hidden']&&!_0x13efff['contains'](_0x13ffa8['target'])&&!_0x1cb969['contains'](_0x13ffa8['target'])&&(_0x1cb969['hidden']=!![]);}),document['addEventListener']('keydown',_0x3ab3a5=>{_0x3ab3a5['key']==='Escape'&&!_0x1cb969['hidden']&&(_0x1cb969['hidden']=!![]);});const _0x571e4c=document['getElementById']('server-health-btn');_0x571e4c&&_0x571e4c['addEventListener']('click',async()=>{_0x1cb969['hidden']=!![];const {openServerHealthModal:_0x2e022e}=await import('./server-health.js');_0x2e022e();});}}catch(_0x1a0c69){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1a0c69['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|