@profoundlogic/coderflow-server 0.6.0 → 0.6.1
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 _0x229083=window['location']['pathname'],_0x58493e=_0x229083['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x58493e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x58493e[0x1]),_0x58493e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x11ab96={}){const _0x24aab5=new URLSearchParams();_0x11ab96['userId']&&_0x24aab5['set']('userId',String(_0x11ab96['userId']));_0x11ab96['automation']&&_0x24aab5['set']('automation',String(_0x11ab96['automation']));const _0x28bb2b=API_BASE+'/tasks/stats'+(_0x24aab5['toString']()?'?'+_0x24aab5['toString']():''),_0x12666d=await fetch(_0x28bb2b);if(!_0x12666d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x12666d['statusText']);return await _0x12666d['json']();},async 'getTasks'(_0x1c0f2c={}){const _0x496e10=new URLSearchParams();_0x1c0f2c['status']&&_0x496e10['set']('status',String(_0x1c0f2c['status']));_0x1c0f2c['environment']&&_0x496e10['set']('environment',String(_0x1c0f2c['environment']));_0x1c0f2c['automation']&&_0x496e10['set']('automation',String(_0x1c0f2c['automation']));if(_0x1c0f2c['include']){const _0x3a37c7=Array['isArray'](_0x1c0f2c['include'])?_0x1c0f2c['include']['join'](','):String(_0x1c0f2c['include']);_0x3a37c7&&_0x496e10['set']('include',_0x3a37c7);}_0x1c0f2c['filter']&&_0x496e10['set']('filter',String(_0x1c0f2c['filter']));_0x1c0f2c['page']&&_0x496e10['set']('page',String(_0x1c0f2c['page']));_0x1c0f2c['limit']&&_0x496e10['set']('limit',String(_0x1c0f2c['limit']));_0x1c0f2c['userId']&&_0x496e10['set']('userId',String(_0x1c0f2c['userId']));_0x1c0f2c['search']&&_0x496e10['set']('search',String(_0x1c0f2c['search']));_0x1c0f2c['includeChildTasks']&&_0x496e10['set']('includeChildTasks','true');const _0x810deb=API_BASE+'/tasks'+(_0x496e10['toString']()?'?'+_0x496e10['toString']():''),_0x5cea20=await fetch(_0x810deb);if(!_0x5cea20['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x5cea20['statusText']);return await _0x5cea20['json']();},async 'getAutomations'(_0x39783c={}){const _0x465ff7=new URLSearchParams();_0x39783c['environment']&&_0x465ff7['set']('environment',String(_0x39783c['environment']));const _0xcc7b4=await fetch(API_BASE+'/api/automations'+(_0x465ff7['toString']()?'?'+_0x465ff7['toString']():''));if(!_0xcc7b4['ok']){const _0x2eb720=await _0xcc7b4['json']()['catch'](()=>({}));throw new Error(_0x2eb720['message']||_0x2eb720['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xcc7b4['statusText']);}return await _0xcc7b4['json']();},async 'getAutomation'(_0x423788){const _0x117e46=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x423788));if(!_0x117e46['ok']){const _0x56bc47=await _0x117e46['json']()['catch'](()=>({}));throw new Error(_0x56bc47['message']||_0x56bc47['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x117e46['statusText']);}return await _0x117e46['json']();},async 'createAutomation'(_0x5664cd){const _0xa8e459=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5664cd||{})});if(!_0xa8e459['ok']){const _0x59d50f=await _0xa8e459['json']()['catch'](()=>({}));throw new Error(_0x59d50f['message']||_0x59d50f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0xa8e459['statusText']);}return await _0xa8e459['json']();},async 'updateAutomation'(_0x5b0711,_0x4dff1a){const _0x350de1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5b0711),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dff1a||{})});if(!_0x350de1['ok']){const _0x4d992d=await _0x350de1['json']()['catch'](()=>({}));throw new Error(_0x4d992d['message']||_0x4d992d['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x350de1['statusText']);}return await _0x350de1['json']();},async 'deleteAutomation'(_0x11a95c){const _0x2bb3b7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x11a95c),{'method':'DELETE'});if(!_0x2bb3b7['ok']){const _0x503db7=await _0x2bb3b7['json']()['catch'](()=>({}));throw new Error(_0x503db7['message']||_0x503db7['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x2bb3b7['statusText']);}return await _0x2bb3b7['json']();},async 'triggerAutomation'(_0x416d04){const _0x5a7a6a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x416d04)+'/trigger',{'method':'POST'});if(!_0x5a7a6a['ok']){const _0x27f181=await _0x5a7a6a['json']()['catch'](()=>({}));throw new Error(_0x27f181['message']||_0x27f181['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x5a7a6a['statusText']);}return await _0x5a7a6a['json']();},async 'setAutomationEnabled'(_0x410c45,_0x56b341){const _0x4fea4f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x410c45)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x56b341})});if(!_0x4fea4f['ok']){const _0x22818e=await _0x4fea4f['json']()['catch'](()=>({}));throw new Error(_0x22818e['message']||_0x22818e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4fea4f['statusText']);}return await _0x4fea4f['json']();},async 'getAutomationHistory'(_0x4d86bd,_0x4cfbed=0x32){const _0x5ef4f5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d86bd)+'/history?limit='+encodeURIComponent(String(_0x4cfbed)));if(!_0x5ef4f5['ok']){const _0xa082bd=await _0x5ef4f5['json']()['catch'](()=>({}));throw new Error(_0xa082bd['message']||_0xa082bd['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5ef4f5['statusText']);}return await _0x5ef4f5['json']();},async 'getTask'(_0x4b0c61,_0x129543={}){const _0xa28a94=new URLSearchParams();if(_0x129543['include']){const _0x41aeb3=Array['isArray'](_0x129543['include'])?_0x129543['include']['join'](','):String(_0x129543['include']);if(_0x41aeb3)_0xa28a94['set']('include',_0x41aeb3);}const _0x39a224=await fetch(API_BASE+'/tasks/'+_0x4b0c61+(_0xa28a94['toString']()?'?'+_0xa28a94['toString']():''));if(!_0x39a224['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x39a224['statusText']);return await _0x39a224['json']();},async 'getTaskResults'(_0x3cda08){const _0xd1d5b7=await fetch(API_BASE+'/tasks/'+_0x3cda08+'/results');if(!_0xd1d5b7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xd1d5b7['statusText']);return await _0xd1d5b7['json']();},async 'getTaskPatches'(_0xf637e6){const _0x475ab5=await fetch(API_BASE+'/tasks/'+_0xf637e6+'/patches');if(!_0x475ab5['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x475ab5['statusText']);return await _0x475ab5['json']();},async 'getTaskAttachments'(_0x224164){const _0x2a0347=await fetch(API_BASE+'/tasks/'+_0x224164+'/attachments');if(!_0x2a0347['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2a0347['statusText']);return await _0x2a0347['json']();},async 'uploadAttachments'(_0x2fc9af,_0x34e054){const _0x4f1445=new FormData();for(const _0x10d473 of _0x34e054){_0x4f1445['append']('attachments',_0x10d473);}const _0x4b874b=await fetch(API_BASE+'/tasks/'+_0x2fc9af+'/attachments',{'method':'POST','body':_0x4f1445});if(!_0x4b874b['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4b874b['statusText']);return await _0x4b874b['json']();},async 'isAINameGenerationAvailable'(){try{const _0x41d761=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x41d761['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x41d761['json']();}catch(_0x32a20c){return{'available':![],'reason':_0x32a20c['message']};}},async 'generateTaskName'(_0x3d018e){try{const _0x287591=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x3d018e})});return await _0x287591['json']();}catch(_0x5df5c4){return{'success':![],'error':_0x5df5c4['message']};}},async 'createTask'(_0x25c41b){let _0x56288e,_0x3d75c1={};if(_0x25c41b['files']&&_0x25c41b['files']['length']>0x0){const _0x1e194a=new FormData();for(const [_0x43d711,_0x1e35fc]of Object['entries'](_0x25c41b)){if(_0x43d711!=='files'){if(_0x1e35fc==null)continue;typeof _0x1e35fc==='object'?_0x1e194a['append'](_0x43d711,JSON['stringify'](_0x1e35fc)):_0x1e194a['append'](_0x43d711,String(_0x1e35fc));}}for(const _0xa2a908 of _0x25c41b['files']){_0x1e194a['append']('attachments',_0xa2a908);}_0x56288e=_0x1e194a;}else _0x3d75c1['Content-Type']='application/json',_0x56288e=JSON['stringify'](_0x25c41b);const _0x1ebe70=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3d75c1,'body':_0x56288e});if(!_0x1ebe70['ok']){const _0x13fbcc=await _0x1ebe70['json'](),_0x18cc6c=new Error(_0x13fbcc['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1ebe70['statusText']),{message:_0x58df92,..._0x2c4c4f}=_0x13fbcc;Object['assign'](_0x18cc6c,_0x2c4c4f);throw _0x18cc6c;}return await _0x1ebe70['json']();},async 'createTestTask'(_0x21881e){const _0x3895d1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21881e)});if(!_0x3895d1['ok']){const _0x100595=await _0x3895d1['json']();throw new Error(_0x100595['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3895d1['statusText']);}return await _0x3895d1['json']();},async 'createEphemeralTest'(_0x4bb8b9){const _0x191f45=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bb8b9)});if(!_0x191f45['ok']){const _0x5f1542=await _0x191f45['json']();throw new Error(_0x5f1542['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x191f45['statusText']);}return await _0x191f45['json']();},async 'createDeployTask'(_0x14c319){const _0x5b662f=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x14c319)});if(!_0x5b662f['ok']){const _0x3867f0=await _0x5b662f['json']();throw new Error(_0x3867f0['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5b662f['statusText']);}return await _0x5b662f['json']();},async 'getEnvironments'(){const _0x27ea33=await fetch(API_BASE+'/environments');if(!_0x27ea33['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x27ea33['statusText']);return await _0x27ea33['json']();},async 'getEnvironment'(_0x4611a3){const _0x4cd911=await fetch(API_BASE+'/environments/'+_0x4611a3);if(!_0x4cd911['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4cd911['statusText']);return await _0x4cd911['json']();},async 'getEnvironmentRepoHistory'(_0x35c19d,_0x5c7794,_0x55ec2c={}){if(!_0x35c19d||!_0x5c7794)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x11d30b=new URLSearchParams();if(_0x55ec2c['limit'])_0x11d30b['set']('limit',String(_0x55ec2c['limit']));if(_0x55ec2c['offset'])_0x11d30b['set']('offset',String(_0x55ec2c['offset']));if(_0x55ec2c['search'])_0x11d30b['set']('search',String(_0x55ec2c['search']));if(_0x55ec2c['branch'])_0x11d30b['set']('branch',String(_0x55ec2c['branch']));const _0x6d95c1=API_BASE+'/environments/'+encodeURIComponent(_0x35c19d)+'/repos/'+encodeURIComponent(_0x5c7794)+'/git/history',_0x5aa716=await fetch(''+_0x6d95c1+(_0x11d30b['toString']()?'?'+_0x11d30b['toString']():''));if(!_0x5aa716['ok']){const _0x3fc348=await _0x5aa716['json']()['catch'](()=>({}));throw new Error(_0x3fc348['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5aa716['statusText']);}return await _0x5aa716['json']();},async 'getEnvironmentRepoCommit'(_0x16ca91,_0x3e548e,_0x14b333){if(!_0x16ca91||!_0x3e548e||!_0x14b333)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2ba090=API_BASE+'/environments/'+encodeURIComponent(_0x16ca91)+'/repos/'+encodeURIComponent(_0x3e548e)+'/git/commits/'+encodeURIComponent(_0x14b333),_0x1684b9=await fetch(_0x2ba090);if(!_0x1684b9['ok']){const _0x1c6ebb=await _0x1684b9['json']()['catch'](()=>({}));throw new Error(_0x1c6ebb['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1684b9['statusText']);}return await _0x1684b9['json']();},async 'getEnvironmentRepoBranches'(_0x204664,_0x3b31a2){if(!_0x204664||!_0x3b31a2)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4de03e=API_BASE+'/environments/'+encodeURIComponent(_0x204664)+'/repos/'+encodeURIComponent(_0x3b31a2)+'/git/branches',_0x2cbd7f=await fetch(_0x4de03e);if(!_0x2cbd7f['ok']){const _0x292527=await _0x2cbd7f['json']()['catch'](()=>({}));throw new Error(_0x292527['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x2cbd7f['statusText']);}return await _0x2cbd7f['json']();},async 'revertEnvironmentRepoCommit'(_0x3a9136,_0xfbe155,_0x1d4ad2,_0x21a4e7={}){if(!_0x3a9136||!_0xfbe155||!_0x1d4ad2)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x3a0238=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x3a9136)+'/repos/'+encodeURIComponent(_0xfbe155)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1d4ad2,..._0x21a4e7})});if(!_0x3a0238['ok']){const _0xa9cc5c=await _0x3a0238['json']()['catch'](()=>({}));throw new Error(_0xa9cc5c['message']||_0xa9cc5c['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x3a0238['statusText']);}return await _0x3a0238['json']();},async 'getTemplates'(_0x23f847={}){const _0x565345=new URLSearchParams();if(_0x23f847['include']){const _0x43ace4=Array['isArray'](_0x23f847['include'])?_0x23f847['include']['join'](','):String(_0x23f847['include']);if(_0x43ace4)_0x565345['set']('include',_0x43ace4);}const _0x4a82fb=await fetch(API_BASE+'/templates'+(_0x565345['toString']()?'?'+_0x565345['toString']():''));if(!_0x4a82fb['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4a82fb['statusText']);return await _0x4a82fb['json']();},async 'getTemplatesForEnvironment'(_0x31a65b,_0x2dda94={}){if(!_0x31a65b)throw new Error('Environment\x20name\x20is\x20required');const _0x219d6a=new URLSearchParams();if(_0x2dda94['include']){const _0x131313=Array['isArray'](_0x2dda94['include'])?_0x2dda94['include']['join'](','):String(_0x2dda94['include']);if(_0x131313)_0x219d6a['set']('include',_0x131313);}const _0x38b5ca=await fetch(API_BASE+'/templates/'+_0x31a65b+(_0x219d6a['toString']()?'?'+_0x219d6a['toString']():''));if(!_0x38b5ca['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x31a65b+':\x20'+_0x38b5ca['statusText']);return await _0x38b5ca['json']();},async 'getTemplate'(_0x3347b1,_0x123869,_0x553bb2={}){if(!_0x3347b1||!_0x123869)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x2807e2=new URLSearchParams();if(_0x553bb2['include']){const _0x4cabca=Array['isArray'](_0x553bb2['include'])?_0x553bb2['include']['join'](','):String(_0x553bb2['include']);if(_0x4cabca)_0x2807e2['set']('include',_0x4cabca);}const _0x490a60=await fetch(API_BASE+'/templates/'+_0x3347b1+'/'+_0x123869+(_0x2807e2['toString']()?'?'+_0x2807e2['toString']():''));if(!_0x490a60['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x490a60['statusText']);return await _0x490a60['json']();},async 'getTaskLogs'(_0x56b6db,_0x45accb={}){if(!_0x56b6db)throw new Error('Task\x20ID\x20is\x20required');const _0x56ae74=new URLSearchParams();_0x45accb['tail']&&_0x56ae74['set']('tail',String(_0x45accb['tail']));const _0xdc7c1e=await fetch(API_BASE+'/tasks/'+_0x56b6db+'/logs'+(_0x56ae74['toString']()?'?'+_0x56ae74['toString']():''));if(!_0xdc7c1e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0xdc7c1e['statusText']);return await _0xdc7c1e['text']();},async 'getContainers'(){const _0x351480=await fetch(API_BASE+'/containers');if(!_0x351480['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x351480['statusText']);return await _0x351480['json']();},async 'getContainer'(_0x4b6fbd){const _0xdf80c6=await fetch(API_BASE+'/containers/'+_0x4b6fbd);if(!_0xdf80c6['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0xdf80c6['statusText']);return await _0xdf80c6['json']();},async 'startInteractiveContainer'(_0x3ba937){const _0x35ffda=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ba937)});if(!_0x35ffda['ok']){const _0x4684bf=await _0x35ffda['json']()['catch'](()=>({}));throw new Error(_0x4684bf['message']||'Failed\x20to\x20start\x20container:\x20'+_0x35ffda['statusText']);}return await _0x35ffda['json']();},async 'stopContainer'(_0x140e27){const _0x14b17f=await fetch(API_BASE+'/containers/'+_0x140e27,{'method':'DELETE'});if(!_0x14b17f['ok']){const _0x31de43=await _0x14b17f['json']()['catch'](()=>({}));throw new Error(_0x31de43['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x14b17f['statusText']);}return await _0x14b17f['json']();},async 'stopTask'(_0x437548){if(!_0x437548)throw new Error('Task\x20ID\x20is\x20required');const _0x36ef73=await fetch(API_BASE+'/tasks/'+_0x437548+'/stop',{'method':'POST'});if(!_0x36ef73['ok']){const _0xe4868b=await _0x36ef73['json']()['catch'](()=>({}));throw new Error(_0xe4868b['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x36ef73['statusText']);}return await _0x36ef73['json']();},async 'interruptTask'(_0x56d8d6){if(!_0x56d8d6)throw new Error('Task\x20ID\x20is\x20required');const _0x4c15ec=await fetch(API_BASE+'/tasks/'+_0x56d8d6+'/interrupt',{'method':'POST'});if(!_0x4c15ec['ok']){const _0xbb2161=await _0x4c15ec['json']()['catch'](()=>({}));throw new Error(_0xbb2161['error']||_0xbb2161['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x4c15ec['statusText']);}return await _0x4c15ec['json']();},async 'startTask'(_0x1ec50a){if(!_0x1ec50a)throw new Error('Task\x20ID\x20is\x20required');const _0x4a0a45=await fetch(API_BASE+'/tasks/'+_0x1ec50a+'/start',{'method':'POST'});if(!_0x4a0a45['ok']){const _0x17f93b=await _0x4a0a45['json']()['catch'](()=>({}));throw new Error(_0x17f93b['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4a0a45['statusText']);}return await _0x4a0a45['json']();},async 'deleteTask'(_0x3c3de9){if(!_0x3c3de9)throw new Error('Task\x20ID\x20is\x20required');const _0x65a60f=await fetch(API_BASE+'/tasks/'+_0x3c3de9,{'method':'DELETE'});if(!_0x65a60f['ok']){const _0x13c149=await _0x65a60f['json']()['catch'](()=>({}));throw new Error(_0x13c149['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x65a60f['statusText']);}return await _0x65a60f['json']();},async 'refreshTasksFromDisk'(){const _0xa20ac5=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0xa20ac5['ok']){const _0x563e9c=await _0xa20ac5['json']()['catch'](()=>({}));throw new Error(_0x563e9c['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0xa20ac5['statusText']);}return await _0xa20ac5['json']();},async 'approveTask'(_0x5bc5e9,_0x4fa32f={}){if(!_0x5bc5e9)throw new Error('Task\x20ID\x20is\x20required');const _0x27c124={'commit_message':_0x4fa32f['commit_message']||'','pull':_0x4fa32f['pull']??![],'push':_0x4fa32f['push']??![]};_0x4fa32f['new_branch']&&(_0x27c124['new_branch']=_0x4fa32f['new_branch']);const _0x2d4734=await fetch(API_BASE+'/tasks/'+_0x5bc5e9+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x27c124)});if(!_0x2d4734['ok']){const _0x1bea20=await _0x2d4734['json']()['catch'](()=>({}));let _0x49b8f9=_0x1bea20['error']||_0x1bea20['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x2d4734['statusText'];if(_0x1bea20['results']&&Array['isArray'](_0x1bea20['results'])){const _0x1e413f=_0x1bea20['results']['filter'](_0x4e1db5=>!_0x4e1db5['success']&&_0x4e1db5['error']);_0x1e413f['length']>0x0&&(_0x49b8f9=_0x1e413f[0x0]['error']);}throw new Error(_0x49b8f9);}return await _0x2d4734['json']();},async 'getPullRequestInfo'(_0x4c3ae3){if(!_0x4c3ae3)throw new Error('Task\x20ID\x20is\x20required');const _0x3d84ea=await fetch(API_BASE+'/tasks/'+_0x4c3ae3+'/pull-request-info');if(!_0x3d84ea['ok']){const _0x41b8c6=await _0x3d84ea['json']()['catch'](()=>({}));throw new Error(_0x41b8c6['error']||_0x41b8c6['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3d84ea['statusText']);}return await _0x3d84ea['json']();},async 'createPullRequests'(_0x425cf8,_0x37bdb9){if(!_0x425cf8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37bdb9||!Array['isArray'](_0x37bdb9))throw new Error('repos\x20array\x20is\x20required');const _0x58c5cb=await fetch(API_BASE+'/tasks/'+_0x425cf8+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x37bdb9})});if(!_0x58c5cb['ok']){const _0xcc9f67=await _0x58c5cb['json']()['catch'](()=>({}));let _0x5a1a9a=_0xcc9f67['error']||_0xcc9f67['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x58c5cb['statusText'];if(_0xcc9f67['results']&&Array['isArray'](_0xcc9f67['results'])){const _0x33d7e7=_0xcc9f67['results']['filter'](_0x4fa5a7=>!_0x4fa5a7['success']&&_0x4fa5a7['error']);_0x33d7e7['length']>0x0&&(_0x5a1a9a=_0x33d7e7[0x0]['error']);}throw new Error(_0x5a1a9a);}return await _0x58c5cb['json']();},async 'syncRepos'(_0x13fabd){if(!_0x13fabd)throw new Error('Task\x20ID\x20is\x20required');const _0x4d6321=await fetch(API_BASE+'/tasks/'+_0x13fabd+'/sync-repos',{'method':'POST'});if(!_0x4d6321['ok']){const _0x574cf2=await _0x4d6321['json']()['catch'](()=>({}));throw new Error(_0x574cf2['error']||_0x574cf2['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4d6321['statusText']);}return await _0x4d6321['json']();},async 'getIbmiSyncInfo'(_0x2c3132){if(!_0x2c3132)throw new Error('Task\x20ID\x20is\x20required');const _0x5ee9d3=await fetch(API_BASE+'/tasks/'+_0x2c3132+'/ibmi-sync-info');if(!_0x5ee9d3['ok']){const _0x60d2ff=await _0x5ee9d3['json']()['catch'](()=>({}));throw new Error(_0x60d2ff['error']||_0x60d2ff['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5ee9d3['json']();},async 'getSyncFiles'(_0x312b1b){if(!_0x312b1b)throw new Error('Task\x20ID\x20is\x20required');const _0x30e6d4=await fetch(API_BASE+'/tasks/'+_0x312b1b+'/sync-to-ibmi/files');if(!_0x30e6d4['ok']){const _0x1dbc2a=await _0x30e6d4['json']()['catch'](()=>({}));throw new Error(_0x1dbc2a['error']||_0x1dbc2a['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x30e6d4['json']();},async 'syncToIbmi'(_0x598fa3,_0x1a8be4,_0x3d8d38=null,_0x5883f5=null,_0x16ac4f=null){if(!_0x598fa3)throw new Error('Task\x20ID\x20is\x20required');const _0x1cbb6a={'library':_0x1a8be4};if(_0x3d8d38)_0x1cbb6a['user']=_0x3d8d38;if(_0x5883f5)_0x1cbb6a['password']=_0x5883f5;if(_0x16ac4f)_0x1cbb6a['files']=_0x16ac4f;const _0x53a64c=await fetch(API_BASE+'/tasks/'+_0x598fa3+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cbb6a)});if(!_0x53a64c['ok']){const _0x53fb41=await _0x53a64c['json']()['catch'](()=>({}));throw new Error(_0x53fb41['error']||_0x53fb41['message']||'Sync\x20failed');}return await _0x53a64c['json']();},async 'getIbmiSyncLog'(_0x83b36){if(!_0x83b36)throw new Error('Task\x20ID\x20is\x20required');const _0x4ebc9a=await fetch(API_BASE+'/tasks/'+_0x83b36+'/ibmi-sync-log');if(!_0x4ebc9a['ok']){const _0x431fd0=await _0x4ebc9a['json']()['catch'](()=>({}));throw new Error(_0x431fd0['error']||_0x431fd0['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x4ebc9a['json']();},async 'pullChanges'(_0x160cf6){if(!_0x160cf6)throw new Error('Task\x20ID\x20is\x20required');const _0x42e047=await fetch(API_BASE+'/tasks/'+_0x160cf6+'/pull-changes',{'method':'POST'});if(!_0x42e047['ok']){const _0x14ab00=await _0x42e047['json']()['catch'](()=>({}));throw new Error(_0x14ab00['error']||_0x14ab00['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x42e047['statusText']);}return await _0x42e047['json']();},async 'readFile'(_0x295da9,_0x23f4ca){if(!_0x295da9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23f4ca)throw new Error('File\x20path\x20is\x20required');const _0x46b551=await fetch(API_BASE+'/tasks/'+_0x295da9+'/files?path='+encodeURIComponent(_0x23f4ca));if(!_0x46b551['ok']){const _0x31e0f4=await _0x46b551['json']()['catch'](()=>({}));throw new Error(_0x31e0f4['error']||_0x31e0f4['message']||'Failed\x20to\x20read\x20file:\x20'+_0x46b551['statusText']);}return await _0x46b551['json']();},'getTaskFileDownloadUrl'(_0x58f072,_0x57f6db){if(!_0x58f072)throw new Error('Task\x20ID\x20is\x20required');if(!_0x57f6db)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x58f072+'/files/download?path='+encodeURIComponent(_0x57f6db);},async 'writeFile'(_0x2c3e5a,_0x29039b,_0x2ea222){if(!_0x2c3e5a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x29039b)throw new Error('File\x20path\x20is\x20required');if(_0x2ea222===undefined)throw new Error('Content\x20is\x20required');const _0x787931=await fetch(API_BASE+'/tasks/'+_0x2c3e5a+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x29039b,'content':_0x2ea222})});if(!_0x787931['ok']){const _0x244615=await _0x787931['json']()['catch'](()=>({}));throw new Error(_0x244615['error']||_0x244615['message']||'Failed\x20to\x20write\x20file:\x20'+_0x787931['statusText']);}return await _0x787931['json']();},async 'uploadTaskFiles'(_0x5d7976,_0x4d3996,_0x2e0d8d){if(!_0x5d7976)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4d3996)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2e0d8d||_0x2e0d8d['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x3ef37c=new FormData();_0x3ef37c['append']('targetDir',_0x4d3996);for(const _0x2383d9 of _0x2e0d8d){_0x3ef37c['append']('files',_0x2383d9,_0x2383d9['name']);}const _0xa50fb6=await fetch(API_BASE+'/tasks/'+_0x5d7976+'/files/upload',{'method':'POST','body':_0x3ef37c});if(!_0xa50fb6['ok']){const _0x2123e2=await _0xa50fb6['json']()['catch'](()=>({}));throw new Error(_0x2123e2['error']||_0x2123e2['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xa50fb6['statusText']);}return await _0xa50fb6['json']();},async 'deleteFile'(_0x3b2497,_0x5a36d9){if(!_0x3b2497)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a36d9)throw new Error('File\x20path\x20is\x20required');const _0x140864=await fetch(API_BASE+'/tasks/'+_0x3b2497+'/files?path='+encodeURIComponent(_0x5a36d9),{'method':'DELETE'});if(!_0x140864['ok']){const _0x14cdc4=await _0x140864['json']()['catch'](()=>({}));throw new Error(_0x14cdc4['error']||_0x14cdc4['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x140864['statusText']);}return await _0x140864['json']();},async 'discardFile'(_0x2e5d81,_0x2275db,_0x3189cc){if(!_0x2e5d81)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2275db)throw new Error('File\x20path\x20is\x20required');if(!_0x3189cc)throw new Error('Repository\x20path\x20is\x20required');const _0x4f04fe=await fetch(API_BASE+'/tasks/'+_0x2e5d81+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2275db,'repoPath':_0x3189cc})});if(!_0x4f04fe['ok']){const _0x17ec6a=await _0x4f04fe['json']()['catch'](()=>({}));throw new Error(_0x17ec6a['error']||_0x17ec6a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4f04fe['statusText']);}return await _0x4f04fe['json']();},async 'followUpTask'(_0x1e3f0a,_0x5ce96a={}){if(!_0x1e3f0a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ce96a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x341251,_0x1d243b={};if(_0x5ce96a['files']&&_0x5ce96a['files']['length']>0x0){const _0x51504d=new FormData();_0x51504d['append']('instructions',_0x5ce96a['instructions']);for(const _0x574150 of _0x5ce96a['files']){_0x51504d['append']('attachments',_0x574150);}_0x341251=_0x51504d;}else _0x1d243b['Content-Type']='application/json',_0x341251=JSON['stringify']({'instructions':_0x5ce96a['instructions']});const _0x41454f=await fetch(API_BASE+'/tasks/'+_0x1e3f0a+'/follow-up',{'method':'POST','headers':_0x1d243b,'body':_0x341251});if(!_0x41454f['ok']){const _0x5a867d=await _0x41454f['json']()['catch'](()=>({}));throw new Error(_0x5a867d['error']||_0x5a867d['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x41454f['statusText']);}return await _0x41454f['json']();},async 'getTaskRewindPoints'(_0x5df724){if(!_0x5df724)throw new Error('Task\x20ID\x20is\x20required');const _0xcea0ee=await fetch(API_BASE+'/tasks/'+_0x5df724+'/rewind-points');if(!_0xcea0ee['ok']){const _0x47bccb=await _0xcea0ee['json']()['catch'](()=>({}));throw new Error(_0x47bccb['error']||_0x47bccb['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xcea0ee['statusText']);}return await _0xcea0ee['json']();},async 'rewindTask'(_0x54df15,_0x53d9f5={}){if(!_0x54df15)throw new Error('Task\x20ID\x20is\x20required');const _0x41ccf2=Number['isInteger'](_0x53d9f5['targetFollowUpCount'])?_0x53d9f5['targetFollowUpCount']:0x0,_0x4859f5={'targetFollowUpCount':_0x41ccf2};typeof _0x53d9f5['instructions']==='string'&&_0x53d9f5['instructions']['trim']()&&(_0x4859f5['instructions']=_0x53d9f5['instructions']['trim']());typeof _0x53d9f5['rewindFiles']==='boolean'&&(_0x4859f5['rewindFiles']=_0x53d9f5['rewindFiles']);const _0x588915=await fetch(API_BASE+'/tasks/'+_0x54df15+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4859f5)});if(!_0x588915['ok']){const _0x9d5789=await _0x588915['json']()['catch'](()=>({}));throw new Error(_0x9d5789['error']||_0x9d5789['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x588915['statusText']);}return await _0x588915['json']();},async 'login'(_0x44bca6,_0x2ed539){const _0x27f0d1=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x44bca6,'password':_0x2ed539})});if(!_0x27f0d1['ok']){const _0x4d209b=await _0x27f0d1['json']();throw new Error(_0x4d209b['message']||'Login\x20failed');}return await _0x27f0d1['json']();},async 'logout'(){const _0x330d70=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x330d70['ok']){const _0x553591=await _0x330d70['json']();throw new Error(_0x553591['message']||'Logout\x20failed');}return await _0x330d70['json']();},async 'getCurrentUser'(){const _0x455e1c=await fetch(API_BASE+'/auth/me');if(!_0x455e1c['ok'])throw new Error('Not\x20authenticated');const _0x4acfe1=await _0x455e1c['json']();return _0x4acfe1['user'];},async 'getRolesInfo'(){const _0x337fb5=await fetch(API_BASE+'/users/roles');if(!_0x337fb5['ok']){const _0x4af7e1=await _0x337fb5['json']();throw new Error(_0x4af7e1['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x337fb5['json']();},async 'getUsers'(){const _0x2069af=await fetch(API_BASE+'/users');if(!_0x2069af['ok']){const _0x3df7ba=await _0x2069af['json']();throw new Error(_0x3df7ba['message']||'Failed\x20to\x20get\x20users');}return await _0x2069af['json']();},async 'getUser'(_0x1c72f4){const _0x534b14=await fetch(API_BASE+'/users/'+_0x1c72f4);if(!_0x534b14['ok']){const _0x31f1c8=await _0x534b14['json']();throw new Error(_0x31f1c8['message']||'Failed\x20to\x20get\x20user');}return await _0x534b14['json']();},async 'createUser'(_0x5b3627){const _0x34f2c0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b3627)});if(!_0x34f2c0['ok']){const _0x36ca69=await _0x34f2c0['json']();throw new Error(_0x36ca69['message']||'Failed\x20to\x20create\x20user');}return await _0x34f2c0['json']();},async 'updateUser'(_0x22c85d,_0x336626){const _0x1c3253=await fetch(API_BASE+'/users/'+_0x22c85d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336626)});if(!_0x1c3253['ok']){const _0x4dc1de=await _0x1c3253['json']();throw new Error(_0x4dc1de['message']||'Failed\x20to\x20update\x20user');}return await _0x1c3253['json']();},async 'deleteUser'(_0x31f99e){const _0x312284=await fetch(API_BASE+'/users/'+_0x31f99e,{'method':'DELETE'});if(!_0x312284['ok']){const _0x56b348=await _0x312284['json']();throw new Error(_0x56b348['message']||'Failed\x20to\x20delete\x20user');}return await _0x312284['json']();},async 'stopAllContainers'(){const _0x5971ee=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x59aebe=await _0x5971ee['json']()['catch'](()=>({}));if(!_0x5971ee['ok'])throw new Error(_0x59aebe['message']||_0x59aebe['error']||'Failed\x20to\x20stop\x20containers');return _0x59aebe;},async 'removeStoppedContainers'(){const _0x3d666c=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x45d5e8=await _0x3d666c['json']()['catch'](()=>({}));if(!_0x3d666c['ok'])throw new Error(_0x45d5e8['message']||_0x45d5e8['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x45d5e8;},async 'pruneDockerResources'(){const _0x40412c=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xf25a82=await _0x40412c['json']()['catch'](()=>({}));if(!_0x40412c['ok'])throw new Error(_0xf25a82['message']||_0xf25a82['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xf25a82;},async 'createPasswordToken'(_0x11860d,_0xd19d93='setup',_0x5b807b=![]){const _0x2644a5=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x11860d,'type':_0xd19d93,'sendEmail':_0x5b807b})});if(!_0x2644a5['ok']){const _0x8e7a14=await _0x2644a5['json']();throw new Error(_0x8e7a14['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2644a5['json']();},async 'getEmailConfig'(){const _0x2ff86d=await fetch(API_BASE+'/password/email-config');if(!_0x2ff86d['ok']){const _0x5c00c6=await _0x2ff86d['json']();throw new Error(_0x5c00c6['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2ff86d['json']();},async 'updateTaskName'(_0x2c18af,_0x16252a){const _0x1a16d2=await fetch(API_BASE+'/tasks/'+_0x2c18af,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x16252a})});if(!_0x1a16d2['ok']){const _0x486537=await _0x1a16d2['json']();throw new Error(_0x486537['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1a16d2['json']();},async 'pinTask'(_0x19c533,_0x50e4a1,_0x137902=null){if(!_0x19c533)throw new Error('Task\x20ID\x20is\x20required');const _0x3072ec={'pinned':_0x50e4a1};_0x137902&&_0x137902['length']>0x0&&(_0x3072ec['additionalTaskIds']=_0x137902);const _0x5afee4=await fetch(API_BASE+'/tasks/'+_0x19c533+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3072ec)});if(!_0x5afee4['ok']){const _0x2eb511=await _0x5afee4['json']();throw new Error(_0x2eb511['error']||'Failed\x20to\x20pin\x20task');}return await _0x5afee4['json']();},async 'setTaskWinner'(_0xb3d47f,_0x3be891,_0x551cca=[]){if(!_0xb3d47f)throw new Error('Task\x20ID\x20is\x20required');const _0x2599a5=await fetch(API_BASE+'/tasks/'+_0xb3d47f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3be891,'siblings':_0x551cca})});if(!_0x2599a5['ok']){const _0x199951=await _0x2599a5['json']();throw new Error(_0x199951['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2599a5['json']();},async 'setTaskLoser'(_0x45b06e,_0x2b1389){if(!_0x45b06e)throw new Error('Task\x20ID\x20is\x20required');const _0x2049c4=await fetch(API_BASE+'/tasks/'+_0x45b06e+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2b1389})});if(!_0x2049c4['ok']){const _0x45aea6=await _0x2049c4['json']();throw new Error(_0x45aea6['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2049c4['json']();},async 'createTaskGroup'(_0x111faf){const _0x1d98bb=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x111faf)});if(!_0x1d98bb['ok']){const _0x4751a3=await _0x1d98bb['json']();throw new Error(_0x4751a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x1d98bb['json']();},async 'getTaskGroups'(_0x2dc4de={}){const _0xb2bacd=new URLSearchParams();if(_0x2dc4de['userId'])_0xb2bacd['set']('userId',String(_0x2dc4de['userId']));if(_0x2dc4de['status'])_0xb2bacd['set']('status',String(_0x2dc4de['status']));if(_0x2dc4de['limit'])_0xb2bacd['set']('limit',String(_0x2dc4de['limit']));const _0xfbe2ac=API_BASE+'/tasks/groups'+(_0xb2bacd['toString']()?'?'+_0xb2bacd['toString']():''),_0x2b9a23=await fetch(_0xfbe2ac);if(!_0x2b9a23['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2b9a23['json']();},async 'getTaskGroup'(_0x360d97){const _0x5a8bef=await fetch(API_BASE+'/tasks/groups/'+_0x360d97);if(!_0x5a8bef['ok']){const _0x58315e=await _0x5a8bef['json']();throw new Error(_0x58315e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x5a8bef['json']();},async 'updateTaskGroup'(_0x20700c,_0x50833c,_0x34494f){const _0x2e9d00=await fetch(API_BASE+'/tasks/'+_0x20700c+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50833c,'groupIndex':_0x34494f})});if(!_0x2e9d00['ok']){const _0x596ed0=await _0x2e9d00['json']();throw new Error(_0x596ed0['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2e9d00['json']();},async 'removeTaskFromGroup'(_0x5b993c){return this['updateTaskGroup'](_0x5b993c,null,null);},async 'deleteTaskGroup'(_0x50198e,_0x40cecd=![]){const _0x55aeab=_0x40cecd?'?deleteTasks=true':'',_0x13bb47=await fetch(API_BASE+'/tasks/groups/'+_0x50198e+_0x55aeab,{'method':'DELETE'});if(!_0x13bb47['ok']){const _0x1d889e=await _0x13bb47['json']();throw new Error(_0x1d889e['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x4552b9,_0x1baed7){const _0xc393f2=await fetch(API_BASE+'/tasks/groups/'+_0x4552b9+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x1baed7})});if(!_0xc393f2['ok']){const _0x2c5066=await _0xc393f2['json']();throw new Error(_0x2c5066['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xc393f2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x37375d){if(!_0x37375d)throw new Error('Task\x20ID\x20is\x20required');const _0x11e421=await fetch(API_BASE+'/tasks/'+_0x37375d+'/comments');if(!_0x11e421['ok']){const _0x49ba8c=await _0x11e421['json']()['catch'](()=>({}));throw new Error(_0x49ba8c['error']||'Failed\x20to\x20get\x20comments');}return await _0x11e421['json']();},async 'addComment'(_0x191c53,_0x2d24cf){if(!_0x191c53)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d24cf)throw new Error('Comment\x20content\x20is\x20required');const _0xa11d57=await fetch(API_BASE+'/tasks/'+_0x191c53+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2d24cf})});if(!_0xa11d57['ok']){const _0x429ed2=await _0xa11d57['json']()['catch'](()=>({}));throw new Error(_0x429ed2['error']||'Failed\x20to\x20add\x20comment');}return await _0xa11d57['json']();},async 'updateComment'(_0x407f47,_0x445141,_0x1d4d89){if(!_0x407f47)throw new Error('Task\x20ID\x20is\x20required');if(!_0x445141)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1d4d89)throw new Error('Comment\x20content\x20is\x20required');const _0x1fa569=await fetch(API_BASE+'/tasks/'+_0x407f47+'/comments/'+_0x445141,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d4d89})});if(!_0x1fa569['ok']){const _0xb48f61=await _0x1fa569['json']()['catch'](()=>({}));throw new Error(_0xb48f61['error']||'Failed\x20to\x20update\x20comment');}return await _0x1fa569['json']();},async 'deleteComment'(_0x5e972d,_0x3790de){if(!_0x5e972d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3790de)throw new Error('Comment\x20ID\x20is\x20required');const _0x203f84=await fetch(API_BASE+'/tasks/'+_0x5e972d+'/comments/'+_0x3790de,{'method':'DELETE'});if(!_0x203f84['ok']){const _0x3892b6=await _0x203f84['json']()['catch'](()=>({}));throw new Error(_0x3892b6['error']||'Failed\x20to\x20delete\x20comment');}return await _0x203f84['json']();},async 'createObjective'(_0x598c06){const _0x67eed7={'objective':!![],'name':_0x598c06['name']||'','environment':_0x598c06['environment']||null,'agents':_0x598c06['agents']||[],'branches':_0x598c06['branches']||{},'isPinned':_0x598c06['isPinned']||![],'parentObjectiveId':_0x598c06['parentObjectiveId']||null,'env_vars':_0x598c06['envVars']||{},'parameters':{'instructions':_0x598c06['instructions']||''},'files':_0x598c06['files']||[],'jira':_0x598c06['jira']||null};return this['createTask'](_0x67eed7);},async 'updateObjective'(_0x5a2e52,_0x2cec87,_0x2ab3ba=[],_0x5d035c=[]){let _0x1c4487,_0x1b4b50={};const _0x1b5ddd={..._0x2cec87};_0x5d035c&&_0x5d035c['length']>0x0&&(_0x1b5ddd['removeAttachments']=_0x5d035c);if(_0x2ab3ba&&_0x2ab3ba['length']>0x0){const _0x78a83f=new FormData();for(const [_0x33c122,_0x4b18d2]of Object['entries'](_0x1b5ddd)){if(_0x4b18d2==null)continue;typeof _0x4b18d2==='object'?_0x78a83f['append'](_0x33c122,JSON['stringify'](_0x4b18d2)):_0x78a83f['append'](_0x33c122,String(_0x4b18d2));}for(const _0x10fc1c of _0x2ab3ba){_0x78a83f['append']('attachments',_0x10fc1c);}_0x1c4487=_0x78a83f;}else _0x1b4b50['Content-Type']='application/json',_0x1c4487=JSON['stringify'](_0x1b5ddd);const _0x28d716=await fetch(API_BASE+'/tasks/'+_0x5a2e52,{'method':'PATCH','headers':_0x1b4b50,'body':_0x1c4487});if(!_0x28d716['ok']){const _0x3db064=await _0x28d716['json']();throw new Error(_0x3db064['error']||'Failed\x20to\x20update\x20objective');}return await _0x28d716['json']();},async 'deleteObjective'(_0xb09d94){return this['deleteTask'](_0xb09d94);},async 'launchObjective'(_0x383a8a,_0x558f9e={}){const _0x12a286=await fetch(API_BASE+'/tasks/'+_0x383a8a+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x558f9e)});if(!_0x12a286['ok']){const _0x2aa4bd=await _0x12a286['json']();throw new Error(_0x2aa4bd['error']||'Failed\x20to\x20launch\x20objective');}return await _0x12a286['json']();},async 'getObjectiveAttachments'(_0x365f34){return this['getTaskAttachments'](_0x365f34);},async 'createJudgeTask'({environment:_0x484bf5,judgeAgent:_0x30f5cc,groupId:_0x4283e2,taskIds:_0x590ce4,judgeCustomInstructions:_0xa0d4e7,isPinned:_0x37a681}){const _0x20b92c=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x484bf5,'judgeAgent':_0x30f5cc,'groupId':_0x4283e2,'taskIds':_0x590ce4,'judgeCustomInstructions':_0xa0d4e7,'isPinned':_0x37a681})});if(!_0x20b92c['ok']){const _0x180cb7=await _0x20b92c['json']();throw new Error(_0x180cb7['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x20b92c['json']();},async 'getJudgeTasks'(_0x48bd61){const _0x4f7d0c=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x48bd61));if(!_0x4f7d0c['ok']){const _0x788803=await _0x4f7d0c['json']();throw new Error(_0x788803['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4f7d0c['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1a3070,_0x14bda5,_0x9b4492=''){const _0xbb18b3=await fetch(API_BASE+'/tasks/'+_0x1a3070+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14bda5,'customPreamble':_0x9b4492})});if(!_0xbb18b3['ok']){const _0x2d680a=await _0xbb18b3['json']();throw new Error(_0x2d680a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0xbb18b3['json']();},async 'getJiraConfig'(){const _0x3e5f8c=await fetch(API_BASE+'/jira/config');if(!_0x3e5f8c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x3e5f8c['json']();},async 'getJiraIssue'(_0x1c3c22){const _0x4b5e13=await fetch(API_BASE+'/jira/issues/'+_0x1c3c22);if(!_0x4b5e13['ok']){const _0x2b1524=await _0x4b5e13['json']()['catch'](()=>({}));throw new Error(_0x2b1524['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4b5e13['statusText']);}return await _0x4b5e13['json']();},async 'searchJiraIssues'(_0x54e077,_0x44140a=0x14){const _0xcdd605=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x54e077,'maxResults':_0x44140a})});if(!_0xcdd605['ok']){const _0x16fb44=await _0xcdd605['json']()['catch'](()=>({}));throw new Error(_0x16fb44['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xcdd605['statusText']);}return await _0xcdd605['json']();},async 'postJiraComment'(_0x537221,_0xeea3a6){const _0x53dbf7=await fetch(API_BASE+'/jira/issues/'+_0x537221+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xeea3a6})});if(!_0x53dbf7['ok']){const _0x325168=await _0x53dbf7['json']()['catch'](()=>({}));throw new Error(_0x325168['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x53dbf7['statusText']);}return await _0x53dbf7['json']();},async 'getJiraComments'(_0x25473a){const _0x225564=await fetch(API_BASE+'/jira/issues/'+_0x25473a+'/comments');if(!_0x225564['ok']){const _0x25d8e9=await _0x225564['json']()['catch'](()=>({}));throw new Error(_0x25d8e9['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x225564['statusText']);}return await _0x225564['json']();},async 'promptParameter'({environment:_0xadeb33,command:_0x37317c,parser:parser='json'}){const _0x261577=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xadeb33,'command':_0x37317c,'parser':parser})});if(!_0x261577['ok']){const _0x28c258=await _0x261577['json']()['catch'](()=>({}));throw new Error(_0x28c258['message']||_0x28c258['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x261577['statusText']);}return await _0x261577['json']();},async 'promptParameterStream'(_0x3c0c9a,_0x3f89dc){const _0x5c09ed=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c0c9a)});if(!_0x5c09ed['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x5c09ed['statusText']);const _0x4b64b5=_0x5c09ed['body']['getReader'](),_0xbd794c=new TextDecoder();let _0x3cf11d='';return new Promise((_0x591f10,_0x114e6e)=>{const _0x270cef=async()=>{try{const {done:_0x5dd171,value:_0x57dff6}=await _0x4b64b5['read']();if(_0x5dd171)return;_0x3cf11d+=_0xbd794c['decode'](_0x57dff6,{'stream':!![]});const _0xa86b82=_0x3cf11d['split']('\x0a\x0a');_0x3cf11d=_0xa86b82['pop']()||'';for(const _0x1dd1ba of _0xa86b82){if(!_0x1dd1ba['trim']())continue;const _0x5d7861=_0x1dd1ba['split']('\x0a');let _0x2d7c07='message',_0x5235df='';for(const _0x273a45 of _0x5d7861){if(_0x273a45['startsWith']('event:'))_0x2d7c07=_0x273a45['substring'](0x6)['trim']();else _0x273a45['startsWith']('data:')&&(_0x5235df=_0x273a45['substring'](0x5)['trim']());}if(!_0x5235df)continue;try{const _0x4f893c=JSON['parse'](_0x5235df);if(_0x2d7c07==='progress'&&_0x3f89dc)_0x3f89dc(_0x4f893c['stage'],_0x4f893c['message']);else{if(_0x2d7c07==='result'){_0x591f10(_0x4f893c);return;}else{if(_0x2d7c07==='error'){let _0x184051=_0x4f893c['message']||_0x4f893c['error']||'Prompt\x20command\x20failed';_0x4f893c['rawOutput']&&(_0x184051+='\x0a\x0aRaw\x20output:\x0a'+_0x4f893c['rawOutput']);_0x114e6e(new Error(_0x184051));return;}}}}catch(_0x1d5e9c){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1d5e9c),console['error']('Event\x20type:',_0x2d7c07),console['error']('Event\x20data:',_0x5235df),console['error']('First\x20200\x20chars:',_0x5235df['substring'](0x0,0xc8)),_0x114e6e(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1d5e9c['message']+'\x0a\x0aData:\x20'+_0x5235df['substring'](0x0,0x1f4)));return;}}_0x270cef();}catch(_0x4e777b){_0x114e6e(_0x4e777b);}};_0x270cef();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xd20658){const _0x180568=await fetch(''+API_BASE+_0xd20658);if(!_0x180568['ok']){const _0x22c9eb=await _0x180568['json']()['catch'](()=>({'error':_0x180568['statusText']})),_0x40ef63=new Error(_0x22c9eb['error']||_0x22c9eb['message']||_0x180568['statusText']);if(_0x22c9eb['detail']!==undefined)_0x40ef63['detail']=_0x22c9eb['detail'];throw _0x40ef63;}return await _0x180568['json']();},async 'post'(_0x55a0f7,_0x2d2525){const _0x553c66=await fetch(''+API_BASE+_0x55a0f7,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d2525)});if(!_0x553c66['ok']){const _0x5dc01c=await _0x553c66['json']()['catch'](()=>({'error':_0x553c66['statusText']})),_0x1cf9b9=new Error(_0x5dc01c['error']||_0x5dc01c['message']||_0x553c66['statusText']);if(_0x5dc01c['detail']!==undefined)_0x1cf9b9['detail']=_0x5dc01c['detail'];throw _0x1cf9b9;}return await _0x553c66['json']();},async 'put'(_0x5db327,_0x546895){const _0x598dc9=await fetch(''+API_BASE+_0x5db327,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x546895)});if(!_0x598dc9['ok']){const _0x4c0ee7=await _0x598dc9['json']()['catch'](()=>({'error':_0x598dc9['statusText']})),_0x147b4e=new Error(_0x4c0ee7['error']||_0x4c0ee7['message']||_0x598dc9['statusText']);if(_0x4c0ee7['detail']!==undefined)_0x147b4e['detail']=_0x4c0ee7['detail'];throw _0x147b4e;}return await _0x598dc9['json']();},async 'delete'(_0xac8916,_0x502f18){const _0x2ec6de={'method':'DELETE'};_0x502f18&&(_0x2ec6de['headers']={'Content-Type':'application/json'},_0x2ec6de['body']=JSON['stringify'](_0x502f18));const _0x52a6b0=await fetch(''+API_BASE+_0xac8916,_0x2ec6de);if(!_0x52a6b0['ok']){const _0x20c900=await _0x52a6b0['json']()['catch'](()=>({'error':_0x52a6b0['statusText']})),_0x33d7b1=new Error(_0x20c900['error']||_0x20c900['message']||_0x52a6b0['statusText']);if(_0x20c900['detail']!==undefined)_0x33d7b1['detail']=_0x20c900['detail'];throw _0x33d7b1;}return await _0x52a6b0['json']();},async 'getSkills'(){const _0x41fad3=await fetch(API_BASE+'/skills');if(!_0x41fad3['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x41fad3['statusText']);return await _0x41fad3['json']();},async 'getSkill'(_0x2632b8){const _0x213ea1=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2632b8));if(!_0x213ea1['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x213ea1['statusText']);return await _0x213ea1['json']();},async 'createSkill'(_0x559888){const _0x3b78ad=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x559888)});if(!_0x3b78ad['ok']){const _0x2baa18=await _0x3b78ad['json']()['catch'](()=>({'error':_0x3b78ad['statusText']})),_0x3ed6d9=new Error(_0x2baa18['error']||_0x2baa18['message']||_0x3b78ad['statusText']);if(_0x2baa18['detail']!==undefined)_0x3ed6d9['detail']=_0x2baa18['detail'];throw _0x3ed6d9;}return await _0x3b78ad['json']();},async 'updateSkill'(_0x16209c,_0x206422){const _0x6f3362=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x16209c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x206422)});if(!_0x6f3362['ok']){const _0x28e9dd=await _0x6f3362['json']()['catch'](()=>({'error':_0x6f3362['statusText']})),_0x897dbb=new Error(_0x28e9dd['error']||_0x28e9dd['message']||_0x6f3362['statusText']);if(_0x28e9dd['detail']!==undefined)_0x897dbb['detail']=_0x28e9dd['detail'];throw _0x897dbb;}return await _0x6f3362['json']();},async 'deleteSkill'(_0x433fa9){const _0x13703=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x433fa9),{'method':'DELETE'});if(!_0x13703['ok']){const _0x55b363=await _0x13703['json']()['catch'](()=>({'error':_0x13703['statusText']})),_0x3f0dc3=new Error(_0x55b363['error']||_0x55b363['message']||_0x13703['statusText']);if(_0x55b363['detail']!==undefined)_0x3f0dc3['detail']=_0x55b363['detail'];throw _0x3f0dc3;}return await _0x13703['json']();},async 'getSkillFile'(_0x17e140,_0x35dbba){const _0x5a84fe=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17e140)+'/files/'+_0x35dbba);if(!_0x5a84fe['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5a84fe['statusText']);return await _0x5a84fe['json']();},async 'saveSkillFile'(_0x25dded,_0x7f444a,_0x23c628){const _0x3c0fc5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x25dded)+'/files/'+_0x7f444a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x23c628})});if(!_0x3c0fc5['ok']){const _0x6b01=await _0x3c0fc5['json']()['catch'](()=>({'error':_0x3c0fc5['statusText']})),_0x25765d=new Error(_0x6b01['error']||_0x6b01['message']||_0x3c0fc5['statusText']);if(_0x6b01['detail']!==undefined)_0x25765d['detail']=_0x6b01['detail'];throw _0x25765d;}return await _0x3c0fc5['json']();},async 'deleteSkillFile'(_0x4b9509,_0x4fe70a){const _0x3d1cc2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b9509)+'/files/'+_0x4fe70a,{'method':'DELETE'});if(!_0x3d1cc2['ok']){const _0x557260=await _0x3d1cc2['json']()['catch'](()=>({'error':_0x3d1cc2['statusText']})),_0x1fb12e=new Error(_0x557260['error']||_0x557260['message']||_0x3d1cc2['statusText']);if(_0x557260['detail']!==undefined)_0x1fb12e['detail']=_0x557260['detail'];throw _0x1fb12e;}return await _0x3d1cc2['json']();},async 'pullSkills'(){const _0x296bbc=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x296bbc['ok']){const _0x237c30=await _0x296bbc['json']()['catch'](()=>({'error':_0x296bbc['statusText']})),_0x4dd749=new Error(_0x237c30['error']||_0x237c30['message']||_0x296bbc['statusText']);if(_0x237c30['detail']!==undefined)_0x4dd749['detail']=_0x237c30['detail'];throw _0x4dd749;}return await _0x296bbc['json']();},async 'commitSkills'(_0x34920d,_0x3ef7de={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3ef7de,_0x129738=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x34920d,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x129738['ok']){const _0x455124=await _0x129738['json']()['catch'](()=>({'error':_0x129738['statusText']})),_0x3591da=new Error(_0x455124['error']||_0x455124['message']||_0x129738['statusText']);if(_0x455124['detail']!==undefined)_0x3591da['detail']=_0x455124['detail'];throw _0x3591da;}return await _0x129738['json']();},async 'discardSkillsChanges'(){const _0x399e19=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x399e19['ok']){const _0x57cf4c=await _0x399e19['json']()['catch'](()=>({'error':_0x399e19['statusText']})),_0x2eb9b7=new Error(_0x57cf4c['error']||_0x57cf4c['message']||_0x399e19['statusText']);if(_0x57cf4c['detail']!==undefined)_0x2eb9b7['detail']=_0x57cf4c['detail'];throw _0x2eb9b7;}return await _0x399e19['json']();},async 'getSkillCatalog'(){const _0x5b7132=await fetch(API_BASE+'/external-skills/catalog');if(!_0x5b7132['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x5b7132['statusText']);return await _0x5b7132['json']();},async 'getImportedSkillsRegistry'(){const _0x137238=await fetch(API_BASE+'/external-skills/registry');if(!_0x137238['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x137238['statusText']);return await _0x137238['json']();},async 'importCatalogSkill'(_0x2ff205){const _0x50f88d=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2ff205})});if(!_0x50f88d['ok']){const _0x41d5de=await _0x50f88d['json']()['catch'](()=>({'error':_0x50f88d['statusText']})),_0x9b7f17=new Error(_0x41d5de['error']||_0x41d5de['message']||_0x50f88d['statusText']);if(_0x41d5de['detail']!==undefined)_0x9b7f17['detail']=_0x41d5de['detail'];throw _0x9b7f17;}return await _0x50f88d['json']();},async 'importSkillFromGit'(_0x536a93,_0x215b61,_0x3d1f42='main',_0x564ec4=null){const _0x14b286=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x536a93,'skillPath':_0x215b61,'branch':_0x3d1f42,'skillId':_0x564ec4})});if(!_0x14b286['ok']){const _0x3806bf=await _0x14b286['json']()['catch'](()=>({'error':_0x14b286['statusText']})),_0x172a48=new Error(_0x3806bf['error']||_0x3806bf['message']||_0x14b286['statusText']);if(_0x3806bf['detail']!==undefined)_0x172a48['detail']=_0x3806bf['detail'];throw _0x172a48;}return await _0x14b286['json']();},async 'probeMarketplace'(_0xa926f1,_0x1dffb6='main'){const _0x4da08d=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xa926f1,'branch':_0x1dffb6})});if(!_0x4da08d['ok']){const _0x8413ad=await _0x4da08d['json']()['catch'](()=>({'error':_0x4da08d['statusText']})),_0x3e5b76=new Error(_0x8413ad['error']||_0x8413ad['message']||_0x4da08d['statusText']);if(_0x8413ad['detail']!==undefined)_0x3e5b76['detail']=_0x8413ad['detail'];throw _0x3e5b76;}return await _0x4da08d['json']();},async 'importMarketplaceBundle'(_0x432464,_0x1eb4fd,_0x39b275,_0x196a52=null){const _0x1af5cc=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x432464,'branch':_0x1eb4fd,'bundleId':_0x39b275,'selectedSkills':_0x196a52})});if(!_0x1af5cc['ok']){const _0x1e70a6=await _0x1af5cc['json']()['catch'](()=>({'error':_0x1af5cc['statusText']})),_0x48b28d=new Error(_0x1e70a6['error']||_0x1e70a6['message']||_0x1af5cc['statusText']);if(_0x1e70a6['detail']!==undefined)_0x48b28d['detail']=_0x1e70a6['detail'];throw _0x48b28d;}return await _0x1af5cc['json']();},async 'importSkillFromFolder'(_0x2de262,_0x2122ba=null){const _0x4ed6f7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2de262,'skillId':_0x2122ba})});if(!_0x4ed6f7['ok']){const _0x189ecd=await _0x4ed6f7['json']()['catch'](()=>({'error':_0x4ed6f7['statusText']})),_0x214c15=new Error(_0x189ecd['error']||_0x189ecd['message']||_0x4ed6f7['statusText']);if(_0x189ecd['detail']!==undefined)_0x214c15['detail']=_0x189ecd['detail'];throw _0x214c15;}return await _0x4ed6f7['json']();},async 'importSkillFromNpm'(_0x54ed27,_0x4011d5='latest',_0x3239ac=null,_0x386f35=null){const _0x25edc0=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x54ed27,'version':_0x4011d5,'skillId':_0x3239ac,'registry':_0x386f35})});if(!_0x25edc0['ok']){const _0x519a9f=await _0x25edc0['json']()['catch'](()=>({'error':_0x25edc0['statusText']})),_0x219e17=new Error(_0x519a9f['error']||_0x519a9f['message']||_0x25edc0['statusText']);if(_0x519a9f['detail']!==undefined)_0x219e17['detail']=_0x519a9f['detail'];throw _0x219e17;}return await _0x25edc0['json']();},async 'checkSkillUpdates'(_0x164760){const _0x2b14db=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x164760)+'/check-updates',{'method':'POST'});if(!_0x2b14db['ok']){const _0x162df2=await _0x2b14db['json']()['catch'](()=>({'error':_0x2b14db['statusText']})),_0x5989d9=new Error(_0x162df2['error']||_0x162df2['message']||_0x2b14db['statusText']);if(_0x162df2['detail']!==undefined)_0x5989d9['detail']=_0x162df2['detail'];throw _0x5989d9;}return await _0x2b14db['json']();},async 'updateExternalSkill'(_0x2e0252){const _0x26c1cc=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e0252)+'/update',{'method':'POST'});if(!_0x26c1cc['ok']){const _0x262cce=await _0x26c1cc['json']()['catch'](()=>({'error':_0x26c1cc['statusText']})),_0x39bb10=new Error(_0x262cce['error']||_0x262cce['message']||_0x26c1cc['statusText']);if(_0x262cce['detail']!==undefined)_0x39bb10['detail']=_0x262cce['detail'];throw _0x39bb10;}return await _0x26c1cc['json']();},async 'updateSkillFlags'(_0x48b1fc,_0x4e4730){const _0x1efcd9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48b1fc)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4e4730})});if(!_0x1efcd9['ok']){const _0x1a86ad=await _0x1efcd9['json']()['catch'](()=>({'error':_0x1efcd9['statusText']})),_0x37c39c=new Error(_0x1a86ad['error']||_0x1a86ad['message']||_0x1efcd9['statusText']);if(_0x1a86ad['detail']!==undefined)_0x37c39c['detail']=_0x1a86ad['detail'];throw _0x37c39c;}return await _0x1efcd9['json']();},async 'removeFromImportedRegistry'(_0x330d72){const _0x10f501=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x330d72)+'/registry',{'method':'DELETE'});if(!_0x10f501['ok']){const _0x31e739=await _0x10f501['json']()['catch'](()=>({'error':_0x10f501['statusText']})),_0x58291d=new Error(_0x31e739['error']||_0x31e739['message']||_0x10f501['statusText']);if(_0x31e739['detail']!==undefined)_0x58291d['detail']=_0x31e739['detail'];throw _0x58291d;}return await _0x10f501['json']();},async 'getTeams'(){const _0x4ec490=await fetch(API_BASE+'/teams');if(!_0x4ec490['ok']){const _0x175474=await _0x4ec490['json']()['catch'](()=>({'message':_0x4ec490['statusText']}));throw new Error(_0x175474['message']||'Failed\x20to\x20get\x20teams');}return await _0x4ec490['json']();},async 'getTeam'(_0x3b2d82){const _0x3a50f2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3b2d82));if(!_0x3a50f2['ok']){const _0x55e95d=await _0x3a50f2['json']()['catch'](()=>({'message':_0x3a50f2['statusText']}));throw new Error(_0x55e95d['message']||'Failed\x20to\x20get\x20team');}return await _0x3a50f2['json']();},async 'createTeam'(_0xcdd67b){const _0x766aae=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcdd67b)});if(!_0x766aae['ok']){const _0x398853=await _0x766aae['json']()['catch'](()=>({'message':_0x766aae['statusText']}));throw new Error(_0x398853['message']||'Failed\x20to\x20create\x20team');}return await _0x766aae['json']();},async 'updateTeam'(_0x15a0d1,_0x2e3085){const _0x4241e8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x15a0d1),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e3085)});if(!_0x4241e8['ok']){const _0x350c80=await _0x4241e8['json']()['catch'](()=>({'message':_0x4241e8['statusText']}));throw new Error(_0x350c80['message']||'Failed\x20to\x20update\x20team');}return await _0x4241e8['json']();},async 'deleteTeam'(_0xd6a32b){const _0x2cc9d2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xd6a32b),{'method':'DELETE'});if(!_0x2cc9d2['ok']){const _0x51da6c=await _0x2cc9d2['json']()['catch'](()=>({'message':_0x2cc9d2['statusText']}));throw new Error(_0x51da6c['message']||'Failed\x20to\x20delete\x20team');}return await _0x2cc9d2['json']();},async 'addTeamMember'(_0x27fada,_0x3fa5cc){const _0x16f8c5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x27fada)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3fa5cc})});if(!_0x16f8c5['ok']){const _0x3abd7c=await _0x16f8c5['json']()['catch'](()=>({'message':_0x16f8c5['statusText']}));throw new Error(_0x3abd7c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x16f8c5['json']();},async 'removeTeamMember'(_0x4823f3,_0x553962){const _0x5d78fa=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4823f3)+'/members/'+encodeURIComponent(_0x553962),{'method':'DELETE'});if(!_0x5d78fa['ok']){const _0x2435bd=await _0x5d78fa['json']()['catch'](()=>({'message':_0x5d78fa['statusText']}));throw new Error(_0x2435bd['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x5d78fa['json']();},async 'getBindings'(_0x295fa8={}){const _0xbedc88=new URLSearchParams();if(_0x295fa8['resource_type'])_0xbedc88['set']('resource_type',_0x295fa8['resource_type']);if(_0x295fa8['resource_id'])_0xbedc88['set']('resource_id',_0x295fa8['resource_id']);if(_0x295fa8['subject_type'])_0xbedc88['set']('subject_type',_0x295fa8['subject_type']);if(_0x295fa8['subject_id'])_0xbedc88['set']('subject_id',_0x295fa8['subject_id']);const _0x13f0a8=_0xbedc88['toString'](),_0x8f8606=await fetch(API_BASE+'/bindings'+(_0x13f0a8?'?'+_0x13f0a8:''));if(!_0x8f8606['ok']){const _0x16b6f2=await _0x8f8606['json']()['catch'](()=>({'message':_0x8f8606['statusText']}));throw new Error(_0x16b6f2['message']||'Failed\x20to\x20get\x20bindings');}return await _0x8f8606['json']();},async 'createBinding'(_0x12f47b){const _0x366318=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12f47b)});if(!_0x366318['ok']){const _0x20e237=await _0x366318['json']()['catch'](()=>({'message':_0x366318['statusText']}));throw new Error(_0x20e237['message']||'Failed\x20to\x20create\x20binding');}return await _0x366318['json']();},async 'updateBinding'(_0x4fc73d,_0x5b39f8){const _0x276c30=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4fc73d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b39f8)});if(!_0x276c30['ok']){const _0x5a9918=await _0x276c30['json']()['catch'](()=>({'message':_0x276c30['statusText']}));throw new Error(_0x5a9918['message']||'Failed\x20to\x20update\x20binding');}return await _0x276c30['json']();},async 'deleteBinding'(_0x2b6467){const _0x24f299=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2b6467),{'method':'DELETE'});if(!_0x24f299['ok']){const _0x4e92c6=await _0x24f299['json']()['catch'](()=>({'message':_0x24f299['statusText']}));throw new Error(_0x4e92c6['message']||'Failed\x20to\x20delete\x20binding');}return await _0x24f299['json']();},async 'getRoleDefinitions'(){const _0x2f3d57=await fetch(API_BASE+'/roles');if(!_0x2f3d57['ok']){const _0x4eb6b4=await _0x2f3d57['json']()['catch'](()=>({'message':_0x2f3d57['statusText']}));throw new Error(_0x4eb6b4['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2f3d57['json']();},async 'getRoleDefinition'(_0x56fa0e){const _0x55f9ae=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x56fa0e));if(!_0x55f9ae['ok']){const _0x3f0879=await _0x55f9ae['json']()['catch'](()=>({'message':_0x55f9ae['statusText']}));throw new Error(_0x3f0879['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x55f9ae['json']();},async 'createRoleDefinition'(_0x1271e3){const _0x482a9f=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1271e3)});if(!_0x482a9f['ok']){const _0x2b02f9=await _0x482a9f['json']()['catch'](()=>({'message':_0x482a9f['statusText']}));throw new Error(_0x2b02f9['message']||_0x2b02f9['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x482a9f['json']();},async 'updateRoleDefinition'(_0x5b861e,_0x10506d){const _0x23c451=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5b861e),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10506d)});if(!_0x23c451['ok']){const _0x5eedd0=await _0x23c451['json']()['catch'](()=>({'message':_0x23c451['statusText']}));throw new Error(_0x5eedd0['message']||_0x5eedd0['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x23c451['json']();},async 'deleteRoleDefinition'(_0x425aa7){const _0x5241d9=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x425aa7),{'method':'DELETE'});if(!_0x5241d9['ok']){const _0x975d61=await _0x5241d9['json']()['catch'](()=>({'message':_0x5241d9['statusText']}));throw new Error(_0x975d61['message']||_0x975d61['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x5241d9['json']();},async 'getAvailablePermissions'(){const _0x5de42a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5de42a['ok']){const _0x4a923f=await _0x5de42a['json']()['catch'](()=>({'message':_0x5de42a['statusText']}));throw new Error(_0x4a923f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5de42a['json']();},async 'getGitProviderAllowedTeams'(_0x14e463){const _0x49b567=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x14e463)+'/allowed-teams');if(!_0x49b567['ok']){const _0x2f6da4=await _0x49b567['json']()['catch'](()=>({'message':_0x49b567['statusText']}));throw new Error(_0x2f6da4['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x49b567['json']();},async 'setGitProviderAllowedTeams'(_0x24c055,_0x2a73d7){const _0x61cf47=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x24c055)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2a73d7})});if(!_0x61cf47['ok']){const _0x4dcfc1=await _0x61cf47['json']()['catch'](()=>({'message':_0x61cf47['statusText']}));throw new Error(_0x4dcfc1['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x61cf47['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 _0x4fa871=toastState['baseBottom'];toastState['toasts']['forEach'](_0x3516c5=>{_0x3516c5['el']['style']['bottom']=_0x4fa871+'px';const _0xfec112=_0x3516c5['el']['offsetHeight']||toastState['defaultHeight'];_0x4fa871+=_0xfec112+toastState['gap'];});});}function removeToastById(_0x3c438d){const _0x46f2b5=toastState['toasts']['findIndex'](_0x203878=>_0x203878['id']===_0x3c438d);if(_0x46f2b5===-0x1)return;const _0x24757d=toastState['toasts'][_0x46f2b5];if(_0x24757d['timeoutId'])clearTimeout(_0x24757d['timeoutId']);_0x24757d['el']['classList']['remove']('show'),setTimeout(()=>_0x24757d['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x46f2b5,0x1),repositionAllToasts();}function registerToast(_0x280b2b){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x280b2b),repositionAllToasts(),_0x280b2b['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(_0x3e6d68){if(_0x3e6d68===null||_0x3e6d68===undefined)return'';return String(_0x3e6d68)['replace'](/&/g,'&')['replace'](/</g,'<')['replace'](/>/g,'>')['replace'](/"/g,'"')['replace'](/'/g,''');}function getMarkdownCodeBlockPayload(_0xac8c54,_0x28910a){if(_0xac8c54&&typeof _0xac8c54==='object'&&!Array['isArray'](_0xac8c54))return{'code':typeof _0xac8c54['text']==='string'?_0xac8c54['text']:'','language':typeof _0xac8c54['lang']==='string'?_0xac8c54['lang']:''};return{'code':typeof _0xac8c54==='string'?_0xac8c54:'','language':typeof _0x28910a==='string'?_0x28910a:''};}function buildMermaidBlock(_0x3ade44){const _0x100f23=String(_0x3ade44||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x100f23))+'\x22>'+escapeHtmlValue(_0x100f23)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x39370b=new marked['Renderer'](),_0x3e015c=_0x39370b['code']['bind'](_0x39370b);return _0x39370b['code']=function(_0x2efffa,_0xb6092e,..._0x38dca0){const {code:_0x4c570f,language:_0x2c5b5b}=getMarkdownCodeBlockPayload(_0x2efffa,_0xb6092e),_0x2134d5=String(_0x2c5b5b||'')['trim']()['toLowerCase']();if(_0x2134d5==='mermaid')return buildMermaidBlock(_0x4c570f);const _0x1aa94c=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1aa94c&&_0x2134d5)try{const _0x54d83c=_0x1aa94c['getLanguage'](_0x2134d5)?_0x2134d5:'plaintext',_0x22015d=_0x1aa94c['highlight'](_0x4c570f,{'language':_0x54d83c})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2134d5)+'\x22>'+_0x22015d+'</code></pre>';}catch(_0x1489ff){console['error']('Syntax\x20highlighting\x20error:',_0x1489ff);}return _0x3e015c(_0x2efffa,_0xb6092e,..._0x38dca0);},sharedMarkedRenderer=_0x39370b,_0x39370b;}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 _0x55fc6d=window['mermaid'];if(!_0x55fc6d||typeof _0x55fc6d['initialize']!=='function')return _0x55fc6d||null;return _0x55fc6d['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x55fc6d;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1a163f,_0x50dce8)=>{const _0x293f2a=()=>_0x1a163f(configureMermaidInstance()),_0x885e77=()=>{mermaidLoadPromise=null,_0x50dce8(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x16907b=document['getElementById'](MERMAID_SCRIPT_ID);!_0x16907b&&(_0x16907b=document['createElement']('script'),_0x16907b['id']=MERMAID_SCRIPT_ID,_0x16907b['src']=MERMAID_SCRIPT_SRC,_0x16907b['async']=!![],document['head']['appendChild'](_0x16907b));if(window['mermaid']){_0x293f2a();return;}_0x16907b['addEventListener']('load',_0x293f2a,{'once':!![]}),_0x16907b['addEventListener']('error',_0x885e77,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x5b01e9){const _0x5a85cd=_0x5b01e9['getAttribute']('data-mermaid-source');if(!_0x5a85cd)return null;let _0x8c3aa9=_0x5a85cd;try{_0x8c3aa9=decodeURIComponent(_0x5a85cd);}catch{}return _0x5b01e9['textContent']=_0x8c3aa9,_0x5b01e9['removeAttribute']('data-processed'),_0x5b01e9['removeAttribute']('aria-roledescription'),_0x5b01e9['removeAttribute']('role'),_0x5b01e9['removeAttribute']('aria-label'),_0x8c3aa9;}function collectMermaidNodes(_0x474349,_0x224db7){if(!(_0x474349 instanceof Element))return;_0x474349['matches']('.mermaid[data-mermaid-source]')&&_0x224db7['add'](_0x474349),_0x474349['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x201440=>{_0x224db7['add'](_0x201440);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x11cfb6=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x275478=>setTimeout(_0x275478,0x0);_0x11cfb6(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1bc65b=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1bc65b);});});}function queueMermaidRender(_0x809dfd){const _0x4e4e1c=new Set();_0x809dfd instanceof Document||_0x809dfd instanceof DocumentFragment?_0x809dfd['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x117268=>_0x4e4e1c['add'](_0x117268)):collectMermaidNodes(_0x809dfd,_0x4e4e1c);if(_0x4e4e1c['size']===0x0)return;_0x4e4e1c['forEach'](_0x51d30e=>pendingMermaidNodes['add'](_0x51d30e)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x36d0a5=Array['from'](pendingMermaidNodes)['filter'](_0x2c2f5a=>_0x2c2f5a['isConnected']);pendingMermaidNodes['clear']();if(_0x36d0a5['length']===0x0)return;const _0xd10ff5=await loadMermaid();if(!_0xd10ff5)return;configureMermaidInstance();const _0x41e7fe=getMermaidTheme();for(const _0x27179f of _0x36d0a5){const _0x164189=_0x27179f['getAttribute']('data-mermaid-source');if(!_0x164189)continue;const _0x1505a0=_0x27179f['getAttribute']('data-processed')==='true';if(_0x1505a0&&_0x27179f['dataset']['mermaidTheme']===_0x41e7fe)continue;restoreMermaidSource(_0x27179f);try{if(typeof _0xd10ff5['run']==='function')await _0xd10ff5['run']({'nodes':[_0x27179f]});else typeof _0xd10ff5['init']==='function'&&_0xd10ff5['init'](undefined,[_0x27179f]);_0x27179f['dataset']['mermaidTheme']=_0x41e7fe,delete _0x27179f['dataset']['mermaidError'];}catch(_0x260283){console['error']('Mermaid\x20render\x20failed:',_0x260283),restoreMermaidSource(_0x27179f),_0x27179f['dataset']['mermaidError']='true',delete _0x27179f['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x549de1=>{_0x549de1['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x549de1);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1dbb58=>{_0x1dbb58['forEach'](_0x30b273=>{_0x30b273['addedNodes']['forEach'](_0xb5c048=>{_0xb5c048['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xb5c048);});});}),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'(_0x1cc4cb){const _0x5ec1f3=new Date(_0x1cc4cb),_0xce5009=new Date(),_0x57340e=_0xce5009-_0x5ec1f3,_0x44c44f=Math['floor'](_0x57340e/0x3e8),_0x48a8a5=Math['floor'](_0x44c44f/0x3c),_0x3fcbba=Math['floor'](_0x48a8a5/0x3c),_0x5391e2=Math['floor'](_0x3fcbba/0x18);if(_0x44c44f<0x3c)return'now';if(_0x48a8a5<0x3c)return _0x48a8a5+'m\x20ago';if(_0x3fcbba<0x18)return _0x3fcbba+'h\x20ago';return _0x5391e2+'d\x20ago';},'getStatusIcon'(_0x5544f0){switch(_0x5544f0){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4a42bb){switch(_0x4a42bb){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'(_0x50494a,_0x323404=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x39f204={};_0x39f204['text/plain']=new Blob([_0x50494a],{'type':'text/plain'});_0x323404&&(_0x39f204['text/html']=new Blob([_0x323404],{'type':'text/html'}));const _0x5deda2=new ClipboardItem(_0x39f204);return await navigator['clipboard']['write']([_0x5deda2]),!![];}catch(_0xc19abc){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xc19abc);}try{const _0x36f279=_0x1452be=>{_0x1452be['preventDefault'](),_0x1452be['clipboardData']['setData']('text/plain',_0x50494a),_0x323404&&_0x1452be['clipboardData']['setData']('text/html',_0x323404);};document['addEventListener']('copy',_0x36f279);const _0x209b8a=document['execCommand']('copy');document['removeEventListener']('copy',_0x36f279);if(_0x209b8a)return!![];}catch(_0x39556b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x39556b);}try{const _0x4bcba1=document['createElement']('textarea');_0x4bcba1['value']=_0x50494a,_0x4bcba1['style']['position']='fixed',_0x4bcba1['style']['opacity']='0',_0x4bcba1['style']['pointerEvents']='none',document['body']['appendChild'](_0x4bcba1),_0x4bcba1['select']();const _0x401863=document['execCommand']('copy');return document['body']['removeChild'](_0x4bcba1),_0x401863;}catch(_0xfe77d8){return console['error']('All\x20clipboard\x20methods\x20failed:',_0xfe77d8),![];}},'showToast'(_0x5d9341,_0x463245='info'){const _0x3afd8b=getNextToastId(),_0x323df9=document['createElement']('div');_0x323df9['className']='toast\x20toast-'+_0x463245,_0x323df9['textContent']=_0x5d9341,_0x323df9['dataset']['toastId']=_0x3afd8b,document['body']['appendChild'](_0x323df9);const _0x5a2ab8=_0x463245==='error'?0x2710:0xbb8,_0x29aedd=setTimeout(()=>{removeToastById(_0x3afd8b);},_0x5a2ab8),_0x107031={'id':_0x3afd8b,'el':_0x323df9,'timeoutId':_0x29aedd};return registerToast(_0x107031),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x323df9['classList']['add']('show');});}),_0x3afd8b;},'showError'(_0x47a311){console['error'](_0x47a311);const _0x18288a=typeof _0x47a311==='string'?_0x47a311:_0x47a311['message']||'An\x20error\x20occurred';this['showToast'](_0x18288a,'error');},'showSuccess'(_0xe80d63){this['showToast'](_0xe80d63,'success');},'capitalize'(_0x21174d){if(!_0x21174d)return'';return _0x21174d['charAt'](0x0)['toUpperCase']()+_0x21174d['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3338a3){return escapeHtmlValue(_0x3338a3);},'ansiToHtml'(_0x276d64){if(_0x276d64===null||_0x276d64===undefined)return'';let _0x18f1f7=this['escapeHtml'](_0x276d64);const _0x4906d7={'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'},_0x32db31={'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 _0x2372e8=0x0;return _0x18f1f7=_0x18f1f7['replace'](/\x1b\[([0-9;]*)m/g,(_0x5e0a99,_0x3d3f40)=>{if(!_0x3d3f40||_0x3d3f40==='0'){const _0x314b74='</span>'['repeat'](_0x2372e8);return _0x2372e8=0x0,_0x314b74;}const _0x2f6cb0=_0x3d3f40['split'](';'),_0x242fe1=[];for(const _0x1855e5 of _0x2f6cb0){if(_0x1855e5==='1')_0x242fe1['push']('font-weight:bold');else{if(_0x1855e5==='2')_0x242fe1['push']('opacity:0.7');else{if(_0x1855e5==='3')_0x242fe1['push']('font-style:italic');else{if(_0x1855e5==='4')_0x242fe1['push']('text-decoration:underline');else{if(_0x1855e5==='9')_0x242fe1['push']('text-decoration:line-through');else{if(_0x4906d7[_0x1855e5])_0x242fe1['push']('color:'+_0x4906d7[_0x1855e5]);else{if(_0x32db31[_0x1855e5])_0x242fe1['push']('background-color:'+_0x32db31[_0x1855e5]);}}}}}}}if(_0x242fe1['length']>0x0)return _0x2372e8++,'<span\x20style=\x22'+_0x242fe1['join'](';')+'\x22>';return'';}),_0x18f1f7+='</span>'['repeat'](_0x2372e8),_0x18f1f7=_0x18f1f7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x15e8f1,_0x4ea55c)=>{if(!_0x4ea55c||_0x4ea55c==='0')return'';const _0x1efdbc=_0x4ea55c['split'](';'),_0x174ff7=[];for(const _0x19d995 of _0x1efdbc){if(_0x19d995==='1')_0x174ff7['push']('font-weight:bold');else{if(_0x4906d7[_0x19d995])_0x174ff7['push']('color:'+_0x4906d7[_0x19d995]);else{if(_0x32db31[_0x19d995])_0x174ff7['push']('background-color:'+_0x32db31[_0x19d995]);}}}if(_0x174ff7['length']>0x0)return'<span\x20style=\x22'+_0x174ff7['join'](';')+'\x22>';return'';}),_0x18f1f7;},'showModal'({title:_0x5185a2,content:_0x29eaa1,buttons:buttons=[]}){const _0x484b42='\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'](_0x5185a2)+'</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'+_0x29eaa1+'\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']((_0x212d44,_0x49f117)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x212d44['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x49f117+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x212d44['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',_0x536f79=document['createElement']('div');_0x536f79['id']='utils-modal',_0x536f79['className']='modal',_0x536f79['innerHTML']=_0x484b42,document['body']['appendChild'](_0x536f79);const _0x56729a=document['getElementById']('utils-modal-close');_0x56729a&&_0x56729a['addEventListener']('click',()=>this['hideModal']());const _0x347d=_0x536f79['querySelectorAll']('[data-btn-index]');_0x347d['forEach'](_0x543c5e=>{const _0x1a04ef=parseInt(_0x543c5e['dataset']['btnIndex']);buttons[_0x1a04ef]?.['onClick']&&_0x543c5e['addEventListener']('click',buttons[_0x1a04ef]['onClick']);});const _0x388b98=document['getElementById']('utils-modal-overlay');_0x388b98&&_0x388b98['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1d6af0=document['getElementById']('utils-modal');_0x1d6af0&&_0x1d6af0['remove']();},'parseKeyValuePairs'(_0x1c008c){const _0x1eb68a={};if(!_0x1c008c)return _0x1eb68a;return _0x1c008c['split'](/\r?\n/)['map'](_0x128a36=>_0x128a36['trim']())['filter'](Boolean)['forEach'](_0x413fd6=>{const _0x4b1ab9=_0x413fd6['indexOf']('=');if(_0x4b1ab9>0x0){const _0x4c9ae9=_0x413fd6['slice'](0x0,_0x4b1ab9)['trim'](),_0x542bfd=_0x413fd6['slice'](_0x4b1ab9+0x1)['trim']();if(_0x4c9ae9)_0x1eb68a[_0x4c9ae9]=_0x542bfd;}}),_0x1eb68a;},'debounce'(_0x3cb44f,_0x38d998=0xfa){let _0x5c9606=null;return(..._0x51e903)=>{clearTimeout(_0x5c9606),_0x5c9606=setTimeout(()=>_0x3cb44f['apply'](this,_0x51e903),_0x38d998);};},'formatTimestamp'(_0x2f0cc4){if(!_0x2f0cc4)return'N/A';const _0x3ec1c2=new Date(_0x2f0cc4);return _0x3ec1c2['toLocaleDateString']()+'\x20'+_0x3ec1c2['toLocaleTimeString']();},'getQueryParams'(){const _0x7af1e=new URLSearchParams(window['location']['search']),_0x5f4ca7={};for(const [_0x1738b7,_0x239573]of _0x7af1e){_0x5f4ca7[_0x1738b7]=_0x239573;}return _0x5f4ca7;},'formatDuration'(_0x36b4e3,_0x37fc32){if(!_0x36b4e3)return'N/A';const _0x15a2d6=new Date(_0x36b4e3),_0x265079=_0x37fc32?new Date(_0x37fc32):new Date(),_0x1e8111=_0x265079-_0x15a2d6;if(_0x1e8111<0x0)return'0s';const _0x459eaa=Math['floor'](_0x1e8111/0x3e8),_0x57b5e8=Math['floor'](_0x459eaa/0x3c),_0x1a56eb=Math['floor'](_0x57b5e8/0x3c),_0x2ebbfe=Math['floor'](_0x1a56eb/0x18);if(_0x459eaa<0x3c)return _0x459eaa+'s';if(_0x57b5e8<0x3c)return _0x57b5e8+'m\x20'+_0x459eaa%0x3c+'s';if(_0x1a56eb<0x18)return _0x1a56eb+'h\x20'+_0x57b5e8%0x3c+'m\x20'+_0x459eaa%0x3c+'s';return _0x2ebbfe+'d\x20'+_0x1a56eb%0x18+'h\x20'+_0x57b5e8%0x3c+'m';},'renderMarkdown'(_0x485edd,_0x28dcae={}){if(!_0x485edd)return'';_0x485edd=this['rewriteAttachmentLinks'](_0x485edd,_0x28dcae),_0x485edd=this['rewriteColorSyntax'](_0x485edd);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x485edd,_0x28dcae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x485edd);}catch(_0x50866b){return console['error']('Markdown\x20parsing\x20error:',_0x50866b),this['renderMarkdownFallback'](_0x485edd,_0x28dcae);}},'rewriteAttachmentLinks'(_0x2df884,_0x3e9ea5={}){const _0x62310a=typeof _0x3e9ea5['resolveAttachmentUrl']==='function'?_0x3e9ea5['resolveAttachmentUrl']:_0x3e9ea5['taskId']?_0x2eb663=>API_BASE+'/tasks/'+_0x3e9ea5['taskId']+'/attachments/'+encodeURIComponent(_0x2eb663):null;if(!_0x62310a)return _0x2df884;return String(_0x2df884)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x54bd4c,_0x8dd37a)=>{const _0x445a77=String(_0x8dd37a||'')['trim']();if(!_0x445a77)return _0x54bd4c;let _0x27b056=_0x445a77;try{_0x27b056=decodeURIComponent(_0x445a77);}catch{}const _0x34f81f=_0x62310a(_0x27b056);if(!_0x34f81f)return _0x54bd4c;return']('+_0x34f81f+')';});},'rewriteColorSyntax'(_0x391ede){if(!_0x391ede)return _0x391ede;return String(_0x391ede)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x1673ee,_0x444781,_0x53d931)=>{const _0x2519ab=this['rewriteColorSyntax'](_0x53d931);return'<span\x20style=\x22color:\x20'+_0x444781+'\x22>'+_0x2519ab+'</span>';});},'renderMarkdownFallback'(_0x1e1613,_0x516787={}){if(!_0x1e1613)return'';_0x1e1613=_0x1e1613['replace'](/\r\n/g,'\x0a'),_0x1e1613=_0x1e1613['replace'](/\r/g,'\x0a'),_0x1e1613=this['rewriteAttachmentLinks'](_0x1e1613,_0x516787);let _0x322186=this['escapeHtml'](_0x1e1613);return _0x322186=_0x322186['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x322186=_0x322186['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x322186=_0x322186['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x322186=_0x322186['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x322186=_0x322186['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x322186=_0x322186['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x322186=_0x322186['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x322186=_0x322186['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x322186=_0x322186['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x322186=_0x322186['replace'](/\n\n/g,'</p><p>'),_0x322186=_0x322186['replace'](/\n/g,'<br>'),'<p>'+_0x322186+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5d5e8c=new Uint8Array(0x10);crypto['getRandomValues'](_0x5d5e8c),_0x5d5e8c[0x6]=_0x5d5e8c[0x6]&0xf|0x40,_0x5d5e8c[0x8]=_0x5d5e8c[0x8]&0x3f|0x80;const _0x248b39=Array['from'](_0x5d5e8c,_0x3050e3=>_0x3050e3['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x248b39['slice'](0x0,0x8)+'-'+_0x248b39['slice'](0x8,0xc)+'-'+_0x248b39['slice'](0xc,0x10)+'-'+_0x248b39['slice'](0x10,0x14)+'-'+_0x248b39['slice'](0x14);}};export class CustomSelect{constructor(_0x43c675,_0x9039={}){this['nativeSelect']=_0x43c675,this['options']=_0x9039,this['isOpen']=![],this['selectedValue']=_0x43c675['value']||'',this['searchable']=_0x9039['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x320b74=document['createElement']('div');_0x320b74['className']='custom-select';const _0x378729=document['createElement']('div');_0x378729['className']='custom-select-trigger',_0x378729['setAttribute']('tabindex','0'),_0x378729['setAttribute']('role','button'),_0x378729['setAttribute']('aria-haspopup','listbox');const _0x3cb8de=document['createElement']('span');_0x3cb8de['className']='custom-select-trigger-text';const _0x109aae=document['createElement']('span');_0x109aae['className']='custom-select-arrow',_0x109aae['textContent']='▼',_0x378729['appendChild'](_0x3cb8de),_0x378729['appendChild'](_0x109aae);const _0x5692d8=document['createElement']('div');_0x5692d8['className']='custom-select-dropdown',_0x5692d8['setAttribute']('role','listbox');if(this['searchable']){const _0x3f026e=document['createElement']('div');_0x3f026e['className']='custom-select-search';const _0x551636=document['createElement']('input');_0x551636['type']='text',_0x551636['className']='custom-select-search-input',_0x551636['placeholder']='Type\x20to\x20search...',_0x551636['setAttribute']('aria-label','Search\x20options'),_0x551636['addEventListener']('input',_0x2cf364=>{this['searchQuery']=_0x2cf364['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x551636['addEventListener']('keydown',_0x2131ff=>{if(_0x2131ff['key']==='Escape')_0x2131ff['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2131ff['key']==='Enter'){_0x2131ff['preventDefault'](),_0x2131ff['stopPropagation']();const _0x1f60a0=_0x5692d8['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1f60a0){const _0x4c7581=_0x1f60a0['getAttribute']('data-value');this['select'](_0x4c7581);}}}}),_0x3f026e['appendChild'](_0x551636),_0x5692d8['appendChild'](_0x3f026e),this['searchInput']=_0x551636;}const _0x51f1a3=document['createElement']('div');_0x51f1a3['className']='custom-select-options',_0x5692d8['appendChild'](_0x51f1a3),_0x320b74['appendChild'](_0x378729),_0x320b74['appendChild'](_0x5692d8),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x320b74,this['nativeSelect']),this['wrapper']=_0x320b74,this['trigger']=_0x378729,this['triggerText']=_0x3cb8de,this['dropdown']=_0x5692d8,this['optionsContainer']=_0x51f1a3,_0x378729['addEventListener']('click',()=>this['toggle']()),_0x378729['addEventListener']('keydown',_0x161e94=>this['handleKeydown'](_0x161e94)),document['addEventListener']('click',_0xd0b7b4=>{!_0x320b74['contains'](_0xd0b7b4['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x572de0=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x572de0['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x408edc=new MutationObserver(()=>{this['updateDisabledState']();});_0x408edc['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x569ade=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x569ade['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x53fe2e=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x53fe2e),this['trigger']['setAttribute']('aria-disabled',_0x53fe2e?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x53fe2e?'-1':'0'),_0x53fe2e&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xacc49e=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x123461=_0xacc49e['filter'](_0x3c1032=>!_0x3c1032['disabled']&&!_0x3c1032['hidden']);_0xacc49e['forEach']((_0x76fb24,_0x2c9933)=>{const _0x1e62a9=document['createElement']('div');_0x1e62a9['className']='custom-select-option',_0x1e62a9['textContent']=_0x76fb24['textContent'],_0x1e62a9['setAttribute']('data-value',_0x76fb24['value']),_0x1e62a9['setAttribute']('data-index',_0x2c9933),_0x1e62a9['setAttribute']('role','option'),_0x76fb24['disabled']?_0x1e62a9['classList']['add']('disabled'):_0x1e62a9['addEventListener']('click',()=>this['select'](_0x76fb24['value'])),_0x76fb24['value']===this['selectedValue']&&_0x1e62a9['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1e62a9),this['allOptions']['push']({'element':_0x1e62a9,'text':_0x76fb24['textContent']['toLowerCase'](),'value':_0x76fb24['value'],'disabled':_0x76fb24['disabled']});});if(this['searchable']&&this['searchInput']){const _0x18572b=this['searchInput']['parentElement'];_0x123461['length']>0x3?_0x18572b['style']['display']='':_0x18572b['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x41a89c=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x2d008f=>{if(!_0x41a89c||_0x2d008f['disabled'])_0x2d008f['element']['style']['display']='';else{const _0x3b6fa9=_0x2d008f['text']['includes'](_0x41a89c);_0x2d008f['element']['style']['display']=_0x3b6fa9?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x19f510){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x19f510,this['nativeSelect']['value']=_0x19f510;const _0x13d6a9=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x13d6a9),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x55db19=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x55db19&&(this['triggerText']['textContent']=_0x55db19['textContent'],_0x55db19['disabled']||_0x55db19['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1ec56a=>{_0x1ec56a['getAttribute']('data-value')===this['selectedValue']?_0x1ec56a['classList']['add']('selected'):_0x1ec56a['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 _0x5ea021=window['getComputedStyle'](this['dropdown']);if(_0x5ea021['position']==='fixed'){const _0x1fde6f=this['trigger']['getBoundingClientRect'](),_0x2cef97=parseInt(_0x5ea021['maxHeight'])||0xc8,_0x5a5297=window['innerHeight'],_0x443131=_0x5a5297-_0x1fde6f['bottom'],_0x476428=_0x1fde6f['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x6279f2;_0x443131<_0x2cef97&&_0x476428>_0x443131?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x5a5297-_0x1fde6f['top']+'px',_0x6279f2=Math['min'](_0x2cef97,_0x476428-0xa),this['dropdown']['style']['maxHeight']=_0x6279f2+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1fde6f['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x6279f2=Math['min'](_0x2cef97,_0x443131-0xa),this['dropdown']['style']['maxHeight']=_0x6279f2+'px');if(this['optionsContainer']){let _0x5ec5a0=_0x6279f2;if(this['searchInput']){const _0x1ee1f0=this['searchInput']['parentElement'];_0x1ee1f0&&(_0x5ec5a0-=_0x1ee1f0['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5ec5a0)+'px';}this['dropdown']['style']['left']=_0x1fde6f['left']+'px',this['dropdown']['style']['width']=_0x1fde6f['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x25b4e1=this['searchInput']['parentElement'];_0x25b4e1&&_0x25b4e1['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'](_0x51d133){if(this['nativeSelect']['disabled'])return;if(_0x51d133['key']==='Enter'||_0x51d133['key']==='\x20')_0x51d133['preventDefault'](),this['toggle']();else _0x51d133['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ac308='\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',_0x4ac308),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2d0d71=document['getElementById']('confirm-dialog-close'),_0xa2b4da=document['getElementById']('confirm-dialog-cancel'),_0x5882ad=document['getElementById']('confirm-dialog-confirm'),_0x27a586=this['_modal']['querySelector']('.modal-overlay');_0x2d0d71['addEventListener']('click',()=>this['_resolve'](![])),_0xa2b4da['addEventListener']('click',()=>this['_resolve'](![])),_0x5882ad['addEventListener']('click',()=>this['_resolve'](!![])),_0x27a586['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x16d80a=>{if(_0x16d80a['key']==='Escape')_0x16d80a['preventDefault'](),this['_resolve'](![]);else _0x16d80a['key']==='Enter'&&(_0x16d80a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1c064c,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4b88d9=>{this['_resolvePromise']=_0x4b88d9,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1c064c;const _0x978a3d=document['getElementById']('confirm-dialog-cancel'),_0x41e8b7=document['getElementById']('confirm-dialog-confirm');_0x978a3d['textContent']=cancelText,_0x41e8b7['textContent']=confirmText,_0x41e8b7['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x41e8b7['focus']();});},'_resolve'(_0x4b99a6){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4b99a6),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4f50d6,_0x12dd63={}){this['container']=_0x4f50d6,this['options']={'placeholder':_0x12dd63['placeholder']||'Type\x20to\x20search...','maxItems':_0x12dd63['maxItems']||0x64,'loadItems':_0x12dd63['loadItems']||(async()=>[]),'renderItem':_0x12dd63['renderItem']||(_0x224c0f=>({'primary':String(_0x224c0f),'secondary':''})),'onSelect':_0x12dd63['onSelect']||(()=>{}),'filterItems':_0x12dd63['filterItems']||null,'getItemValue':_0x12dd63['getItemValue']||(_0x4ee339=>_0x4ee339),'sortItems':_0x12dd63['sortItems']||null,'debounceMs':_0x12dd63['debounceMs']||0xc8,'minCharsForSearch':_0x12dd63['minCharsForSearch']||0x0,'emptyMessage':_0x12dd63['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x12dd63['loadingMessage']||'Loading...','preload':_0x12dd63['preload']!==![],'searchMode':_0x12dd63['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',_0x61e152=>this['onBlur'](_0x61e152)),this['input']['addEventListener']('input',_0x550fa1=>this['onInput'](_0x550fa1)),this['input']['addEventListener']('keydown',_0xba785e=>this['onKeydown'](_0xba785e)),this['clearBtn']['addEventListener']('mousedown',_0x21ceff=>{_0x21ceff['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4a7c91=>{_0x4a7c91['preventDefault']();}),document['addEventListener']('click',_0x33e817=>{!this['wrapper']['contains'](_0x33e817['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(_0x29614f){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x29614f);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x195814){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x2dbfa0){const _0x3694ca=_0x2dbfa0['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3694ca);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3694ca):this['loadAndShow'](_0x3694ca);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x48b142){switch(_0x48b142['key']){case'ArrowDown':_0x48b142['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x48b142['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x48b142['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x48b142['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5c0aab){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0xcfba6c=this['selectedIndex']+_0x5c0aab;if(_0xcfba6c>=0x0&&_0xcfba6c<this['filteredItems']['length']){this['selectedIndex']=_0xcfba6c,this['updateSelectionHighlight']();const _0x3c3261=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3c3261[this['selectedIndex']]&&_0x3c3261[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2d9120=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2d9120['forEach']((_0x39b9e4,_0x2ff62a)=>{_0x39b9e4['classList']['toggle']('keyboard-selected',_0x2ff62a===this['selectedIndex']);});}async['loadAndShow'](_0x5eb2f9){this['showLoading']();try{const _0x2217b1=await this['options']['loadItems'](_0x5eb2f9);if(this['options']['searchMode']==='server'){let _0x1a2da6=_0x2217b1;this['options']['sortItems']&&(_0x1a2da6=this['options']['sortItems']([..._0x2217b1]));this['filteredItems']=_0x1a2da6;const _0x1b4ded=this['filteredItems']['length']>=this['options']['maxItems'];_0x1b4ded&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x1b4ded),this['open']();}else this['allItems']=_0x2217b1,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5eb2f9);}catch(_0x19fcb8){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x19fcb8),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x406da6){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x406da6):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x49acd9=this['filteredItems']['length']>=this['options']['maxItems'];_0x49acd9&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x49acd9),this['open']();}['renderItems'](_0xf5fab6){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']((_0x3efb8c,_0x574995)=>{const _0xf362ed=document['createElement']('div');_0xf362ed['className']='autocomplete-select-item',_0xf362ed['setAttribute']('role','option'),_0xf362ed['setAttribute']('data-index',_0x574995);const _0x4f28a0=this['options']['renderItem'](_0x3efb8c);let _0x44657b='';_0x4f28a0['icon']&&(_0x44657b='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4f28a0['iconClass']||'')+'\x22>'+_0x4f28a0['icon']+'</span>'),_0xf362ed['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x44657b+'\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'](_0x4f28a0['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4f28a0['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4f28a0['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xf362ed['addEventListener']('click',()=>{this['selectItem'](_0x3efb8c);}),_0xf362ed['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x574995,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xf362ed);}),_0xf5fab6?(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'](_0x1a2a0f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1a2a0f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x52714b){this['selectedItem']=_0x52714b;const _0x533785=this['options']['renderItem'](_0x52714b);this['input']['value']=_0x533785['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x52714b);}['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'](_0x3a6a2b){if(_0x3a6a2b){this['selectedItem']=_0x3a6a2b;const _0x25cebd=this['options']['renderItem'](_0x3a6a2b);this['input']['value']=_0x25cebd['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1dd7cd){this['allItems']=_0x1dd7cd,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'](_0x2e4d66){this['input']['placeholder']=_0x2e4d66;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3c778b=null){const _0xa0613c=document['getElementById']('admin-menu-container'),_0x485ecb=document['getElementById']('admin-menu-btn'),_0x26badd=document['getElementById']('admin-menu');if(!_0xa0613c||!_0x485ecb||!_0x26badd)return;try{!_0x3c778b&&(_0x3c778b=await API['getCurrentUser']());if(_0x3c778b){const _0x5ee7e8=window['Permissions'],_0x5a5602=_0x5ee7e8['hasServerPermission'](_0x3c778b,'*')||_0x5ee7e8['hasEnvPermission'](_0x3c778b,'environments:manage')||_0x5ee7e8['hasServerPermission'](_0x3c778b,'users:create')||_0x5ee7e8['hasTeamPermission'](_0x3c778b,'teams:manage')||_0x5ee7e8['hasAnyEnvironment'](_0x3c778b);if(!_0x5a5602)return;_0xa0613c['hidden']=![];if(!_0x5ee7e8['hasServerPermission'](_0x3c778b,'*')){const _0x12be6f=_0x26badd['querySelectorAll']('.admin-menu-item');_0x12be6f['forEach'](_0x325aca=>{const _0x4521ee=_0x325aca['querySelector']('.option-text')?.['textContent']?.['trim']();_0x4521ee==='Users'&&!_0x5ee7e8['hasServerPermission'](_0x3c778b,'users:create')&&(_0x325aca['hidden']=!![]),_0x4521ee==='Skills'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Server\x20Settings'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Server\x20Health'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Git\x20History'&&(_0x325aca['hidden']=!![]),_0x4521ee==='Roles'&&(_0x325aca['hidden']=!![]);});}_0x485ecb['addEventListener']('click',_0x3f4f3d=>{_0x3f4f3d['stopPropagation']();const _0x437e42=document['getElementById']('actions-menu');if(_0x437e42)_0x437e42['hidden']=!![];_0x26badd['hidden']=!_0x26badd['hidden'];}),document['addEventListener']('click',_0x36aecd=>{!_0x26badd['hidden']&&!_0x485ecb['contains'](_0x36aecd['target'])&&!_0x26badd['contains'](_0x36aecd['target'])&&(_0x26badd['hidden']=!![]);}),document['addEventListener']('keydown',_0x5971a7=>{_0x5971a7['key']==='Escape'&&!_0x26badd['hidden']&&(_0x26badd['hidden']=!![]);});const _0x5b1f48=document['getElementById']('server-health-btn');_0x5b1f48&&_0x5b1f48['addEventListener']('click',async()=>{_0x26badd['hidden']=!![];const {openServerHealthModal:_0x335146}=await import('./server-health.js');_0x335146();});}}catch(_0x581d97){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x581d97['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
|