@profoundlogic/coderflow-server 0.5.4 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  62. package/dist/lib/model-fetcher.js +1 -1
  63. package/dist/lib/notifications.js +1 -1
  64. package/dist/lib/objective-context.js +1 -1
  65. package/dist/lib/oidc-auth.js +1 -1
  66. package/dist/lib/oidc-device-flow.js +1 -1
  67. package/dist/lib/passwordTokens.js +1 -1
  68. package/dist/lib/permission-resolver.js +1 -1
  69. package/dist/lib/pin-cascade.js +1 -1
  70. package/dist/lib/provider-accounts.js +1 -1
  71. package/dist/lib/provider-oauth.js +1 -1
  72. package/dist/lib/provider-profile.js +1 -1
  73. package/dist/lib/provider-token-refresh.js +1 -1
  74. package/dist/lib/rbac-user-state.js +1 -1
  75. package/dist/lib/request-url.js +1 -1
  76. package/dist/lib/rewind.js +1 -1
  77. package/dist/lib/role-definitions.js +1 -1
  78. package/dist/lib/roles.js +1 -1
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-name-format.js +1 -1
  84. package/dist/lib/task-name-generator.js +1 -1
  85. package/dist/lib/task-source-metadata.js +1 -1
  86. package/dist/lib/teams.js +1 -1
  87. package/dist/lib/user-git-oauth.js +1 -1
  88. package/dist/lib/user-git-tokens.js +1 -1
  89. package/dist/lib/users.js +1 -1
  90. package/dist/middleware/requireAuth.js +1 -1
  91. package/dist/middleware/requireInit.js +1 -1
  92. package/dist/middleware/requirePermission.js +1 -1
  93. package/dist/package.json +1 -1
  94. package/dist/playwright.config.js +1 -1
  95. package/dist/routes/apiKeys.js +1 -1
  96. package/dist/routes/auth-oidc.js +1 -1
  97. package/dist/routes/auth.js +1 -1
  98. package/dist/routes/automations.js +1 -1
  99. package/dist/routes/bindings.js +1 -1
  100. package/dist/routes/build.js +1 -1
  101. package/dist/routes/containers.js +1 -1
  102. package/dist/routes/deploy-task.js +1 -1
  103. package/dist/routes/environment-management.js +1 -1
  104. package/dist/routes/environments.js +1 -1
  105. package/dist/routes/external-skills.js +1 -1
  106. package/dist/routes/git-credentials.js +1 -1
  107. package/dist/routes/git-oauth.js +1 -1
  108. package/dist/routes/git-provider-setup.js +1 -1
  109. package/dist/routes/health.js +1 -1
  110. package/dist/routes/jira.js +1 -1
  111. package/dist/routes/objective-management.js +1 -1
  112. package/dist/routes/password.js +1 -1
  113. package/dist/routes/prompt.js +1 -1
  114. package/dist/routes/provider-auth.js +1 -1
  115. package/dist/routes/qa.js +1 -1
  116. package/dist/routes/roles.js +1 -1
  117. package/dist/routes/settings.js +1 -1
  118. package/dist/routes/skill-management.js +1 -1
  119. package/dist/routes/skills.js +1 -1
  120. package/dist/routes/tasks.js +1 -1
  121. package/dist/routes/teams.js +1 -1
  122. package/dist/routes/templates.js +1 -1
  123. package/dist/routes/test-task.js +1 -1
  124. package/dist/routes/test.js +1 -1
  125. package/dist/routes/users.js +1 -1
  126. package/dist/routes/visualizations.js +1 -1
  127. package/dist/scripts/create-user.js +1 -1
  128. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  129. package/dist/start.js +1 -1
  130. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  131. package/dist/web-ui/public/activity-feed.js +1 -1
  132. package/dist/web-ui/public/activity-formatters.js +1 -1
  133. package/dist/web-ui/public/agent-event-parser.js +1 -1
  134. package/dist/web-ui/public/app.js +1 -1
  135. package/dist/web-ui/public/approve-dialog.js +1 -1
  136. package/dist/web-ui/public/automation-links.js +1 -1
  137. package/dist/web-ui/public/automation-schedule.js +1 -1
  138. package/dist/web-ui/public/comments-widget.js +1 -1
  139. package/dist/web-ui/public/diff-utils.js +1 -1
  140. package/dist/web-ui/public/environments.js +1 -1
  141. package/dist/web-ui/public/feedback-widget.css +409 -0
  142. package/dist/web-ui/public/feedback-widget.js +1 -1
  143. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  144. package/dist/web-ui/public/git-history.js +1 -1
  145. package/dist/web-ui/public/git-status.js +1 -1
  146. package/dist/web-ui/public/index.js +1 -1
  147. package/dist/web-ui/public/login.js +1 -1
  148. package/dist/web-ui/public/markdown-editor.js +1 -1
  149. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  150. package/dist/web-ui/public/modal-maximize.js +1 -1
  151. package/dist/web-ui/public/notifications.js +1 -1
  152. package/dist/web-ui/public/pr-dialog.js +1 -1
  153. package/dist/web-ui/public/roles.js +1 -1
  154. package/dist/web-ui/public/server-health.js +1 -1
  155. package/dist/web-ui/public/settings.js +1 -1
  156. package/dist/web-ui/public/setup-password.js +1 -1
  157. package/dist/web-ui/public/skills.js +1 -1
  158. package/dist/web-ui/public/sse-client.js +1 -1
  159. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  160. package/dist/web-ui/public/styles.css +2975 -2022
  161. package/dist/web-ui/public/task.html +98 -2
  162. package/dist/web-ui/public/task.js +1 -1
  163. package/dist/web-ui/public/teams.js +1 -1
  164. package/dist/web-ui/public/terminal.js +1 -1
  165. package/dist/web-ui/public/theme.js +1 -1
  166. package/dist/web-ui/public/users.js +1 -1
  167. package/dist/web-ui/public/variant-grouping.js +1 -1
  168. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x401d74=window['location']['pathname'],_0x3331e7=_0x401d74['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3331e7)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3331e7[0x1]),_0x3331e7[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x30ecc9={}){const _0x3bbedc=new URLSearchParams();_0x30ecc9['userId']&&_0x3bbedc['set']('userId',String(_0x30ecc9['userId']));_0x30ecc9['automation']&&_0x3bbedc['set']('automation',String(_0x30ecc9['automation']));const _0x30b5bf=API_BASE+'/tasks/stats'+(_0x3bbedc['toString']()?'?'+_0x3bbedc['toString']():''),_0x43b6e5=await fetch(_0x30b5bf);if(!_0x43b6e5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x43b6e5['statusText']);return await _0x43b6e5['json']();},async 'getTasks'(_0x4d6877={}){const _0x4e5ed8=new URLSearchParams();_0x4d6877['status']&&_0x4e5ed8['set']('status',String(_0x4d6877['status']));_0x4d6877['environment']&&_0x4e5ed8['set']('environment',String(_0x4d6877['environment']));_0x4d6877['automation']&&_0x4e5ed8['set']('automation',String(_0x4d6877['automation']));if(_0x4d6877['include']){const _0x8c02a7=Array['isArray'](_0x4d6877['include'])?_0x4d6877['include']['join'](','):String(_0x4d6877['include']);_0x8c02a7&&_0x4e5ed8['set']('include',_0x8c02a7);}_0x4d6877['filter']&&_0x4e5ed8['set']('filter',String(_0x4d6877['filter']));_0x4d6877['page']&&_0x4e5ed8['set']('page',String(_0x4d6877['page']));_0x4d6877['limit']&&_0x4e5ed8['set']('limit',String(_0x4d6877['limit']));_0x4d6877['userId']&&_0x4e5ed8['set']('userId',String(_0x4d6877['userId']));_0x4d6877['search']&&_0x4e5ed8['set']('search',String(_0x4d6877['search']));_0x4d6877['includeChildTasks']&&_0x4e5ed8['set']('includeChildTasks','true');const _0x28b341=API_BASE+'/tasks'+(_0x4e5ed8['toString']()?'?'+_0x4e5ed8['toString']():''),_0x919856=await fetch(_0x28b341);if(!_0x919856['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x919856['statusText']);return await _0x919856['json']();},async 'getAutomations'(_0x5788f4={}){const _0x94d707=new URLSearchParams();_0x5788f4['environment']&&_0x94d707['set']('environment',String(_0x5788f4['environment']));const _0x40054b=await fetch(API_BASE+'/api/automations'+(_0x94d707['toString']()?'?'+_0x94d707['toString']():''));if(!_0x40054b['ok']){const _0x91f58e=await _0x40054b['json']()['catch'](()=>({}));throw new Error(_0x91f58e['message']||_0x91f58e['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x40054b['statusText']);}return await _0x40054b['json']();},async 'getAutomation'(_0xfd10a6){const _0x4b0b4a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xfd10a6));if(!_0x4b0b4a['ok']){const _0x4b532e=await _0x4b0b4a['json']()['catch'](()=>({}));throw new Error(_0x4b532e['message']||_0x4b532e['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4b0b4a['statusText']);}return await _0x4b0b4a['json']();},async 'createAutomation'(_0x19aec0){const _0x51d548=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19aec0||{})});if(!_0x51d548['ok']){const _0x14c73f=await _0x51d548['json']()['catch'](()=>({}));throw new Error(_0x14c73f['message']||_0x14c73f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x51d548['statusText']);}return await _0x51d548['json']();},async 'updateAutomation'(_0x22a80,_0x19893f){const _0x41930c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22a80),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19893f||{})});if(!_0x41930c['ok']){const _0x29afba=await _0x41930c['json']()['catch'](()=>({}));throw new Error(_0x29afba['message']||_0x29afba['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x41930c['statusText']);}return await _0x41930c['json']();},async 'deleteAutomation'(_0x22199f){const _0xed8919=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22199f),{'method':'DELETE'});if(!_0xed8919['ok']){const _0x3c05a3=await _0xed8919['json']()['catch'](()=>({}));throw new Error(_0x3c05a3['message']||_0x3c05a3['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xed8919['statusText']);}return await _0xed8919['json']();},async 'triggerAutomation'(_0x1244dc){const _0xa21a1e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1244dc)+'/trigger',{'method':'POST'});if(!_0xa21a1e['ok']){const _0x409359=await _0xa21a1e['json']()['catch'](()=>({}));throw new Error(_0x409359['message']||_0x409359['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0xa21a1e['statusText']);}return await _0xa21a1e['json']();},async 'setAutomationEnabled'(_0x33f183,_0x5c5bd4){const _0x14716e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x33f183)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5c5bd4})});if(!_0x14716e['ok']){const _0x5ab271=await _0x14716e['json']()['catch'](()=>({}));throw new Error(_0x5ab271['message']||_0x5ab271['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x14716e['statusText']);}return await _0x14716e['json']();},async 'getAutomationHistory'(_0x4c76f0,_0x2f7bc7=0x32){const _0x1c4476=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4c76f0)+'/history?limit='+encodeURIComponent(String(_0x2f7bc7)));if(!_0x1c4476['ok']){const _0x4957fc=await _0x1c4476['json']()['catch'](()=>({}));throw new Error(_0x4957fc['message']||_0x4957fc['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1c4476['statusText']);}return await _0x1c4476['json']();},async 'getTask'(_0x13cb28,_0x527dd9={}){const _0x183d92=new URLSearchParams();if(_0x527dd9['include']){const _0x5a8cf5=Array['isArray'](_0x527dd9['include'])?_0x527dd9['include']['join'](','):String(_0x527dd9['include']);if(_0x5a8cf5)_0x183d92['set']('include',_0x5a8cf5);}const _0xbe00a7=await fetch(API_BASE+'/tasks/'+_0x13cb28+(_0x183d92['toString']()?'?'+_0x183d92['toString']():''));if(!_0xbe00a7['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xbe00a7['statusText']);return await _0xbe00a7['json']();},async 'getTaskResults'(_0xf95641){const _0x222cc7=await fetch(API_BASE+'/tasks/'+_0xf95641+'/results');if(!_0x222cc7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x222cc7['statusText']);return await _0x222cc7['json']();},async 'getTaskPatches'(_0x344153){const _0x45941e=await fetch(API_BASE+'/tasks/'+_0x344153+'/patches');if(!_0x45941e['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x45941e['statusText']);return await _0x45941e['json']();},async 'getTaskAttachments'(_0x1c7209){const _0x52f293=await fetch(API_BASE+'/tasks/'+_0x1c7209+'/attachments');if(!_0x52f293['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x52f293['statusText']);return await _0x52f293['json']();},async 'uploadAttachments'(_0x3f436f,_0x161e9d){const _0x106cee=new FormData();for(const _0x14b118 of _0x161e9d){_0x106cee['append']('attachments',_0x14b118);}const _0x14b70d=await fetch(API_BASE+'/tasks/'+_0x3f436f+'/attachments',{'method':'POST','body':_0x106cee});if(!_0x14b70d['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x14b70d['statusText']);return await _0x14b70d['json']();},async 'isAINameGenerationAvailable'(){try{const _0x461b28=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x461b28['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x461b28['json']();}catch(_0x12f8ec){return{'available':![],'reason':_0x12f8ec['message']};}},async 'generateTaskName'(_0x48a98f){try{const _0x46cf9f=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x48a98f})});return await _0x46cf9f['json']();}catch(_0x1a55f2){return{'success':![],'error':_0x1a55f2['message']};}},async 'createTask'(_0x2e6382){let _0x2e591a,_0x43a000={};if(_0x2e6382['files']&&_0x2e6382['files']['length']>0x0){const _0x4d6c5f=new FormData();for(const [_0x4cb424,_0x3ee5d0]of Object['entries'](_0x2e6382)){if(_0x4cb424!=='files'){if(_0x3ee5d0==null)continue;typeof _0x3ee5d0==='object'?_0x4d6c5f['append'](_0x4cb424,JSON['stringify'](_0x3ee5d0)):_0x4d6c5f['append'](_0x4cb424,String(_0x3ee5d0));}}for(const _0x2204bb of _0x2e6382['files']){_0x4d6c5f['append']('attachments',_0x2204bb);}_0x2e591a=_0x4d6c5f;}else _0x43a000['Content-Type']='application/json',_0x2e591a=JSON['stringify'](_0x2e6382);const _0x2747ac=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x43a000,'body':_0x2e591a});if(!_0x2747ac['ok']){const _0x5d3f10=await _0x2747ac['json'](),_0x1fb22c=new Error(_0x5d3f10['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2747ac['statusText']),{message:_0x542f74,..._0x3f5e38}=_0x5d3f10;Object['assign'](_0x1fb22c,_0x3f5e38);throw _0x1fb22c;}return await _0x2747ac['json']();},async 'createTestTask'(_0x4711aa){const _0x370825=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4711aa)});if(!_0x370825['ok']){const _0x1165e3=await _0x370825['json']();throw new Error(_0x1165e3['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x370825['statusText']);}return await _0x370825['json']();},async 'createEphemeralTest'(_0xf4da41){const _0x190ae3=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf4da41)});if(!_0x190ae3['ok']){const _0x4e240e=await _0x190ae3['json']();throw new Error(_0x4e240e['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x190ae3['statusText']);}return await _0x190ae3['json']();},async 'createDeployTask'(_0x2780bc){const _0x274ece=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2780bc)});if(!_0x274ece['ok']){const _0xf2b3df=await _0x274ece['json']();throw new Error(_0xf2b3df['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x274ece['statusText']);}return await _0x274ece['json']();},async 'getEnvironments'(){const _0x511cec=await fetch(API_BASE+'/environments');if(!_0x511cec['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x511cec['statusText']);return await _0x511cec['json']();},async 'getEnvironment'(_0x43d7c7){const _0x58a095=await fetch(API_BASE+'/environments/'+_0x43d7c7);if(!_0x58a095['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x58a095['statusText']);return await _0x58a095['json']();},async 'getEnvironmentRepoHistory'(_0x3e812d,_0x342147,_0x5b1215={}){if(!_0x3e812d||!_0x342147)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x52a2b3=new URLSearchParams();if(_0x5b1215['limit'])_0x52a2b3['set']('limit',String(_0x5b1215['limit']));if(_0x5b1215['offset'])_0x52a2b3['set']('offset',String(_0x5b1215['offset']));if(_0x5b1215['search'])_0x52a2b3['set']('search',String(_0x5b1215['search']));if(_0x5b1215['branch'])_0x52a2b3['set']('branch',String(_0x5b1215['branch']));const _0x2eb33a=API_BASE+'/environments/'+encodeURIComponent(_0x3e812d)+'/repos/'+encodeURIComponent(_0x342147)+'/git/history',_0x35172b=await fetch(''+_0x2eb33a+(_0x52a2b3['toString']()?'?'+_0x52a2b3['toString']():''));if(!_0x35172b['ok']){const _0x2034ab=await _0x35172b['json']()['catch'](()=>({}));throw new Error(_0x2034ab['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x35172b['statusText']);}return await _0x35172b['json']();},async 'getEnvironmentRepoCommit'(_0x57728e,_0x2b6901,_0x38ba85){if(!_0x57728e||!_0x2b6901||!_0x38ba85)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x35b0e2=API_BASE+'/environments/'+encodeURIComponent(_0x57728e)+'/repos/'+encodeURIComponent(_0x2b6901)+'/git/commits/'+encodeURIComponent(_0x38ba85),_0x2cba52=await fetch(_0x35b0e2);if(!_0x2cba52['ok']){const _0x32f8d9=await _0x2cba52['json']()['catch'](()=>({}));throw new Error(_0x32f8d9['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2cba52['statusText']);}return await _0x2cba52['json']();},async 'getEnvironmentRepoBranches'(_0xa250a,_0x4de421){if(!_0xa250a||!_0x4de421)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x9b10c7=API_BASE+'/environments/'+encodeURIComponent(_0xa250a)+'/repos/'+encodeURIComponent(_0x4de421)+'/git/branches',_0x428c18=await fetch(_0x9b10c7);if(!_0x428c18['ok']){const _0xd87e0b=await _0x428c18['json']()['catch'](()=>({}));throw new Error(_0xd87e0b['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x428c18['statusText']);}return await _0x428c18['json']();},async 'revertEnvironmentRepoCommit'(_0x1c86db,_0x1ca144,_0x254ac1,_0x437452={}){if(!_0x1c86db||!_0x1ca144||!_0x254ac1)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x57da9d=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c86db)+'/repos/'+encodeURIComponent(_0x1ca144)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x254ac1,..._0x437452})});if(!_0x57da9d['ok']){const _0x8cd442=await _0x57da9d['json']()['catch'](()=>({}));throw new Error(_0x8cd442['message']||_0x8cd442['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x57da9d['statusText']);}return await _0x57da9d['json']();},async 'getTemplates'(_0x58adda={}){const _0x3eca3f=new URLSearchParams();if(_0x58adda['include']){const _0x5cde59=Array['isArray'](_0x58adda['include'])?_0x58adda['include']['join'](','):String(_0x58adda['include']);if(_0x5cde59)_0x3eca3f['set']('include',_0x5cde59);}const _0x46cc59=await fetch(API_BASE+'/templates'+(_0x3eca3f['toString']()?'?'+_0x3eca3f['toString']():''));if(!_0x46cc59['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x46cc59['statusText']);return await _0x46cc59['json']();},async 'getTemplatesForEnvironment'(_0x595fec,_0x47f113={}){if(!_0x595fec)throw new Error('Environment\x20name\x20is\x20required');const _0x1cd1d0=new URLSearchParams();if(_0x47f113['include']){const _0x510912=Array['isArray'](_0x47f113['include'])?_0x47f113['include']['join'](','):String(_0x47f113['include']);if(_0x510912)_0x1cd1d0['set']('include',_0x510912);}const _0x24fbcd=await fetch(API_BASE+'/templates/'+_0x595fec+(_0x1cd1d0['toString']()?'?'+_0x1cd1d0['toString']():''));if(!_0x24fbcd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x595fec+':\x20'+_0x24fbcd['statusText']);return await _0x24fbcd['json']();},async 'getTemplate'(_0x5bdb9e,_0x2ba073,_0x28b03={}){if(!_0x5bdb9e||!_0x2ba073)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x177629=new URLSearchParams();if(_0x28b03['include']){const _0x35b51a=Array['isArray'](_0x28b03['include'])?_0x28b03['include']['join'](','):String(_0x28b03['include']);if(_0x35b51a)_0x177629['set']('include',_0x35b51a);}const _0x1ddf05=await fetch(API_BASE+'/templates/'+_0x5bdb9e+'/'+_0x2ba073+(_0x177629['toString']()?'?'+_0x177629['toString']():''));if(!_0x1ddf05['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x1ddf05['statusText']);return await _0x1ddf05['json']();},async 'getTaskLogs'(_0x4c7441,_0x3a546c={}){if(!_0x4c7441)throw new Error('Task\x20ID\x20is\x20required');const _0x4d18ef=new URLSearchParams();_0x3a546c['tail']&&_0x4d18ef['set']('tail',String(_0x3a546c['tail']));const _0x2a1765=await fetch(API_BASE+'/tasks/'+_0x4c7441+'/logs'+(_0x4d18ef['toString']()?'?'+_0x4d18ef['toString']():''));if(!_0x2a1765['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2a1765['statusText']);return await _0x2a1765['text']();},async 'getContainers'(){const _0x3faf24=await fetch(API_BASE+'/containers');if(!_0x3faf24['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x3faf24['statusText']);return await _0x3faf24['json']();},async 'getContainer'(_0x47d6e5){const _0x51ff3e=await fetch(API_BASE+'/containers/'+_0x47d6e5);if(!_0x51ff3e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x51ff3e['statusText']);return await _0x51ff3e['json']();},async 'startInteractiveContainer'(_0x3de75f){const _0x3007db=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3de75f)});if(!_0x3007db['ok']){const _0x54cde1=await _0x3007db['json']()['catch'](()=>({}));throw new Error(_0x54cde1['message']||'Failed\x20to\x20start\x20container:\x20'+_0x3007db['statusText']);}return await _0x3007db['json']();},async 'stopContainer'(_0x2461bb){const _0xfa3573=await fetch(API_BASE+'/containers/'+_0x2461bb,{'method':'DELETE'});if(!_0xfa3573['ok']){const _0x4d5c25=await _0xfa3573['json']()['catch'](()=>({}));throw new Error(_0x4d5c25['message']||'Failed\x20to\x20stop\x20container:\x20'+_0xfa3573['statusText']);}return await _0xfa3573['json']();},async 'stopTask'(_0x1e479e){if(!_0x1e479e)throw new Error('Task\x20ID\x20is\x20required');const _0x1c3aff=await fetch(API_BASE+'/tasks/'+_0x1e479e+'/stop',{'method':'POST'});if(!_0x1c3aff['ok']){const _0x541117=await _0x1c3aff['json']()['catch'](()=>({}));throw new Error(_0x541117['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1c3aff['statusText']);}return await _0x1c3aff['json']();},async 'interruptTask'(_0x7cb22){if(!_0x7cb22)throw new Error('Task\x20ID\x20is\x20required');const _0x5e0fbb=await fetch(API_BASE+'/tasks/'+_0x7cb22+'/interrupt',{'method':'POST'});if(!_0x5e0fbb['ok']){const _0x3ad308=await _0x5e0fbb['json']()['catch'](()=>({}));throw new Error(_0x3ad308['error']||_0x3ad308['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5e0fbb['statusText']);}return await _0x5e0fbb['json']();},async 'startTask'(_0xb6e905){if(!_0xb6e905)throw new Error('Task\x20ID\x20is\x20required');const _0x45ae19=await fetch(API_BASE+'/tasks/'+_0xb6e905+'/start',{'method':'POST'});if(!_0x45ae19['ok']){const _0x2e0686=await _0x45ae19['json']()['catch'](()=>({}));throw new Error(_0x2e0686['error']||'Failed\x20to\x20start\x20task:\x20'+_0x45ae19['statusText']);}return await _0x45ae19['json']();},async 'deleteTask'(_0x1cbabf){if(!_0x1cbabf)throw new Error('Task\x20ID\x20is\x20required');const _0x17bdba=await fetch(API_BASE+'/tasks/'+_0x1cbabf,{'method':'DELETE'});if(!_0x17bdba['ok']){const _0x21b7cd=await _0x17bdba['json']()['catch'](()=>({}));throw new Error(_0x21b7cd['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x17bdba['statusText']);}return await _0x17bdba['json']();},async 'refreshTasksFromDisk'(){const _0x2b5347=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2b5347['ok']){const _0x2d24dd=await _0x2b5347['json']()['catch'](()=>({}));throw new Error(_0x2d24dd['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2b5347['statusText']);}return await _0x2b5347['json']();},async 'approveTask'(_0x107678,_0x54323a={}){if(!_0x107678)throw new Error('Task\x20ID\x20is\x20required');const _0x571adc={'commit_message':_0x54323a['commit_message']||'','pull':_0x54323a['pull']??![],'push':_0x54323a['push']??![]};_0x54323a['new_branch']&&(_0x571adc['new_branch']=_0x54323a['new_branch']);const _0x545173=await fetch(API_BASE+'/tasks/'+_0x107678+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x571adc)});if(!_0x545173['ok']){const _0x3f92cc=await _0x545173['json']()['catch'](()=>({}));let _0x1770de=_0x3f92cc['error']||_0x3f92cc['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x545173['statusText'];if(_0x3f92cc['results']&&Array['isArray'](_0x3f92cc['results'])){const _0x4f3f32=_0x3f92cc['results']['filter'](_0x35fd45=>!_0x35fd45['success']&&_0x35fd45['error']);_0x4f3f32['length']>0x0&&(_0x1770de=_0x4f3f32[0x0]['error']);}throw new Error(_0x1770de);}return await _0x545173['json']();},async 'getPullRequestInfo'(_0x229322){if(!_0x229322)throw new Error('Task\x20ID\x20is\x20required');const _0x23facf=await fetch(API_BASE+'/tasks/'+_0x229322+'/pull-request-info');if(!_0x23facf['ok']){const _0x94113f=await _0x23facf['json']()['catch'](()=>({}));throw new Error(_0x94113f['error']||_0x94113f['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x23facf['statusText']);}return await _0x23facf['json']();},async 'createPullRequests'(_0x193713,_0xeba1){if(!_0x193713)throw new Error('Task\x20ID\x20is\x20required');if(!_0xeba1||!Array['isArray'](_0xeba1))throw new Error('repos\x20array\x20is\x20required');const _0x253a3f=await fetch(API_BASE+'/tasks/'+_0x193713+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0xeba1})});if(!_0x253a3f['ok']){const _0xb4d4be=await _0x253a3f['json']()['catch'](()=>({}));let _0x25a0da=_0xb4d4be['error']||_0xb4d4be['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x253a3f['statusText'];if(_0xb4d4be['results']&&Array['isArray'](_0xb4d4be['results'])){const _0x59624d=_0xb4d4be['results']['filter'](_0x24bec4=>!_0x24bec4['success']&&_0x24bec4['error']);_0x59624d['length']>0x0&&(_0x25a0da=_0x59624d[0x0]['error']);}throw new Error(_0x25a0da);}return await _0x253a3f['json']();},async 'syncRepos'(_0xe06b87){if(!_0xe06b87)throw new Error('Task\x20ID\x20is\x20required');const _0x4b7bc6=await fetch(API_BASE+'/tasks/'+_0xe06b87+'/sync-repos',{'method':'POST'});if(!_0x4b7bc6['ok']){const _0x4a52de=await _0x4b7bc6['json']()['catch'](()=>({}));throw new Error(_0x4a52de['error']||_0x4a52de['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4b7bc6['statusText']);}return await _0x4b7bc6['json']();},async 'getIbmiSyncInfo'(_0x3dcdba){if(!_0x3dcdba)throw new Error('Task\x20ID\x20is\x20required');const _0x52c7a6=await fetch(API_BASE+'/tasks/'+_0x3dcdba+'/ibmi-sync-info');if(!_0x52c7a6['ok']){const _0x420d6a=await _0x52c7a6['json']()['catch'](()=>({}));throw new Error(_0x420d6a['error']||_0x420d6a['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x52c7a6['json']();},async 'syncToIbmi'(_0x19b282,_0x32c5f9){if(!_0x19b282)throw new Error('Task\x20ID\x20is\x20required');const _0x160d9c=await fetch(API_BASE+'/tasks/'+_0x19b282+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x32c5f9})});if(!_0x160d9c['ok']){const _0x2e0f70=await _0x160d9c['json']()['catch'](()=>({}));throw new Error(_0x2e0f70['error']||_0x2e0f70['message']||'Sync\x20failed');}return await _0x160d9c['json']();},async 'getIbmiSyncLog'(_0x5196b7){if(!_0x5196b7)throw new Error('Task\x20ID\x20is\x20required');const _0x140433=await fetch(API_BASE+'/tasks/'+_0x5196b7+'/ibmi-sync-log');if(!_0x140433['ok']){const _0xe26a66=await _0x140433['json']()['catch'](()=>({}));throw new Error(_0xe26a66['error']||_0xe26a66['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x140433['json']();},async 'pullChanges'(_0x4b0d5f){if(!_0x4b0d5f)throw new Error('Task\x20ID\x20is\x20required');const _0x4c6bb9=await fetch(API_BASE+'/tasks/'+_0x4b0d5f+'/pull-changes',{'method':'POST'});if(!_0x4c6bb9['ok']){const _0x9c4178=await _0x4c6bb9['json']()['catch'](()=>({}));throw new Error(_0x9c4178['error']||_0x9c4178['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4c6bb9['statusText']);}return await _0x4c6bb9['json']();},async 'readFile'(_0xba7c67,_0x235169){if(!_0xba7c67)throw new Error('Task\x20ID\x20is\x20required');if(!_0x235169)throw new Error('File\x20path\x20is\x20required');const _0x11c96b=await fetch(API_BASE+'/tasks/'+_0xba7c67+'/files?path='+encodeURIComponent(_0x235169));if(!_0x11c96b['ok']){const _0x3c2e24=await _0x11c96b['json']()['catch'](()=>({}));throw new Error(_0x3c2e24['error']||_0x3c2e24['message']||'Failed\x20to\x20read\x20file:\x20'+_0x11c96b['statusText']);}return await _0x11c96b['json']();},async 'writeFile'(_0x336fac,_0x3e3c62,_0x14fe83){if(!_0x336fac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3e3c62)throw new Error('File\x20path\x20is\x20required');if(_0x14fe83===undefined)throw new Error('Content\x20is\x20required');const _0x307c13=await fetch(API_BASE+'/tasks/'+_0x336fac+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3e3c62,'content':_0x14fe83})});if(!_0x307c13['ok']){const _0x2dbc77=await _0x307c13['json']()['catch'](()=>({}));throw new Error(_0x2dbc77['error']||_0x2dbc77['message']||'Failed\x20to\x20write\x20file:\x20'+_0x307c13['statusText']);}return await _0x307c13['json']();},async 'discardFile'(_0x4b54d,_0x256266,_0x59f8db){if(!_0x4b54d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x256266)throw new Error('File\x20path\x20is\x20required');if(!_0x59f8db)throw new Error('Repository\x20path\x20is\x20required');const _0x4c6847=await fetch(API_BASE+'/tasks/'+_0x4b54d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x256266,'repoPath':_0x59f8db})});if(!_0x4c6847['ok']){const _0x22fa5a=await _0x4c6847['json']()['catch'](()=>({}));throw new Error(_0x22fa5a['error']||_0x22fa5a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4c6847['statusText']);}return await _0x4c6847['json']();},async 'followUpTask'(_0x30e8d2,_0x502580={}){if(!_0x30e8d2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x502580['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x593e71,_0xe85af4={};if(_0x502580['files']&&_0x502580['files']['length']>0x0){const _0x1b462f=new FormData();_0x1b462f['append']('instructions',_0x502580['instructions']);for(const _0x7634d9 of _0x502580['files']){_0x1b462f['append']('attachments',_0x7634d9);}_0x593e71=_0x1b462f;}else _0xe85af4['Content-Type']='application/json',_0x593e71=JSON['stringify']({'instructions':_0x502580['instructions']});const _0x17a994=await fetch(API_BASE+'/tasks/'+_0x30e8d2+'/follow-up',{'method':'POST','headers':_0xe85af4,'body':_0x593e71});if(!_0x17a994['ok']){const _0x559c3c=await _0x17a994['json']()['catch'](()=>({}));throw new Error(_0x559c3c['error']||_0x559c3c['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x17a994['statusText']);}return await _0x17a994['json']();},async 'getTaskRewindPoints'(_0x2a48ba){if(!_0x2a48ba)throw new Error('Task\x20ID\x20is\x20required');const _0x4297fd=await fetch(API_BASE+'/tasks/'+_0x2a48ba+'/rewind-points');if(!_0x4297fd['ok']){const _0x493ca1=await _0x4297fd['json']()['catch'](()=>({}));throw new Error(_0x493ca1['error']||_0x493ca1['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4297fd['statusText']);}return await _0x4297fd['json']();},async 'rewindTask'(_0x1dbef4,_0x250775={}){if(!_0x1dbef4)throw new Error('Task\x20ID\x20is\x20required');const _0x1e910d=Number['isInteger'](_0x250775['targetFollowUpCount'])?_0x250775['targetFollowUpCount']:0x0,_0x21dee5={'targetFollowUpCount':_0x1e910d};typeof _0x250775['instructions']==='string'&&_0x250775['instructions']['trim']()&&(_0x21dee5['instructions']=_0x250775['instructions']['trim']());typeof _0x250775['rewindFiles']==='boolean'&&(_0x21dee5['rewindFiles']=_0x250775['rewindFiles']);const _0x2b8741=await fetch(API_BASE+'/tasks/'+_0x1dbef4+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21dee5)});if(!_0x2b8741['ok']){const _0x3ccfbf=await _0x2b8741['json']()['catch'](()=>({}));throw new Error(_0x3ccfbf['error']||_0x3ccfbf['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2b8741['statusText']);}return await _0x2b8741['json']();},async 'login'(_0xc0b3d9,_0x5baa0b){const _0x56fed4=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0xc0b3d9,'password':_0x5baa0b})});if(!_0x56fed4['ok']){const _0x45e704=await _0x56fed4['json']();throw new Error(_0x45e704['message']||'Login\x20failed');}return await _0x56fed4['json']();},async 'logout'(){const _0x4ea8da=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4ea8da['ok']){const _0xa5de1a=await _0x4ea8da['json']();throw new Error(_0xa5de1a['message']||'Logout\x20failed');}return await _0x4ea8da['json']();},async 'getCurrentUser'(){const _0x1cfaa5=await fetch(API_BASE+'/auth/me');if(!_0x1cfaa5['ok'])throw new Error('Not\x20authenticated');const _0x14bbf4=await _0x1cfaa5['json']();return _0x14bbf4['user'];},async 'getRolesInfo'(){const _0x34158d=await fetch(API_BASE+'/users/roles');if(!_0x34158d['ok']){const _0x589ecc=await _0x34158d['json']();throw new Error(_0x589ecc['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x34158d['json']();},async 'getUsers'(){const _0x2c8a0c=await fetch(API_BASE+'/users');if(!_0x2c8a0c['ok']){const _0x1baf98=await _0x2c8a0c['json']();throw new Error(_0x1baf98['message']||'Failed\x20to\x20get\x20users');}return await _0x2c8a0c['json']();},async 'getUser'(_0x498a78){const _0x2e9f4c=await fetch(API_BASE+'/users/'+_0x498a78);if(!_0x2e9f4c['ok']){const _0x548ca3=await _0x2e9f4c['json']();throw new Error(_0x548ca3['message']||'Failed\x20to\x20get\x20user');}return await _0x2e9f4c['json']();},async 'createUser'(_0x306cc2){const _0x121e36=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x306cc2)});if(!_0x121e36['ok']){const _0x4c740a=await _0x121e36['json']();throw new Error(_0x4c740a['message']||'Failed\x20to\x20create\x20user');}return await _0x121e36['json']();},async 'updateUser'(_0x4bd271,_0x2d3cca){const _0x2b596f=await fetch(API_BASE+'/users/'+_0x4bd271,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d3cca)});if(!_0x2b596f['ok']){const _0x304df9=await _0x2b596f['json']();throw new Error(_0x304df9['message']||'Failed\x20to\x20update\x20user');}return await _0x2b596f['json']();},async 'deleteUser'(_0x3f5138){const _0x29e747=await fetch(API_BASE+'/users/'+_0x3f5138,{'method':'DELETE'});if(!_0x29e747['ok']){const _0x43645d=await _0x29e747['json']();throw new Error(_0x43645d['message']||'Failed\x20to\x20delete\x20user');}return await _0x29e747['json']();},async 'stopAllContainers'(){const _0x20a7b5=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3f5697=await _0x20a7b5['json']()['catch'](()=>({}));if(!_0x20a7b5['ok'])throw new Error(_0x3f5697['message']||_0x3f5697['error']||'Failed\x20to\x20stop\x20containers');return _0x3f5697;},async 'removeStoppedContainers'(){const _0x4582ac=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x295d1b=await _0x4582ac['json']()['catch'](()=>({}));if(!_0x4582ac['ok'])throw new Error(_0x295d1b['message']||_0x295d1b['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x295d1b;},async 'pruneDockerResources'(){const _0xad02=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x20580b=await _0xad02['json']()['catch'](()=>({}));if(!_0xad02['ok'])throw new Error(_0x20580b['message']||_0x20580b['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x20580b;},async 'createPasswordToken'(_0x36f395,_0x473ffb='setup',_0x1908e5=![]){const _0x28b6c8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x36f395,'type':_0x473ffb,'sendEmail':_0x1908e5})});if(!_0x28b6c8['ok']){const _0x5badcf=await _0x28b6c8['json']();throw new Error(_0x5badcf['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x28b6c8['json']();},async 'getEmailConfig'(){const _0x397a01=await fetch(API_BASE+'/password/email-config');if(!_0x397a01['ok']){const _0x288d92=await _0x397a01['json']();throw new Error(_0x288d92['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x397a01['json']();},async 'updateTaskName'(_0x3a78e7,_0x5d16f4){const _0x495416=await fetch(API_BASE+'/tasks/'+_0x3a78e7,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5d16f4})});if(!_0x495416['ok']){const _0x24e161=await _0x495416['json']();throw new Error(_0x24e161['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x495416['json']();},async 'pinTask'(_0x45ab9c,_0x45fc0d,_0x5cd3ca=null){if(!_0x45ab9c)throw new Error('Task\x20ID\x20is\x20required');const _0x667030={'pinned':_0x45fc0d};_0x5cd3ca&&_0x5cd3ca['length']>0x0&&(_0x667030['additionalTaskIds']=_0x5cd3ca);const _0x3889e8=await fetch(API_BASE+'/tasks/'+_0x45ab9c+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x667030)});if(!_0x3889e8['ok']){const _0x2fe44b=await _0x3889e8['json']();throw new Error(_0x2fe44b['error']||'Failed\x20to\x20pin\x20task');}return await _0x3889e8['json']();},async 'setTaskWinner'(_0xd61897,_0x1489d6,_0x1e8106=[]){if(!_0xd61897)throw new Error('Task\x20ID\x20is\x20required');const _0x2d2ed0=await fetch(API_BASE+'/tasks/'+_0xd61897+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1489d6,'siblings':_0x1e8106})});if(!_0x2d2ed0['ok']){const _0x38eaff=await _0x2d2ed0['json']();throw new Error(_0x38eaff['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2d2ed0['json']();},async 'setTaskLoser'(_0x3a83d9,_0x5a0445){if(!_0x3a83d9)throw new Error('Task\x20ID\x20is\x20required');const _0x1f7b4c=await fetch(API_BASE+'/tasks/'+_0x3a83d9+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5a0445})});if(!_0x1f7b4c['ok']){const _0x75e256=await _0x1f7b4c['json']();throw new Error(_0x75e256['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1f7b4c['json']();},async 'createTaskGroup'(_0x1ca620){const _0x43ef8c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ca620)});if(!_0x43ef8c['ok']){const _0x341388=await _0x43ef8c['json']();throw new Error(_0x341388['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x43ef8c['json']();},async 'getTaskGroups'(_0x4a14b2={}){const _0x3d73f3=new URLSearchParams();if(_0x4a14b2['userId'])_0x3d73f3['set']('userId',String(_0x4a14b2['userId']));if(_0x4a14b2['status'])_0x3d73f3['set']('status',String(_0x4a14b2['status']));if(_0x4a14b2['limit'])_0x3d73f3['set']('limit',String(_0x4a14b2['limit']));const _0x255da8=API_BASE+'/tasks/groups'+(_0x3d73f3['toString']()?'?'+_0x3d73f3['toString']():''),_0x1b65f3=await fetch(_0x255da8);if(!_0x1b65f3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x1b65f3['json']();},async 'getTaskGroup'(_0x120791){const _0x37a55c=await fetch(API_BASE+'/tasks/groups/'+_0x120791);if(!_0x37a55c['ok']){const _0x283f13=await _0x37a55c['json']();throw new Error(_0x283f13['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x37a55c['json']();},async 'updateTaskGroup'(_0x3c6903,_0xca4b4c,_0x5483fb){const _0x4a8c68=await fetch(API_BASE+'/tasks/'+_0x3c6903+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xca4b4c,'groupIndex':_0x5483fb})});if(!_0x4a8c68['ok']){const _0x2654ed=await _0x4a8c68['json']();throw new Error(_0x2654ed['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x4a8c68['json']();},async 'removeTaskFromGroup'(_0x24645a){return this['updateTaskGroup'](_0x24645a,null,null);},async 'deleteTaskGroup'(_0x3f4e06,_0x2c5402=![]){const _0x421aa6=_0x2c5402?'?deleteTasks=true':'',_0x333d7b=await fetch(API_BASE+'/tasks/groups/'+_0x3f4e06+_0x421aa6,{'method':'DELETE'});if(!_0x333d7b['ok']){const _0x3dca5b=await _0x333d7b['json']();throw new Error(_0x3dca5b['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x21278e,_0x318f05){const _0x190ab9=await fetch(API_BASE+'/tasks/groups/'+_0x21278e+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x318f05})});if(!_0x190ab9['ok']){const _0x38881d=await _0x190ab9['json']();throw new Error(_0x38881d['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x190ab9['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x236d2b){if(!_0x236d2b)throw new Error('Task\x20ID\x20is\x20required');const _0xab050a=await fetch(API_BASE+'/tasks/'+_0x236d2b+'/comments');if(!_0xab050a['ok']){const _0xfcabd3=await _0xab050a['json']()['catch'](()=>({}));throw new Error(_0xfcabd3['error']||'Failed\x20to\x20get\x20comments');}return await _0xab050a['json']();},async 'addComment'(_0x5d7557,_0x5c548b){if(!_0x5d7557)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5c548b)throw new Error('Comment\x20content\x20is\x20required');const _0x1b6ee7=await fetch(API_BASE+'/tasks/'+_0x5d7557+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5c548b})});if(!_0x1b6ee7['ok']){const _0x40437e=await _0x1b6ee7['json']()['catch'](()=>({}));throw new Error(_0x40437e['error']||'Failed\x20to\x20add\x20comment');}return await _0x1b6ee7['json']();},async 'updateComment'(_0x1d7412,_0x3b73f1,_0x1f1d5f){if(!_0x1d7412)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3b73f1)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1f1d5f)throw new Error('Comment\x20content\x20is\x20required');const _0x904fa3=await fetch(API_BASE+'/tasks/'+_0x1d7412+'/comments/'+_0x3b73f1,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f1d5f})});if(!_0x904fa3['ok']){const _0x5a2994=await _0x904fa3['json']()['catch'](()=>({}));throw new Error(_0x5a2994['error']||'Failed\x20to\x20update\x20comment');}return await _0x904fa3['json']();},async 'deleteComment'(_0x272e15,_0x58135d){if(!_0x272e15)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58135d)throw new Error('Comment\x20ID\x20is\x20required');const _0x2d2be8=await fetch(API_BASE+'/tasks/'+_0x272e15+'/comments/'+_0x58135d,{'method':'DELETE'});if(!_0x2d2be8['ok']){const _0x11de2d=await _0x2d2be8['json']()['catch'](()=>({}));throw new Error(_0x11de2d['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2d2be8['json']();},async 'createObjective'(_0x1458ce){const _0x5ca8d9={'objective':!![],'name':_0x1458ce['name']||'','environment':_0x1458ce['environment']||null,'agents':_0x1458ce['agents']||[],'branches':_0x1458ce['branches']||{},'isPinned':_0x1458ce['isPinned']||![],'parentObjectiveId':_0x1458ce['parentObjectiveId']||null,'env_vars':_0x1458ce['envVars']||{},'parameters':{'instructions':_0x1458ce['instructions']||''},'files':_0x1458ce['files']||[],'jira':_0x1458ce['jira']||null};return this['createTask'](_0x5ca8d9);},async 'updateObjective'(_0xc1ba19,_0x302ed9,_0x89c69f=[],_0x4da93a=[]){let _0x58fbd9,_0x9ea3b1={};const _0x151afa={..._0x302ed9};_0x4da93a&&_0x4da93a['length']>0x0&&(_0x151afa['removeAttachments']=_0x4da93a);if(_0x89c69f&&_0x89c69f['length']>0x0){const _0x5e7d1e=new FormData();for(const [_0x47271c,_0x5126da]of Object['entries'](_0x151afa)){if(_0x5126da==null)continue;typeof _0x5126da==='object'?_0x5e7d1e['append'](_0x47271c,JSON['stringify'](_0x5126da)):_0x5e7d1e['append'](_0x47271c,String(_0x5126da));}for(const _0xfc1345 of _0x89c69f){_0x5e7d1e['append']('attachments',_0xfc1345);}_0x58fbd9=_0x5e7d1e;}else _0x9ea3b1['Content-Type']='application/json',_0x58fbd9=JSON['stringify'](_0x151afa);const _0x26a22f=await fetch(API_BASE+'/tasks/'+_0xc1ba19,{'method':'PATCH','headers':_0x9ea3b1,'body':_0x58fbd9});if(!_0x26a22f['ok']){const _0x2fb40b=await _0x26a22f['json']();throw new Error(_0x2fb40b['error']||'Failed\x20to\x20update\x20objective');}return await _0x26a22f['json']();},async 'deleteObjective'(_0xef74b6){return this['deleteTask'](_0xef74b6);},async 'launchObjective'(_0x15f4a5,_0x174005={}){const _0x13bb0f=await fetch(API_BASE+'/tasks/'+_0x15f4a5+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x174005)});if(!_0x13bb0f['ok']){const _0xc1259e=await _0x13bb0f['json']();throw new Error(_0xc1259e['error']||'Failed\x20to\x20launch\x20objective');}return await _0x13bb0f['json']();},async 'getObjectiveAttachments'(_0x1306d){return this['getTaskAttachments'](_0x1306d);},async 'createJudgeTask'({environment:_0x50194f,judgeAgent:_0x4b1613,groupId:_0x1247d8,taskIds:_0x2ebffd,judgeCustomInstructions:_0x2a5916,isPinned:_0x259acf}){const _0x3d18f6=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x50194f,'judgeAgent':_0x4b1613,'groupId':_0x1247d8,'taskIds':_0x2ebffd,'judgeCustomInstructions':_0x2a5916,'isPinned':_0x259acf})});if(!_0x3d18f6['ok']){const _0x3fa384=await _0x3d18f6['json']();throw new Error(_0x3fa384['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3d18f6['json']();},async 'getJudgeTasks'(_0x3330ee){const _0x2717fb=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3330ee));if(!_0x2717fb['ok']){const _0x46ecd1=await _0x2717fb['json']();throw new Error(_0x46ecd1['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2717fb['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1de0be,_0x45b2f6,_0x3a3d66=''){const _0x120bcc=await fetch(API_BASE+'/tasks/'+_0x1de0be+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x45b2f6,'customPreamble':_0x3a3d66})});if(!_0x120bcc['ok']){const _0x22a9de=await _0x120bcc['json']();throw new Error(_0x22a9de['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x120bcc['json']();},async 'getJiraConfig'(){const _0x189883=await fetch(API_BASE+'/jira/config');if(!_0x189883['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x189883['json']();},async 'getJiraIssue'(_0x5e1490){const _0x24d459=await fetch(API_BASE+'/jira/issues/'+_0x5e1490);if(!_0x24d459['ok']){const _0x5f469a=await _0x24d459['json']()['catch'](()=>({}));throw new Error(_0x5f469a['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x24d459['statusText']);}return await _0x24d459['json']();},async 'searchJiraIssues'(_0xd8d8f9,_0x5f04c2=0x14){const _0x27d9ce=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xd8d8f9,'maxResults':_0x5f04c2})});if(!_0x27d9ce['ok']){const _0x392c21=await _0x27d9ce['json']()['catch'](()=>({}));throw new Error(_0x392c21['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x27d9ce['statusText']);}return await _0x27d9ce['json']();},async 'postJiraComment'(_0xc3c754,_0x13515f){const _0x5ccad2=await fetch(API_BASE+'/jira/issues/'+_0xc3c754+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x13515f})});if(!_0x5ccad2['ok']){const _0x1f8604=await _0x5ccad2['json']()['catch'](()=>({}));throw new Error(_0x1f8604['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5ccad2['statusText']);}return await _0x5ccad2['json']();},async 'getJiraComments'(_0x39d58f){const _0x192e31=await fetch(API_BASE+'/jira/issues/'+_0x39d58f+'/comments');if(!_0x192e31['ok']){const _0x51394a=await _0x192e31['json']()['catch'](()=>({}));throw new Error(_0x51394a['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x192e31['statusText']);}return await _0x192e31['json']();},async 'promptParameter'({environment:_0x5b2b45,command:_0x45b74d,parser:parser='json'}){const _0x202f0c=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5b2b45,'command':_0x45b74d,'parser':parser})});if(!_0x202f0c['ok']){const _0x28da7f=await _0x202f0c['json']()['catch'](()=>({}));throw new Error(_0x28da7f['message']||_0x28da7f['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x202f0c['statusText']);}return await _0x202f0c['json']();},async 'promptParameterStream'(_0x3b1708,_0x4500f7){const _0x295282=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b1708)});if(!_0x295282['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x295282['statusText']);const _0x4f1e25=_0x295282['body']['getReader'](),_0x2610c8=new TextDecoder();let _0x175475='';return new Promise((_0x50f936,_0x1826e1)=>{const _0xa65dab=async()=>{try{const {done:_0x54d320,value:_0x3cc664}=await _0x4f1e25['read']();if(_0x54d320)return;_0x175475+=_0x2610c8['decode'](_0x3cc664,{'stream':!![]});const _0x2d7027=_0x175475['split']('\x0a\x0a');_0x175475=_0x2d7027['pop']()||'';for(const _0x236257 of _0x2d7027){if(!_0x236257['trim']())continue;const _0x1cdf1=_0x236257['split']('\x0a');let _0x44f5f6='message',_0x29269e='';for(const _0x302f07 of _0x1cdf1){if(_0x302f07['startsWith']('event:'))_0x44f5f6=_0x302f07['substring'](0x6)['trim']();else _0x302f07['startsWith']('data:')&&(_0x29269e=_0x302f07['substring'](0x5)['trim']());}if(!_0x29269e)continue;try{const _0x29084e=JSON['parse'](_0x29269e);if(_0x44f5f6==='progress'&&_0x4500f7)_0x4500f7(_0x29084e['stage'],_0x29084e['message']);else{if(_0x44f5f6==='result'){_0x50f936(_0x29084e);return;}else{if(_0x44f5f6==='error'){let _0x2828f3=_0x29084e['message']||_0x29084e['error']||'Prompt\x20command\x20failed';_0x29084e['rawOutput']&&(_0x2828f3+='\x0a\x0aRaw\x20output:\x0a'+_0x29084e['rawOutput']);_0x1826e1(new Error(_0x2828f3));return;}}}}catch(_0x1c7429){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1c7429),console['error']('Event\x20type:',_0x44f5f6),console['error']('Event\x20data:',_0x29269e),console['error']('First\x20200\x20chars:',_0x29269e['substring'](0x0,0xc8)),_0x1826e1(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1c7429['message']+'\x0a\x0aData:\x20'+_0x29269e['substring'](0x0,0x1f4)));return;}}_0xa65dab();}catch(_0xfa7a29){_0x1826e1(_0xfa7a29);}};_0xa65dab();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x53e726){const _0x56855a=await fetch(''+API_BASE+_0x53e726);if(!_0x56855a['ok']){const _0x1de4c1=await _0x56855a['json']()['catch'](()=>({'error':_0x56855a['statusText']})),_0x472898=new Error(_0x1de4c1['error']||_0x1de4c1['message']||_0x56855a['statusText']);if(_0x1de4c1['detail']!==undefined)_0x472898['detail']=_0x1de4c1['detail'];throw _0x472898;}return await _0x56855a['json']();},async 'post'(_0x40019f,_0x1a80d0){const _0x4d8fc5=await fetch(''+API_BASE+_0x40019f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a80d0)});if(!_0x4d8fc5['ok']){const _0x3f326e=await _0x4d8fc5['json']()['catch'](()=>({'error':_0x4d8fc5['statusText']})),_0x4bb8ab=new Error(_0x3f326e['error']||_0x3f326e['message']||_0x4d8fc5['statusText']);if(_0x3f326e['detail']!==undefined)_0x4bb8ab['detail']=_0x3f326e['detail'];throw _0x4bb8ab;}return await _0x4d8fc5['json']();},async 'put'(_0x4f367c,_0xe605f1){const _0x246815=await fetch(''+API_BASE+_0x4f367c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe605f1)});if(!_0x246815['ok']){const _0x5aefc6=await _0x246815['json']()['catch'](()=>({'error':_0x246815['statusText']})),_0x3c29e1=new Error(_0x5aefc6['error']||_0x5aefc6['message']||_0x246815['statusText']);if(_0x5aefc6['detail']!==undefined)_0x3c29e1['detail']=_0x5aefc6['detail'];throw _0x3c29e1;}return await _0x246815['json']();},async 'delete'(_0x2845c8,_0x981b04){const _0x3c5cee={'method':'DELETE'};_0x981b04&&(_0x3c5cee['headers']={'Content-Type':'application/json'},_0x3c5cee['body']=JSON['stringify'](_0x981b04));const _0x3afff2=await fetch(''+API_BASE+_0x2845c8,_0x3c5cee);if(!_0x3afff2['ok']){const _0x3e7359=await _0x3afff2['json']()['catch'](()=>({'error':_0x3afff2['statusText']})),_0x35ff9e=new Error(_0x3e7359['error']||_0x3e7359['message']||_0x3afff2['statusText']);if(_0x3e7359['detail']!==undefined)_0x35ff9e['detail']=_0x3e7359['detail'];throw _0x35ff9e;}return await _0x3afff2['json']();},async 'getSkills'(){const _0x3dbd45=await fetch(API_BASE+'/skills');if(!_0x3dbd45['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3dbd45['statusText']);return await _0x3dbd45['json']();},async 'getSkill'(_0x35d106){const _0x1c50fa=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35d106));if(!_0x1c50fa['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c50fa['statusText']);return await _0x1c50fa['json']();},async 'createSkill'(_0x36fd96){const _0xbabd42=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36fd96)});if(!_0xbabd42['ok']){const _0x66d64f=await _0xbabd42['json']()['catch'](()=>({'error':_0xbabd42['statusText']})),_0x5db475=new Error(_0x66d64f['error']||_0x66d64f['message']||_0xbabd42['statusText']);if(_0x66d64f['detail']!==undefined)_0x5db475['detail']=_0x66d64f['detail'];throw _0x5db475;}return await _0xbabd42['json']();},async 'updateSkill'(_0x2926b7,_0x1ac343){const _0x39b593=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2926b7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ac343)});if(!_0x39b593['ok']){const _0x5d6996=await _0x39b593['json']()['catch'](()=>({'error':_0x39b593['statusText']})),_0x2e4db9=new Error(_0x5d6996['error']||_0x5d6996['message']||_0x39b593['statusText']);if(_0x5d6996['detail']!==undefined)_0x2e4db9['detail']=_0x5d6996['detail'];throw _0x2e4db9;}return await _0x39b593['json']();},async 'deleteSkill'(_0x311f39){const _0x3bafb0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x311f39),{'method':'DELETE'});if(!_0x3bafb0['ok']){const _0x4a9879=await _0x3bafb0['json']()['catch'](()=>({'error':_0x3bafb0['statusText']})),_0x11162c=new Error(_0x4a9879['error']||_0x4a9879['message']||_0x3bafb0['statusText']);if(_0x4a9879['detail']!==undefined)_0x11162c['detail']=_0x4a9879['detail'];throw _0x11162c;}return await _0x3bafb0['json']();},async 'getSkillFile'(_0x5137ba,_0x5c56d1){const _0x5a5f53=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5137ba)+'/files/'+_0x5c56d1);if(!_0x5a5f53['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5a5f53['statusText']);return await _0x5a5f53['json']();},async 'saveSkillFile'(_0x4389ee,_0x31cbfa,_0x5534c1){const _0x483eb9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4389ee)+'/files/'+_0x31cbfa,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5534c1})});if(!_0x483eb9['ok']){const _0x2b18d1=await _0x483eb9['json']()['catch'](()=>({'error':_0x483eb9['statusText']})),_0x2ca648=new Error(_0x2b18d1['error']||_0x2b18d1['message']||_0x483eb9['statusText']);if(_0x2b18d1['detail']!==undefined)_0x2ca648['detail']=_0x2b18d1['detail'];throw _0x2ca648;}return await _0x483eb9['json']();},async 'deleteSkillFile'(_0x1d5476,_0x3c7d20){const _0x4e3fe8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1d5476)+'/files/'+_0x3c7d20,{'method':'DELETE'});if(!_0x4e3fe8['ok']){const _0x666d13=await _0x4e3fe8['json']()['catch'](()=>({'error':_0x4e3fe8['statusText']})),_0x1197a0=new Error(_0x666d13['error']||_0x666d13['message']||_0x4e3fe8['statusText']);if(_0x666d13['detail']!==undefined)_0x1197a0['detail']=_0x666d13['detail'];throw _0x1197a0;}return await _0x4e3fe8['json']();},async 'pullSkills'(){const _0x486e2f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x486e2f['ok']){const _0x3786d9=await _0x486e2f['json']()['catch'](()=>({'error':_0x486e2f['statusText']})),_0x52bcc1=new Error(_0x3786d9['error']||_0x3786d9['message']||_0x486e2f['statusText']);if(_0x3786d9['detail']!==undefined)_0x52bcc1['detail']=_0x3786d9['detail'];throw _0x52bcc1;}return await _0x486e2f['json']();},async 'commitSkills'(_0x29bb03,_0x1be5e4={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1be5e4,_0x3cef6c=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x29bb03,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3cef6c['ok']){const _0x5e1615=await _0x3cef6c['json']()['catch'](()=>({'error':_0x3cef6c['statusText']})),_0x358d26=new Error(_0x5e1615['error']||_0x5e1615['message']||_0x3cef6c['statusText']);if(_0x5e1615['detail']!==undefined)_0x358d26['detail']=_0x5e1615['detail'];throw _0x358d26;}return await _0x3cef6c['json']();},async 'discardSkillsChanges'(){const _0x2283ff=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2283ff['ok']){const _0x556f7e=await _0x2283ff['json']()['catch'](()=>({'error':_0x2283ff['statusText']})),_0x152241=new Error(_0x556f7e['error']||_0x556f7e['message']||_0x2283ff['statusText']);if(_0x556f7e['detail']!==undefined)_0x152241['detail']=_0x556f7e['detail'];throw _0x152241;}return await _0x2283ff['json']();},async 'getSkillCatalog'(){const _0xffc12b=await fetch(API_BASE+'/external-skills/catalog');if(!_0xffc12b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xffc12b['statusText']);return await _0xffc12b['json']();},async 'getImportedSkillsRegistry'(){const _0xea8b23=await fetch(API_BASE+'/external-skills/registry');if(!_0xea8b23['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0xea8b23['statusText']);return await _0xea8b23['json']();},async 'importCatalogSkill'(_0x282a5e){const _0x3ff27b=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x282a5e})});if(!_0x3ff27b['ok']){const _0x5bbe62=await _0x3ff27b['json']()['catch'](()=>({'error':_0x3ff27b['statusText']})),_0x2a694e=new Error(_0x5bbe62['error']||_0x5bbe62['message']||_0x3ff27b['statusText']);if(_0x5bbe62['detail']!==undefined)_0x2a694e['detail']=_0x5bbe62['detail'];throw _0x2a694e;}return await _0x3ff27b['json']();},async 'importSkillFromGit'(_0x839e88,_0x226980,_0xe8436='main',_0x47b53d=null){const _0x5430e4=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x839e88,'skillPath':_0x226980,'branch':_0xe8436,'skillId':_0x47b53d})});if(!_0x5430e4['ok']){const _0x538082=await _0x5430e4['json']()['catch'](()=>({'error':_0x5430e4['statusText']})),_0x7223e0=new Error(_0x538082['error']||_0x538082['message']||_0x5430e4['statusText']);if(_0x538082['detail']!==undefined)_0x7223e0['detail']=_0x538082['detail'];throw _0x7223e0;}return await _0x5430e4['json']();},async 'probeMarketplace'(_0x14e087,_0x5e151a='main'){const _0x275708=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14e087,'branch':_0x5e151a})});if(!_0x275708['ok']){const _0x45aeba=await _0x275708['json']()['catch'](()=>({'error':_0x275708['statusText']})),_0x122850=new Error(_0x45aeba['error']||_0x45aeba['message']||_0x275708['statusText']);if(_0x45aeba['detail']!==undefined)_0x122850['detail']=_0x45aeba['detail'];throw _0x122850;}return await _0x275708['json']();},async 'importMarketplaceBundle'(_0x3d68f1,_0x1fbb95,_0xaf2eaa,_0x301dd2=null){const _0xf076c1=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3d68f1,'branch':_0x1fbb95,'bundleId':_0xaf2eaa,'selectedSkills':_0x301dd2})});if(!_0xf076c1['ok']){const _0x1ae624=await _0xf076c1['json']()['catch'](()=>({'error':_0xf076c1['statusText']})),_0x5f06b4=new Error(_0x1ae624['error']||_0x1ae624['message']||_0xf076c1['statusText']);if(_0x1ae624['detail']!==undefined)_0x5f06b4['detail']=_0x1ae624['detail'];throw _0x5f06b4;}return await _0xf076c1['json']();},async 'importSkillFromFolder'(_0x3cac93,_0x43d726=null){const _0x494fce=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3cac93,'skillId':_0x43d726})});if(!_0x494fce['ok']){const _0x50c8f1=await _0x494fce['json']()['catch'](()=>({'error':_0x494fce['statusText']})),_0x2634fb=new Error(_0x50c8f1['error']||_0x50c8f1['message']||_0x494fce['statusText']);if(_0x50c8f1['detail']!==undefined)_0x2634fb['detail']=_0x50c8f1['detail'];throw _0x2634fb;}return await _0x494fce['json']();},async 'importSkillFromNpm'(_0x2f0610,_0x4621e9='latest',_0x15a074=null,_0x5b7808=null){const _0x4f55d9=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2f0610,'version':_0x4621e9,'skillId':_0x15a074,'registry':_0x5b7808})});if(!_0x4f55d9['ok']){const _0x523496=await _0x4f55d9['json']()['catch'](()=>({'error':_0x4f55d9['statusText']})),_0x41321e=new Error(_0x523496['error']||_0x523496['message']||_0x4f55d9['statusText']);if(_0x523496['detail']!==undefined)_0x41321e['detail']=_0x523496['detail'];throw _0x41321e;}return await _0x4f55d9['json']();},async 'checkSkillUpdates'(_0x53c6bc){const _0x4bbfa3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x53c6bc)+'/check-updates',{'method':'POST'});if(!_0x4bbfa3['ok']){const _0x1a0739=await _0x4bbfa3['json']()['catch'](()=>({'error':_0x4bbfa3['statusText']})),_0x479d25=new Error(_0x1a0739['error']||_0x1a0739['message']||_0x4bbfa3['statusText']);if(_0x1a0739['detail']!==undefined)_0x479d25['detail']=_0x1a0739['detail'];throw _0x479d25;}return await _0x4bbfa3['json']();},async 'updateExternalSkill'(_0x1eaf09){const _0x279e31=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1eaf09)+'/update',{'method':'POST'});if(!_0x279e31['ok']){const _0xfe82ac=await _0x279e31['json']()['catch'](()=>({'error':_0x279e31['statusText']})),_0x319d4a=new Error(_0xfe82ac['error']||_0xfe82ac['message']||_0x279e31['statusText']);if(_0xfe82ac['detail']!==undefined)_0x319d4a['detail']=_0xfe82ac['detail'];throw _0x319d4a;}return await _0x279e31['json']();},async 'updateSkillFlags'(_0x3b5b40,_0x36ec51){const _0x1f4663=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3b5b40)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x36ec51})});if(!_0x1f4663['ok']){const _0x574219=await _0x1f4663['json']()['catch'](()=>({'error':_0x1f4663['statusText']})),_0x4fb1db=new Error(_0x574219['error']||_0x574219['message']||_0x1f4663['statusText']);if(_0x574219['detail']!==undefined)_0x4fb1db['detail']=_0x574219['detail'];throw _0x4fb1db;}return await _0x1f4663['json']();},async 'removeFromImportedRegistry'(_0x2b520e){const _0x27bc1b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2b520e)+'/registry',{'method':'DELETE'});if(!_0x27bc1b['ok']){const _0x42da98=await _0x27bc1b['json']()['catch'](()=>({'error':_0x27bc1b['statusText']})),_0x44a25d=new Error(_0x42da98['error']||_0x42da98['message']||_0x27bc1b['statusText']);if(_0x42da98['detail']!==undefined)_0x44a25d['detail']=_0x42da98['detail'];throw _0x44a25d;}return await _0x27bc1b['json']();},async 'getTeams'(){const _0x4787c1=await fetch(API_BASE+'/teams');if(!_0x4787c1['ok']){const _0x5833c1=await _0x4787c1['json']()['catch'](()=>({'message':_0x4787c1['statusText']}));throw new Error(_0x5833c1['message']||'Failed\x20to\x20get\x20teams');}return await _0x4787c1['json']();},async 'getTeam'(_0x598c05){const _0x585e5e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x598c05));if(!_0x585e5e['ok']){const _0x3e9762=await _0x585e5e['json']()['catch'](()=>({'message':_0x585e5e['statusText']}));throw new Error(_0x3e9762['message']||'Failed\x20to\x20get\x20team');}return await _0x585e5e['json']();},async 'createTeam'(_0x2b7d77){const _0x1386d6=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b7d77)});if(!_0x1386d6['ok']){const _0x520cd8=await _0x1386d6['json']()['catch'](()=>({'message':_0x1386d6['statusText']}));throw new Error(_0x520cd8['message']||'Failed\x20to\x20create\x20team');}return await _0x1386d6['json']();},async 'updateTeam'(_0x37e750,_0x37b62a){const _0x45b461=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x37e750),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37b62a)});if(!_0x45b461['ok']){const _0x392cbd=await _0x45b461['json']()['catch'](()=>({'message':_0x45b461['statusText']}));throw new Error(_0x392cbd['message']||'Failed\x20to\x20update\x20team');}return await _0x45b461['json']();},async 'deleteTeam'(_0x46e5f6){const _0x19add9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x46e5f6),{'method':'DELETE'});if(!_0x19add9['ok']){const _0x241514=await _0x19add9['json']()['catch'](()=>({'message':_0x19add9['statusText']}));throw new Error(_0x241514['message']||'Failed\x20to\x20delete\x20team');}return await _0x19add9['json']();},async 'addTeamMember'(_0x15f1a9,_0x8b9a2d){const _0x1435b6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x15f1a9)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x8b9a2d})});if(!_0x1435b6['ok']){const _0x15cbfa=await _0x1435b6['json']()['catch'](()=>({'message':_0x1435b6['statusText']}));throw new Error(_0x15cbfa['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x1435b6['json']();},async 'removeTeamMember'(_0x4acfd2,_0x2c7a36){const _0x58e39c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4acfd2)+'/members/'+encodeURIComponent(_0x2c7a36),{'method':'DELETE'});if(!_0x58e39c['ok']){const _0x33530b=await _0x58e39c['json']()['catch'](()=>({'message':_0x58e39c['statusText']}));throw new Error(_0x33530b['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x58e39c['json']();},async 'getBindings'(_0x1e0340={}){const _0x156146=new URLSearchParams();if(_0x1e0340['resource_type'])_0x156146['set']('resource_type',_0x1e0340['resource_type']);if(_0x1e0340['resource_id'])_0x156146['set']('resource_id',_0x1e0340['resource_id']);if(_0x1e0340['subject_type'])_0x156146['set']('subject_type',_0x1e0340['subject_type']);if(_0x1e0340['subject_id'])_0x156146['set']('subject_id',_0x1e0340['subject_id']);const _0x57beaf=_0x156146['toString'](),_0xd31c67=await fetch(API_BASE+'/bindings'+(_0x57beaf?'?'+_0x57beaf:''));if(!_0xd31c67['ok']){const _0x32760a=await _0xd31c67['json']()['catch'](()=>({'message':_0xd31c67['statusText']}));throw new Error(_0x32760a['message']||'Failed\x20to\x20get\x20bindings');}return await _0xd31c67['json']();},async 'createBinding'(_0x12a6f5){const _0x309bd8=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12a6f5)});if(!_0x309bd8['ok']){const _0x94f32=await _0x309bd8['json']()['catch'](()=>({'message':_0x309bd8['statusText']}));throw new Error(_0x94f32['message']||'Failed\x20to\x20create\x20binding');}return await _0x309bd8['json']();},async 'updateBinding'(_0xe60373,_0xd0e7cd){const _0x2c0d35=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xe60373),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0e7cd)});if(!_0x2c0d35['ok']){const _0x450589=await _0x2c0d35['json']()['catch'](()=>({'message':_0x2c0d35['statusText']}));throw new Error(_0x450589['message']||'Failed\x20to\x20update\x20binding');}return await _0x2c0d35['json']();},async 'deleteBinding'(_0x31487a){const _0x3065a6=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x31487a),{'method':'DELETE'});if(!_0x3065a6['ok']){const _0x1ff9d5=await _0x3065a6['json']()['catch'](()=>({'message':_0x3065a6['statusText']}));throw new Error(_0x1ff9d5['message']||'Failed\x20to\x20delete\x20binding');}return await _0x3065a6['json']();},async 'getRoleDefinitions'(){const _0x432796=await fetch(API_BASE+'/roles');if(!_0x432796['ok']){const _0x1b392d=await _0x432796['json']()['catch'](()=>({'message':_0x432796['statusText']}));throw new Error(_0x1b392d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x432796['json']();},async 'getRoleDefinition'(_0xa8a9f7){const _0x364070=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xa8a9f7));if(!_0x364070['ok']){const _0x59b0d4=await _0x364070['json']()['catch'](()=>({'message':_0x364070['statusText']}));throw new Error(_0x59b0d4['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x364070['json']();},async 'createRoleDefinition'(_0x1722aa){const _0x16bbaa=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1722aa)});if(!_0x16bbaa['ok']){const _0x97a97e=await _0x16bbaa['json']()['catch'](()=>({'message':_0x16bbaa['statusText']}));throw new Error(_0x97a97e['message']||_0x97a97e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x16bbaa['json']();},async 'updateRoleDefinition'(_0x5e5ce0,_0x2f52fb){const _0x1de4f1=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5e5ce0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f52fb)});if(!_0x1de4f1['ok']){const _0x1a3fec=await _0x1de4f1['json']()['catch'](()=>({'message':_0x1de4f1['statusText']}));throw new Error(_0x1a3fec['message']||_0x1a3fec['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x1de4f1['json']();},async 'deleteRoleDefinition'(_0xafa4c4){const _0x35a042=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xafa4c4),{'method':'DELETE'});if(!_0x35a042['ok']){const _0x16627e=await _0x35a042['json']()['catch'](()=>({'message':_0x35a042['statusText']}));throw new Error(_0x16627e['message']||_0x16627e['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x35a042['json']();},async 'getAvailablePermissions'(){const _0x32fd4e=await fetch(API_BASE+'/roles/available-permissions');if(!_0x32fd4e['ok']){const _0x1bc55f=await _0x32fd4e['json']()['catch'](()=>({'message':_0x32fd4e['statusText']}));throw new Error(_0x1bc55f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x32fd4e['json']();},async 'getGitProviderAllowedTeams'(_0x12771c){const _0x56046a=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x12771c)+'/allowed-teams');if(!_0x56046a['ok']){const _0x14fe8a=await _0x56046a['json']()['catch'](()=>({'message':_0x56046a['statusText']}));throw new Error(_0x14fe8a['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x56046a['json']();},async 'setGitProviderAllowedTeams'(_0xcce4f2,_0x25cf82){const _0x1246dd=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xcce4f2)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x25cf82})});if(!_0x1246dd['ok']){const _0x248500=await _0x1246dd['json']()['catch'](()=>({'message':_0x1246dd['statusText']}));throw new Error(_0x248500['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1246dd['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 _0x3183aa=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4eacd5=>{_0x4eacd5['el']['style']['bottom']=_0x3183aa+'px';const _0x500972=_0x4eacd5['el']['offsetHeight']||toastState['defaultHeight'];_0x3183aa+=_0x500972+toastState['gap'];});});}function removeToastById(_0x13fdbc){const _0x2e846b=toastState['toasts']['findIndex'](_0x57d18d=>_0x57d18d['id']===_0x13fdbc);if(_0x2e846b===-0x1)return;const _0x906674=toastState['toasts'][_0x2e846b];if(_0x906674['timeoutId'])clearTimeout(_0x906674['timeoutId']);_0x906674['el']['classList']['remove']('show'),setTimeout(()=>_0x906674['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2e846b,0x1),repositionAllToasts();}function registerToast(_0x5a6fb9){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x5a6fb9),repositionAllToasts(),_0x5a6fb9['id'];}function getNextToastId(){return toastState['nextId']++;}export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x34468d){const _0x8397a1=new Date(_0x34468d),_0x1ad4f6=new Date(),_0x11469f=_0x1ad4f6-_0x8397a1,_0x2b50ba=Math['floor'](_0x11469f/0x3e8),_0x4cfb2f=Math['floor'](_0x2b50ba/0x3c),_0x2630b4=Math['floor'](_0x4cfb2f/0x3c),_0x5951ff=Math['floor'](_0x2630b4/0x18);if(_0x2b50ba<0x3c)return'now';if(_0x4cfb2f<0x3c)return _0x4cfb2f+'m\x20ago';if(_0x2630b4<0x18)return _0x2630b4+'h\x20ago';return _0x5951ff+'d\x20ago';},'getStatusIcon'(_0x2a0741){switch(_0x2a0741){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3625a7){switch(_0x3625a7){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'(_0x48b529,_0x57254a=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x174380={};_0x174380['text/plain']=new Blob([_0x48b529],{'type':'text/plain'});_0x57254a&&(_0x174380['text/html']=new Blob([_0x57254a],{'type':'text/html'}));const _0x145db2=new ClipboardItem(_0x174380);return await navigator['clipboard']['write']([_0x145db2]),!![];}catch(_0x2e32aa){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2e32aa);}try{const _0x514204=_0x5ad832=>{_0x5ad832['preventDefault'](),_0x5ad832['clipboardData']['setData']('text/plain',_0x48b529),_0x57254a&&_0x5ad832['clipboardData']['setData']('text/html',_0x57254a);};document['addEventListener']('copy',_0x514204);const _0x4da9f2=document['execCommand']('copy');document['removeEventListener']('copy',_0x514204);if(_0x4da9f2)return!![];}catch(_0xecd51b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xecd51b);}try{const _0x257735=document['createElement']('textarea');_0x257735['value']=_0x48b529,_0x257735['style']['position']='fixed',_0x257735['style']['opacity']='0',_0x257735['style']['pointerEvents']='none',document['body']['appendChild'](_0x257735),_0x257735['select']();const _0x42089f=document['execCommand']('copy');return document['body']['removeChild'](_0x257735),_0x42089f;}catch(_0x862d40){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x862d40),![];}},'showToast'(_0x1bb8af,_0x4e6502='info'){const _0x122fce=getNextToastId(),_0x46a58a=document['createElement']('div');_0x46a58a['className']='toast\x20toast-'+_0x4e6502,_0x46a58a['textContent']=_0x1bb8af,_0x46a58a['dataset']['toastId']=_0x122fce,document['body']['appendChild'](_0x46a58a);const _0x3bf6e5=_0x4e6502==='error'?0x2710:0xbb8,_0x1adebd=setTimeout(()=>{removeToastById(_0x122fce);},_0x3bf6e5),_0x27bc8e={'id':_0x122fce,'el':_0x46a58a,'timeoutId':_0x1adebd};return registerToast(_0x27bc8e),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x46a58a['classList']['add']('show');});}),_0x122fce;},'showError'(_0x4e46d8){console['error'](_0x4e46d8);const _0x2cf8e0=typeof _0x4e46d8==='string'?_0x4e46d8:_0x4e46d8['message']||'An\x20error\x20occurred';this['showToast'](_0x2cf8e0,'error');},'showSuccess'(_0x1f7e9a){this['showToast'](_0x1f7e9a,'success');},'capitalize'(_0x131524){if(!_0x131524)return'';return _0x131524['charAt'](0x0)['toUpperCase']()+_0x131524['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4ddbae){if(_0x4ddbae===null||_0x4ddbae===undefined)return'';return String(_0x4ddbae)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');},'ansiToHtml'(_0x4adf56){if(_0x4adf56===null||_0x4adf56===undefined)return'';let _0x36306a=this['escapeHtml'](_0x4adf56);const _0x34085f={'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'},_0x3d5114={'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 _0x2aa77b=0x0;return _0x36306a=_0x36306a['replace'](/\x1b\[([0-9;]*)m/g,(_0x4babaa,_0x1773e0)=>{if(!_0x1773e0||_0x1773e0==='0'){const _0x341baa='</span>'['repeat'](_0x2aa77b);return _0x2aa77b=0x0,_0x341baa;}const _0x20a032=_0x1773e0['split'](';'),_0x4cf8e9=[];for(const _0x232840 of _0x20a032){if(_0x232840==='1')_0x4cf8e9['push']('font-weight:bold');else{if(_0x232840==='2')_0x4cf8e9['push']('opacity:0.7');else{if(_0x232840==='3')_0x4cf8e9['push']('font-style:italic');else{if(_0x232840==='4')_0x4cf8e9['push']('text-decoration:underline');else{if(_0x232840==='9')_0x4cf8e9['push']('text-decoration:line-through');else{if(_0x34085f[_0x232840])_0x4cf8e9['push']('color:'+_0x34085f[_0x232840]);else{if(_0x3d5114[_0x232840])_0x4cf8e9['push']('background-color:'+_0x3d5114[_0x232840]);}}}}}}}if(_0x4cf8e9['length']>0x0)return _0x2aa77b++,'<span\x20style=\x22'+_0x4cf8e9['join'](';')+'\x22>';return'';}),_0x36306a+='</span>'['repeat'](_0x2aa77b),_0x36306a=_0x36306a['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3fa7b3,_0x113790)=>{if(!_0x113790||_0x113790==='0')return'';const _0x4cea87=_0x113790['split'](';'),_0x467f9c=[];for(const _0x145c82 of _0x4cea87){if(_0x145c82==='1')_0x467f9c['push']('font-weight:bold');else{if(_0x34085f[_0x145c82])_0x467f9c['push']('color:'+_0x34085f[_0x145c82]);else{if(_0x3d5114[_0x145c82])_0x467f9c['push']('background-color:'+_0x3d5114[_0x145c82]);}}}if(_0x467f9c['length']>0x0)return'<span\x20style=\x22'+_0x467f9c['join'](';')+'\x22>';return'';}),_0x36306a;},'showModal'({title:_0x3e4972,content:_0x84477,buttons:buttons=[]}){const _0x50e881='\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'](_0x3e4972)+'</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>&times;</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'+_0x84477+'\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']((_0x1d5099,_0x410acf)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x1d5099['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x410acf+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x1d5099['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',_0x4ccba7=document['createElement']('div');_0x4ccba7['id']='utils-modal',_0x4ccba7['className']='modal',_0x4ccba7['innerHTML']=_0x50e881,document['body']['appendChild'](_0x4ccba7);const _0x3b4a74=document['getElementById']('utils-modal-close');_0x3b4a74&&_0x3b4a74['addEventListener']('click',()=>this['hideModal']());const _0x440159=_0x4ccba7['querySelectorAll']('[data-btn-index]');_0x440159['forEach'](_0x214006=>{const _0x16235e=parseInt(_0x214006['dataset']['btnIndex']);buttons[_0x16235e]?.['onClick']&&_0x214006['addEventListener']('click',buttons[_0x16235e]['onClick']);});const _0x37b449=document['getElementById']('utils-modal-overlay');_0x37b449&&_0x37b449['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x121e26=document['getElementById']('utils-modal');_0x121e26&&_0x121e26['remove']();},'parseKeyValuePairs'(_0x2f4eca){const _0xe9b13={};if(!_0x2f4eca)return _0xe9b13;return _0x2f4eca['split'](/\r?\n/)['map'](_0x860af6=>_0x860af6['trim']())['filter'](Boolean)['forEach'](_0x5955f9=>{const _0x46d0d3=_0x5955f9['indexOf']('=');if(_0x46d0d3>0x0){const _0x3a7df1=_0x5955f9['slice'](0x0,_0x46d0d3)['trim'](),_0x33d80c=_0x5955f9['slice'](_0x46d0d3+0x1)['trim']();if(_0x3a7df1)_0xe9b13[_0x3a7df1]=_0x33d80c;}}),_0xe9b13;},'debounce'(_0xa8a237,_0x172632=0xfa){let _0x476e6b=null;return(..._0x4bca4a)=>{clearTimeout(_0x476e6b),_0x476e6b=setTimeout(()=>_0xa8a237['apply'](this,_0x4bca4a),_0x172632);};},'formatTimestamp'(_0x557b58){if(!_0x557b58)return'N/A';const _0x4678c0=new Date(_0x557b58);return _0x4678c0['toLocaleDateString']()+'\x20'+_0x4678c0['toLocaleTimeString']();},'getQueryParams'(){const _0x3f165d=new URLSearchParams(window['location']['search']),_0x2d96c6={};for(const [_0x136492,_0x19c80b]of _0x3f165d){_0x2d96c6[_0x136492]=_0x19c80b;}return _0x2d96c6;},'formatDuration'(_0x16e257,_0x4f6656){if(!_0x16e257)return'N/A';const _0x2bf347=new Date(_0x16e257),_0x48d837=_0x4f6656?new Date(_0x4f6656):new Date(),_0x4e9acf=_0x48d837-_0x2bf347;if(_0x4e9acf<0x0)return'0s';const _0x1176aa=Math['floor'](_0x4e9acf/0x3e8),_0x3ecfe1=Math['floor'](_0x1176aa/0x3c),_0x46258f=Math['floor'](_0x3ecfe1/0x3c),_0x54cd36=Math['floor'](_0x46258f/0x18);if(_0x1176aa<0x3c)return _0x1176aa+'s';if(_0x3ecfe1<0x3c)return _0x3ecfe1+'m\x20'+_0x1176aa%0x3c+'s';if(_0x46258f<0x18)return _0x46258f+'h\x20'+_0x3ecfe1%0x3c+'m\x20'+_0x1176aa%0x3c+'s';return _0x54cd36+'d\x20'+_0x46258f%0x18+'h\x20'+_0x3ecfe1%0x3c+'m';},'renderMarkdown'(_0x15c8d3,_0x176142={}){if(!_0x15c8d3)return'';_0x15c8d3=this['rewriteAttachmentLinks'](_0x15c8d3,_0x176142),_0x15c8d3=this['rewriteColorSyntax'](_0x15c8d3);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x15c8d3,_0x176142);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x3432b3=new marked['Renderer'](),_0x9d0ee0=_0x3432b3['code']['bind'](_0x3432b3);_0x3432b3['code']=function(_0x2a5dd0,_0x54fd29){const _0x58da04=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x58da04&&_0x54fd29)try{const _0x345f90=_0x58da04['getLanguage'](_0x54fd29)?_0x54fd29:'plaintext',_0x223118=_0x58da04['highlight'](_0x2a5dd0,{'language':_0x345f90})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x54fd29+'\x22>'+_0x223118+'</code></pre>';}catch(_0x9a15c4){console['error']('Syntax\x20highlighting\x20error:',_0x9a15c4);}return _0x9d0ee0(_0x2a5dd0,_0x54fd29);};try{return marked['parse'](_0x15c8d3,{'renderer':_0x3432b3});}catch(_0x5048fd){return console['error']('Markdown\x20parsing\x20error:',_0x5048fd),this['renderMarkdownFallback'](_0x15c8d3,_0x176142);}},'rewriteAttachmentLinks'(_0x2dc237,_0x2121fc={}){const _0x1feac1=typeof _0x2121fc['resolveAttachmentUrl']==='function'?_0x2121fc['resolveAttachmentUrl']:_0x2121fc['taskId']?_0x533ca4=>API_BASE+'/tasks/'+_0x2121fc['taskId']+'/attachments/'+encodeURIComponent(_0x533ca4):null;if(!_0x1feac1)return _0x2dc237;return String(_0x2dc237)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x12b168,_0x848fa5)=>{const _0x46381c=String(_0x848fa5||'')['trim']();if(!_0x46381c)return _0x12b168;let _0x118860=_0x46381c;try{_0x118860=decodeURIComponent(_0x46381c);}catch{}const _0x10770b=_0x1feac1(_0x118860);if(!_0x10770b)return _0x12b168;return']('+_0x10770b+')';});},'rewriteColorSyntax'(_0x385a3e){if(!_0x385a3e)return _0x385a3e;return String(_0x385a3e)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x163de2,_0x45df50,_0x26f753)=>{const _0x3374b9=this['rewriteColorSyntax'](_0x26f753);return'<span\x20style=\x22color:\x20'+_0x45df50+'\x22>'+_0x3374b9+'</span>';});},'renderMarkdownFallback'(_0x2e3918,_0x132ceb={}){if(!_0x2e3918)return'';_0x2e3918=_0x2e3918['replace'](/\r\n/g,'\x0a'),_0x2e3918=_0x2e3918['replace'](/\r/g,'\x0a'),_0x2e3918=this['rewriteAttachmentLinks'](_0x2e3918,_0x132ceb);let _0x3f2630=this['escapeHtml'](_0x2e3918);return _0x3f2630=_0x3f2630['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3f2630=_0x3f2630['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3f2630=_0x3f2630['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3f2630=_0x3f2630['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3f2630=_0x3f2630['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3f2630=_0x3f2630['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3f2630=_0x3f2630['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3f2630=_0x3f2630['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3f2630=_0x3f2630['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3f2630=_0x3f2630['replace'](/\n\n/g,'</p><p>'),_0x3f2630=_0x3f2630['replace'](/\n/g,'<br>'),'<p>'+_0x3f2630+'</p>';}};export class CustomSelect{constructor(_0x4e1680,_0x577f5c={}){this['nativeSelect']=_0x4e1680,this['options']=_0x577f5c,this['isOpen']=![],this['selectedValue']=_0x4e1680['value']||'',this['searchable']=_0x577f5c['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2bbb66=document['createElement']('div');_0x2bbb66['className']='custom-select';const _0x3a9980=document['createElement']('div');_0x3a9980['className']='custom-select-trigger',_0x3a9980['setAttribute']('tabindex','0'),_0x3a9980['setAttribute']('role','button'),_0x3a9980['setAttribute']('aria-haspopup','listbox');const _0x38bfbb=document['createElement']('span');_0x38bfbb['className']='custom-select-trigger-text';const _0x194151=document['createElement']('span');_0x194151['className']='custom-select-arrow',_0x194151['textContent']='▼',_0x3a9980['appendChild'](_0x38bfbb),_0x3a9980['appendChild'](_0x194151);const _0x40bd2a=document['createElement']('div');_0x40bd2a['className']='custom-select-dropdown',_0x40bd2a['setAttribute']('role','listbox');if(this['searchable']){const _0x5166a6=document['createElement']('div');_0x5166a6['className']='custom-select-search';const _0x451900=document['createElement']('input');_0x451900['type']='text',_0x451900['className']='custom-select-search-input',_0x451900['placeholder']='Type\x20to\x20search...',_0x451900['setAttribute']('aria-label','Search\x20options'),_0x451900['addEventListener']('input',_0xb6a9e4=>{this['searchQuery']=_0xb6a9e4['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x451900['addEventListener']('keydown',_0x2cc687=>{if(_0x2cc687['key']==='Escape')_0x2cc687['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2cc687['key']==='Enter'){_0x2cc687['preventDefault'](),_0x2cc687['stopPropagation']();const _0x1ecb33=_0x40bd2a['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1ecb33){const _0x1b643e=_0x1ecb33['getAttribute']('data-value');this['select'](_0x1b643e);}}}}),_0x5166a6['appendChild'](_0x451900),_0x40bd2a['appendChild'](_0x5166a6),this['searchInput']=_0x451900;}const _0x280130=document['createElement']('div');_0x280130['className']='custom-select-options',_0x40bd2a['appendChild'](_0x280130),_0x2bbb66['appendChild'](_0x3a9980),_0x2bbb66['appendChild'](_0x40bd2a),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2bbb66,this['nativeSelect']),this['wrapper']=_0x2bbb66,this['trigger']=_0x3a9980,this['triggerText']=_0x38bfbb,this['dropdown']=_0x40bd2a,this['optionsContainer']=_0x280130,_0x3a9980['addEventListener']('click',()=>this['toggle']()),_0x3a9980['addEventListener']('keydown',_0x2c8e57=>this['handleKeydown'](_0x2c8e57)),document['addEventListener']('click',_0x22075b=>{!_0x2bbb66['contains'](_0x22075b['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x2f2f0b=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x2f2f0b['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x411a58=new MutationObserver(()=>{this['updateDisabledState']();});_0x411a58['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2b06a2=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2b06a2['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4bc2ab=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4bc2ab),this['trigger']['setAttribute']('aria-disabled',_0x4bc2ab?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4bc2ab?'-1':'0'),_0x4bc2ab&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x384c94=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x388a07=_0x384c94['filter'](_0x1d61b6=>!_0x1d61b6['disabled']&&!_0x1d61b6['hidden']);_0x384c94['forEach']((_0x26a817,_0x2c6f80)=>{const _0x15d2e9=document['createElement']('div');_0x15d2e9['className']='custom-select-option',_0x15d2e9['textContent']=_0x26a817['textContent'],_0x15d2e9['setAttribute']('data-value',_0x26a817['value']),_0x15d2e9['setAttribute']('data-index',_0x2c6f80),_0x15d2e9['setAttribute']('role','option'),_0x26a817['disabled']?_0x15d2e9['classList']['add']('disabled'):_0x15d2e9['addEventListener']('click',()=>this['select'](_0x26a817['value'])),_0x26a817['value']===this['selectedValue']&&_0x15d2e9['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x15d2e9),this['allOptions']['push']({'element':_0x15d2e9,'text':_0x26a817['textContent']['toLowerCase'](),'value':_0x26a817['value'],'disabled':_0x26a817['disabled']});});if(this['searchable']&&this['searchInput']){const _0x43c6e4=this['searchInput']['parentElement'];_0x388a07['length']>0x3?_0x43c6e4['style']['display']='':_0x43c6e4['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x164dcc=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x2aeccf=>{if(!_0x164dcc||_0x2aeccf['disabled'])_0x2aeccf['element']['style']['display']='';else{const _0x2e37c1=_0x2aeccf['text']['includes'](_0x164dcc);_0x2aeccf['element']['style']['display']=_0x2e37c1?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2feb4e){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2feb4e,this['nativeSelect']['value']=_0x2feb4e;const _0x3ffe85=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3ffe85),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x4d96f4=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x4d96f4&&(this['triggerText']['textContent']=_0x4d96f4['textContent'],_0x4d96f4['disabled']||_0x4d96f4['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x543630=>{_0x543630['getAttribute']('data-value')===this['selectedValue']?_0x543630['classList']['add']('selected'):_0x543630['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 _0x3f92dc=window['getComputedStyle'](this['dropdown']);if(_0x3f92dc['position']==='fixed'){const _0x453145=this['trigger']['getBoundingClientRect'](),_0x14bc01=parseInt(_0x3f92dc['maxHeight'])||0xc8,_0x4d0215=window['innerHeight'],_0x5214ba=_0x4d0215-_0x453145['bottom'],_0x186c7c=_0x453145['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3a7e1b;_0x5214ba<_0x14bc01&&_0x186c7c>_0x5214ba?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4d0215-_0x453145['top']+'px',_0x3a7e1b=Math['min'](_0x14bc01,_0x186c7c-0xa),this['dropdown']['style']['maxHeight']=_0x3a7e1b+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x453145['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3a7e1b=Math['min'](_0x14bc01,_0x5214ba-0xa),this['dropdown']['style']['maxHeight']=_0x3a7e1b+'px');if(this['optionsContainer']){let _0x1ac193=_0x3a7e1b;if(this['searchInput']){const _0x5127a9=this['searchInput']['parentElement'];_0x5127a9&&(_0x1ac193-=_0x5127a9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1ac193)+'px';}this['dropdown']['style']['left']=_0x453145['left']+'px',this['dropdown']['style']['width']=_0x453145['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x52687e=this['searchInput']['parentElement'];_0x52687e&&_0x52687e['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'](_0x2b715d){if(this['nativeSelect']['disabled'])return;if(_0x2b715d['key']==='Enter'||_0x2b715d['key']==='\x20')_0x2b715d['preventDefault'](),this['toggle']();else _0x2b715d['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3d951a='\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>&times;</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',_0x3d951a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4eb1f3=document['getElementById']('confirm-dialog-close'),_0x46a5c5=document['getElementById']('confirm-dialog-cancel'),_0x1f5bff=document['getElementById']('confirm-dialog-confirm'),_0x3f00a5=this['_modal']['querySelector']('.modal-overlay');_0x4eb1f3['addEventListener']('click',()=>this['_resolve'](![])),_0x46a5c5['addEventListener']('click',()=>this['_resolve'](![])),_0x1f5bff['addEventListener']('click',()=>this['_resolve'](!![])),_0x3f00a5['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x51935d=>{if(_0x51935d['key']==='Escape')_0x51935d['preventDefault'](),this['_resolve'](![]);else _0x51935d['key']==='Enter'&&(_0x51935d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x22a056,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x464525=>{this['_resolvePromise']=_0x464525,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x22a056;const _0x4b97f4=document['getElementById']('confirm-dialog-cancel'),_0x39419b=document['getElementById']('confirm-dialog-confirm');_0x4b97f4['textContent']=cancelText,_0x39419b['textContent']=confirmText,_0x39419b['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x39419b['focus']();});},'_resolve'(_0x23b93a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x23b93a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2f392a,_0x4b26c3={}){this['container']=_0x2f392a,this['options']={'placeholder':_0x4b26c3['placeholder']||'Type\x20to\x20search...','maxItems':_0x4b26c3['maxItems']||0x64,'loadItems':_0x4b26c3['loadItems']||(async()=>[]),'renderItem':_0x4b26c3['renderItem']||(_0x5dd517=>({'primary':String(_0x5dd517),'secondary':''})),'onSelect':_0x4b26c3['onSelect']||(()=>{}),'filterItems':_0x4b26c3['filterItems']||null,'getItemValue':_0x4b26c3['getItemValue']||(_0x52d228=>_0x52d228),'sortItems':_0x4b26c3['sortItems']||null,'debounceMs':_0x4b26c3['debounceMs']||0xc8,'minCharsForSearch':_0x4b26c3['minCharsForSearch']||0x0,'emptyMessage':_0x4b26c3['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4b26c3['loadingMessage']||'Loading...','preload':_0x4b26c3['preload']!==![],'searchMode':_0x4b26c3['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']='&times;',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',_0xfe80e6=>this['onBlur'](_0xfe80e6)),this['input']['addEventListener']('input',_0x48313c=>this['onInput'](_0x48313c)),this['input']['addEventListener']('keydown',_0x4c873e=>this['onKeydown'](_0x4c873e)),this['clearBtn']['addEventListener']('mousedown',_0x4d8b37=>{_0x4d8b37['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x214268=>{_0x214268['preventDefault']();}),document['addEventListener']('click',_0x9c76b3=>{!this['wrapper']['contains'](_0x9c76b3['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(_0x30a6d0){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x30a6d0);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x14eb04){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5ec348){const _0x33cd73=_0x5ec348['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x33cd73);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x33cd73):this['loadAndShow'](_0x33cd73);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0xdcffd2){switch(_0xdcffd2['key']){case'ArrowDown':_0xdcffd2['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0xdcffd2['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0xdcffd2['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0xdcffd2['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4d0136){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5a1afb=this['selectedIndex']+_0x4d0136;if(_0x5a1afb>=0x0&&_0x5a1afb<this['filteredItems']['length']){this['selectedIndex']=_0x5a1afb,this['updateSelectionHighlight']();const _0x188575=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x188575[this['selectedIndex']]&&_0x188575[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x3885ee=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3885ee['forEach']((_0x27e972,_0x284777)=>{_0x27e972['classList']['toggle']('keyboard-selected',_0x284777===this['selectedIndex']);});}async['loadAndShow'](_0x14cd58){this['showLoading']();try{const _0x253fbc=await this['options']['loadItems'](_0x14cd58);if(this['options']['searchMode']==='server'){let _0x4e4fe2=_0x253fbc;this['options']['sortItems']&&(_0x4e4fe2=this['options']['sortItems']([..._0x253fbc]));this['filteredItems']=_0x4e4fe2;const _0x474e67=this['filteredItems']['length']>=this['options']['maxItems'];_0x474e67&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x474e67),this['open']();}else this['allItems']=_0x253fbc,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x14cd58);}catch(_0x4fb455){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x4fb455),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x20b02a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x20b02a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5c8571=this['filteredItems']['length']>=this['options']['maxItems'];_0x5c8571&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5c8571),this['open']();}['renderItems'](_0x160d13){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']((_0x32822e,_0x3dfc72)=>{const _0x3dbaaf=document['createElement']('div');_0x3dbaaf['className']='autocomplete-select-item',_0x3dbaaf['setAttribute']('role','option'),_0x3dbaaf['setAttribute']('data-index',_0x3dfc72);const _0x3559fa=this['options']['renderItem'](_0x32822e);let _0x4e5831='';_0x3559fa['icon']&&(_0x4e5831='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x3559fa['iconClass']||'')+'\x22>'+_0x3559fa['icon']+'</span>'),_0x3dbaaf['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4e5831+'\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'](_0x3559fa['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3559fa['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x3559fa['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3dbaaf['addEventListener']('click',()=>{this['selectItem'](_0x32822e);}),_0x3dbaaf['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3dfc72,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3dbaaf);}),_0x160d13?(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'](_0x133b4b){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x133b4b)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x44ee04){this['selectedItem']=_0x44ee04;const _0x43e963=this['options']['renderItem'](_0x44ee04);this['input']['value']=_0x43e963['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x44ee04);}['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'](_0x8fb260){if(_0x8fb260){this['selectedItem']=_0x8fb260;const _0x5e7e19=this['options']['renderItem'](_0x8fb260);this['input']['value']=_0x5e7e19['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x146164){this['allItems']=_0x146164,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'](_0xe21dac){this['input']['placeholder']=_0xe21dac;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x106fb9=null){const _0x50c081=document['getElementById']('admin-menu-container'),_0x179e30=document['getElementById']('admin-menu-btn'),_0x12841a=document['getElementById']('admin-menu');if(!_0x50c081||!_0x179e30||!_0x12841a)return;try{!_0x106fb9&&(_0x106fb9=await API['getCurrentUser']());if(_0x106fb9){const _0x4ef41a=_0x106fb9['hasAllPermissions']||_0x106fb9['hasEnvironmentsManage']||_0x106fb9['canCreateUsers']||_0x106fb9['canManageTeams']||_0x106fb9['hasEnvironmentBindings'];if(!_0x4ef41a)return;_0x50c081['hidden']=![];if(!_0x106fb9['hasAllPermissions']){const _0x49432c=_0x12841a['querySelectorAll']('.admin-menu-item');_0x49432c['forEach'](_0x154f1e=>{const _0xf6c5a2=_0x154f1e['querySelector']('.option-text')?.['textContent']?.['trim']();_0xf6c5a2==='Users'&&!_0x106fb9['canCreateUsers']&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Skills'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Server\x20Settings'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Server\x20Health'&&(_0x154f1e['hidden']=!![]),_0xf6c5a2==='Git\x20History'&&(_0x154f1e['hidden']=!![]);});}_0x179e30['addEventListener']('click',_0x3061fc=>{_0x3061fc['stopPropagation']();const _0x3d003f=document['getElementById']('actions-menu');if(_0x3d003f)_0x3d003f['hidden']=!![];_0x12841a['hidden']=!_0x12841a['hidden'];}),document['addEventListener']('click',_0xc0d334=>{!_0x12841a['hidden']&&!_0x179e30['contains'](_0xc0d334['target'])&&!_0x12841a['contains'](_0xc0d334['target'])&&(_0x12841a['hidden']=!![]);}),document['addEventListener']('keydown',_0x4b83c2=>{_0x4b83c2['key']==='Escape'&&!_0x12841a['hidden']&&(_0x12841a['hidden']=!![]);});const _0x3c3888=document['getElementById']('server-health-btn');_0x3c3888&&_0x3c3888['addEventListener']('click',async()=>{_0x12841a['hidden']=!![];const {openServerHealthModal:_0x1d9246}=await import('./server-health.js');_0x1d9246();});}}catch(_0x490402){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x490402['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 _0x22d0b5=window['location']['pathname'],_0x49277c=_0x22d0b5['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x49277c)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x49277c[0x1]),_0x49277c[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x53d9ab={}){const _0x261d18=new URLSearchParams();_0x53d9ab['userId']&&_0x261d18['set']('userId',String(_0x53d9ab['userId']));_0x53d9ab['automation']&&_0x261d18['set']('automation',String(_0x53d9ab['automation']));const _0x212f27=API_BASE+'/tasks/stats'+(_0x261d18['toString']()?'?'+_0x261d18['toString']():''),_0x380737=await fetch(_0x212f27);if(!_0x380737['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x380737['statusText']);return await _0x380737['json']();},async 'getTasks'(_0x574b5e={}){const _0x48fd23=new URLSearchParams();_0x574b5e['status']&&_0x48fd23['set']('status',String(_0x574b5e['status']));_0x574b5e['environment']&&_0x48fd23['set']('environment',String(_0x574b5e['environment']));_0x574b5e['automation']&&_0x48fd23['set']('automation',String(_0x574b5e['automation']));if(_0x574b5e['include']){const _0x33f5b2=Array['isArray'](_0x574b5e['include'])?_0x574b5e['include']['join'](','):String(_0x574b5e['include']);_0x33f5b2&&_0x48fd23['set']('include',_0x33f5b2);}_0x574b5e['filter']&&_0x48fd23['set']('filter',String(_0x574b5e['filter']));_0x574b5e['page']&&_0x48fd23['set']('page',String(_0x574b5e['page']));_0x574b5e['limit']&&_0x48fd23['set']('limit',String(_0x574b5e['limit']));_0x574b5e['userId']&&_0x48fd23['set']('userId',String(_0x574b5e['userId']));_0x574b5e['search']&&_0x48fd23['set']('search',String(_0x574b5e['search']));_0x574b5e['includeChildTasks']&&_0x48fd23['set']('includeChildTasks','true');const _0xe3883b=API_BASE+'/tasks'+(_0x48fd23['toString']()?'?'+_0x48fd23['toString']():''),_0x9980c1=await fetch(_0xe3883b);if(!_0x9980c1['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x9980c1['statusText']);return await _0x9980c1['json']();},async 'getAutomations'(_0x14c30f={}){const _0x4880f8=new URLSearchParams();_0x14c30f['environment']&&_0x4880f8['set']('environment',String(_0x14c30f['environment']));const _0x45f59b=await fetch(API_BASE+'/api/automations'+(_0x4880f8['toString']()?'?'+_0x4880f8['toString']():''));if(!_0x45f59b['ok']){const _0x53bf7c=await _0x45f59b['json']()['catch'](()=>({}));throw new Error(_0x53bf7c['message']||_0x53bf7c['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x45f59b['statusText']);}return await _0x45f59b['json']();},async 'getAutomation'(_0x43c97d){const _0x58b9ab=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x43c97d));if(!_0x58b9ab['ok']){const _0x4cc6d7=await _0x58b9ab['json']()['catch'](()=>({}));throw new Error(_0x4cc6d7['message']||_0x4cc6d7['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x58b9ab['statusText']);}return await _0x58b9ab['json']();},async 'createAutomation'(_0x2d2c00){const _0x957c2c=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d2c00||{})});if(!_0x957c2c['ok']){const _0x5d6763=await _0x957c2c['json']()['catch'](()=>({}));throw new Error(_0x5d6763['message']||_0x5d6763['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x957c2c['statusText']);}return await _0x957c2c['json']();},async 'updateAutomation'(_0x2d22b6,_0x35b652){const _0x4e1d54=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2d22b6),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x35b652||{})});if(!_0x4e1d54['ok']){const _0x3a5478=await _0x4e1d54['json']()['catch'](()=>({}));throw new Error(_0x3a5478['message']||_0x3a5478['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4e1d54['statusText']);}return await _0x4e1d54['json']();},async 'deleteAutomation'(_0x3317e3){const _0x560f6c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3317e3),{'method':'DELETE'});if(!_0x560f6c['ok']){const _0x3ee3c0=await _0x560f6c['json']()['catch'](()=>({}));throw new Error(_0x3ee3c0['message']||_0x3ee3c0['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x560f6c['statusText']);}return await _0x560f6c['json']();},async 'triggerAutomation'(_0x50fa0c){const _0x528adf=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x50fa0c)+'/trigger',{'method':'POST'});if(!_0x528adf['ok']){const _0x28f672=await _0x528adf['json']()['catch'](()=>({}));throw new Error(_0x28f672['message']||_0x28f672['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x528adf['statusText']);}return await _0x528adf['json']();},async 'setAutomationEnabled'(_0x52bd78,_0x2ab1b2){const _0x237f1f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x52bd78)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x2ab1b2})});if(!_0x237f1f['ok']){const _0x5a3f47=await _0x237f1f['json']()['catch'](()=>({}));throw new Error(_0x5a3f47['message']||_0x5a3f47['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x237f1f['statusText']);}return await _0x237f1f['json']();},async 'getAutomationHistory'(_0x1a7af1,_0x528182=0x32){const _0x43873e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1a7af1)+'/history?limit='+encodeURIComponent(String(_0x528182)));if(!_0x43873e['ok']){const _0x2ce39a=await _0x43873e['json']()['catch'](()=>({}));throw new Error(_0x2ce39a['message']||_0x2ce39a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x43873e['statusText']);}return await _0x43873e['json']();},async 'getTask'(_0x2c199d,_0x737118={}){const _0x816159=new URLSearchParams();if(_0x737118['include']){const _0x5053af=Array['isArray'](_0x737118['include'])?_0x737118['include']['join'](','):String(_0x737118['include']);if(_0x5053af)_0x816159['set']('include',_0x5053af);}const _0x56cee2=await fetch(API_BASE+'/tasks/'+_0x2c199d+(_0x816159['toString']()?'?'+_0x816159['toString']():''));if(!_0x56cee2['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x56cee2['statusText']);return await _0x56cee2['json']();},async 'getTaskResults'(_0x46535e){const _0x45b027=await fetch(API_BASE+'/tasks/'+_0x46535e+'/results');if(!_0x45b027['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x45b027['statusText']);return await _0x45b027['json']();},async 'getTaskPatches'(_0x172441){const _0x1a8005=await fetch(API_BASE+'/tasks/'+_0x172441+'/patches');if(!_0x1a8005['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1a8005['statusText']);return await _0x1a8005['json']();},async 'getTaskAttachments'(_0xe0c9ab){const _0x458dc2=await fetch(API_BASE+'/tasks/'+_0xe0c9ab+'/attachments');if(!_0x458dc2['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x458dc2['statusText']);return await _0x458dc2['json']();},async 'uploadAttachments'(_0x5bd735,_0x3682c6){const _0x366605=new FormData();for(const _0x432480 of _0x3682c6){_0x366605['append']('attachments',_0x432480);}const _0x3b27be=await fetch(API_BASE+'/tasks/'+_0x5bd735+'/attachments',{'method':'POST','body':_0x366605});if(!_0x3b27be['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3b27be['statusText']);return await _0x3b27be['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3bd9f1=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3bd9f1['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3bd9f1['json']();}catch(_0x5acec8){return{'available':![],'reason':_0x5acec8['message']};}},async 'generateTaskName'(_0x2fac83){try{const _0x14f3ed=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2fac83})});return await _0x14f3ed['json']();}catch(_0x208e1e){return{'success':![],'error':_0x208e1e['message']};}},async 'createTask'(_0x5669f6){let _0x30be55,_0xeea803={};if(_0x5669f6['files']&&_0x5669f6['files']['length']>0x0){const _0x1b865f=new FormData();for(const [_0xf28d91,_0x24b40f]of Object['entries'](_0x5669f6)){if(_0xf28d91!=='files'){if(_0x24b40f==null)continue;typeof _0x24b40f==='object'?_0x1b865f['append'](_0xf28d91,JSON['stringify'](_0x24b40f)):_0x1b865f['append'](_0xf28d91,String(_0x24b40f));}}for(const _0x23d367 of _0x5669f6['files']){_0x1b865f['append']('attachments',_0x23d367);}_0x30be55=_0x1b865f;}else _0xeea803['Content-Type']='application/json',_0x30be55=JSON['stringify'](_0x5669f6);const _0x17b4ca=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0xeea803,'body':_0x30be55});if(!_0x17b4ca['ok']){const _0x4da397=await _0x17b4ca['json'](),_0x3964c6=new Error(_0x4da397['error']||'Failed\x20to\x20create\x20task:\x20'+_0x17b4ca['statusText']),{message:_0x2e0c5f,..._0x30ece7}=_0x4da397;Object['assign'](_0x3964c6,_0x30ece7);throw _0x3964c6;}return await _0x17b4ca['json']();},async 'createTestTask'(_0x70074c){const _0x23ba5e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x70074c)});if(!_0x23ba5e['ok']){const _0x10fbf4=await _0x23ba5e['json']();throw new Error(_0x10fbf4['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x23ba5e['statusText']);}return await _0x23ba5e['json']();},async 'createEphemeralTest'(_0x29f337){const _0x42575e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29f337)});if(!_0x42575e['ok']){const _0x2da270=await _0x42575e['json']();throw new Error(_0x2da270['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x42575e['statusText']);}return await _0x42575e['json']();},async 'createDeployTask'(_0x1ebb70){const _0x1fb004=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ebb70)});if(!_0x1fb004['ok']){const _0x47b5e2=await _0x1fb004['json']();throw new Error(_0x47b5e2['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x1fb004['statusText']);}return await _0x1fb004['json']();},async 'getEnvironments'(){const _0x460414=await fetch(API_BASE+'/environments');if(!_0x460414['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x460414['statusText']);return await _0x460414['json']();},async 'getEnvironment'(_0x55325c){const _0x1e2c68=await fetch(API_BASE+'/environments/'+_0x55325c);if(!_0x1e2c68['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x1e2c68['statusText']);return await _0x1e2c68['json']();},async 'getEnvironmentRepoHistory'(_0x2b5ed2,_0x645006,_0x175a4e={}){if(!_0x2b5ed2||!_0x645006)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2a665b=new URLSearchParams();if(_0x175a4e['limit'])_0x2a665b['set']('limit',String(_0x175a4e['limit']));if(_0x175a4e['offset'])_0x2a665b['set']('offset',String(_0x175a4e['offset']));if(_0x175a4e['search'])_0x2a665b['set']('search',String(_0x175a4e['search']));if(_0x175a4e['branch'])_0x2a665b['set']('branch',String(_0x175a4e['branch']));const _0x1c4b75=API_BASE+'/environments/'+encodeURIComponent(_0x2b5ed2)+'/repos/'+encodeURIComponent(_0x645006)+'/git/history',_0x267709=await fetch(''+_0x1c4b75+(_0x2a665b['toString']()?'?'+_0x2a665b['toString']():''));if(!_0x267709['ok']){const _0x8b8cad=await _0x267709['json']()['catch'](()=>({}));throw new Error(_0x8b8cad['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x267709['statusText']);}return await _0x267709['json']();},async 'getEnvironmentRepoCommit'(_0x83c03a,_0x3ba032,_0x20e461){if(!_0x83c03a||!_0x3ba032||!_0x20e461)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x839cce=API_BASE+'/environments/'+encodeURIComponent(_0x83c03a)+'/repos/'+encodeURIComponent(_0x3ba032)+'/git/commits/'+encodeURIComponent(_0x20e461),_0x3e5435=await fetch(_0x839cce);if(!_0x3e5435['ok']){const _0x387f51=await _0x3e5435['json']()['catch'](()=>({}));throw new Error(_0x387f51['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3e5435['statusText']);}return await _0x3e5435['json']();},async 'getEnvironmentRepoBranches'(_0x117568,_0x24e188){if(!_0x117568||!_0x24e188)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1b2856=API_BASE+'/environments/'+encodeURIComponent(_0x117568)+'/repos/'+encodeURIComponent(_0x24e188)+'/git/branches',_0x1b1c69=await fetch(_0x1b2856);if(!_0x1b1c69['ok']){const _0x4e7e33=await _0x1b1c69['json']()['catch'](()=>({}));throw new Error(_0x4e7e33['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x1b1c69['statusText']);}return await _0x1b1c69['json']();},async 'revertEnvironmentRepoCommit'(_0x79e4e0,_0x2d0af3,_0x3dde45,_0x11310f={}){if(!_0x79e4e0||!_0x2d0af3||!_0x3dde45)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x116b07=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x79e4e0)+'/repos/'+encodeURIComponent(_0x2d0af3)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3dde45,..._0x11310f})});if(!_0x116b07['ok']){const _0xd63741=await _0x116b07['json']()['catch'](()=>({}));throw new Error(_0xd63741['message']||_0xd63741['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x116b07['statusText']);}return await _0x116b07['json']();},async 'getTemplates'(_0x227c7d={}){const _0x2e6dc6=new URLSearchParams();if(_0x227c7d['include']){const _0x1b5b13=Array['isArray'](_0x227c7d['include'])?_0x227c7d['include']['join'](','):String(_0x227c7d['include']);if(_0x1b5b13)_0x2e6dc6['set']('include',_0x1b5b13);}const _0x5e65b4=await fetch(API_BASE+'/templates'+(_0x2e6dc6['toString']()?'?'+_0x2e6dc6['toString']():''));if(!_0x5e65b4['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x5e65b4['statusText']);return await _0x5e65b4['json']();},async 'getTemplatesForEnvironment'(_0x3ee1f7,_0x2cb487={}){if(!_0x3ee1f7)throw new Error('Environment\x20name\x20is\x20required');const _0x35dd5a=new URLSearchParams();if(_0x2cb487['include']){const _0x4c1add=Array['isArray'](_0x2cb487['include'])?_0x2cb487['include']['join'](','):String(_0x2cb487['include']);if(_0x4c1add)_0x35dd5a['set']('include',_0x4c1add);}const _0x5269dd=await fetch(API_BASE+'/templates/'+_0x3ee1f7+(_0x35dd5a['toString']()?'?'+_0x35dd5a['toString']():''));if(!_0x5269dd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3ee1f7+':\x20'+_0x5269dd['statusText']);return await _0x5269dd['json']();},async 'getTemplate'(_0x500977,_0x4ed0e3,_0x4255d4={}){if(!_0x500977||!_0x4ed0e3)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x357507=new URLSearchParams();if(_0x4255d4['include']){const _0x260ae6=Array['isArray'](_0x4255d4['include'])?_0x4255d4['include']['join'](','):String(_0x4255d4['include']);if(_0x260ae6)_0x357507['set']('include',_0x260ae6);}const _0x413217=await fetch(API_BASE+'/templates/'+_0x500977+'/'+_0x4ed0e3+(_0x357507['toString']()?'?'+_0x357507['toString']():''));if(!_0x413217['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x413217['statusText']);return await _0x413217['json']();},async 'getTaskLogs'(_0x127322,_0x435814={}){if(!_0x127322)throw new Error('Task\x20ID\x20is\x20required');const _0x57a0aa=new URLSearchParams();_0x435814['tail']&&_0x57a0aa['set']('tail',String(_0x435814['tail']));const _0x36a0e4=await fetch(API_BASE+'/tasks/'+_0x127322+'/logs'+(_0x57a0aa['toString']()?'?'+_0x57a0aa['toString']():''));if(!_0x36a0e4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x36a0e4['statusText']);return await _0x36a0e4['text']();},async 'getContainers'(){const _0xa18acf=await fetch(API_BASE+'/containers');if(!_0xa18acf['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xa18acf['statusText']);return await _0xa18acf['json']();},async 'getContainer'(_0x51b912){const _0x892444=await fetch(API_BASE+'/containers/'+_0x51b912);if(!_0x892444['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x892444['statusText']);return await _0x892444['json']();},async 'startInteractiveContainer'(_0x40dd54){const _0xffe24b=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40dd54)});if(!_0xffe24b['ok']){const _0x44f448=await _0xffe24b['json']()['catch'](()=>({}));throw new Error(_0x44f448['message']||'Failed\x20to\x20start\x20container:\x20'+_0xffe24b['statusText']);}return await _0xffe24b['json']();},async 'stopContainer'(_0x586a6a){const _0x12be08=await fetch(API_BASE+'/containers/'+_0x586a6a,{'method':'DELETE'});if(!_0x12be08['ok']){const _0x427dfb=await _0x12be08['json']()['catch'](()=>({}));throw new Error(_0x427dfb['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x12be08['statusText']);}return await _0x12be08['json']();},async 'stopTask'(_0x1238bb){if(!_0x1238bb)throw new Error('Task\x20ID\x20is\x20required');const _0x2f0da9=await fetch(API_BASE+'/tasks/'+_0x1238bb+'/stop',{'method':'POST'});if(!_0x2f0da9['ok']){const _0x117914=await _0x2f0da9['json']()['catch'](()=>({}));throw new Error(_0x117914['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2f0da9['statusText']);}return await _0x2f0da9['json']();},async 'interruptTask'(_0x5abf7e){if(!_0x5abf7e)throw new Error('Task\x20ID\x20is\x20required');const _0x36cd48=await fetch(API_BASE+'/tasks/'+_0x5abf7e+'/interrupt',{'method':'POST'});if(!_0x36cd48['ok']){const _0x21d53c=await _0x36cd48['json']()['catch'](()=>({}));throw new Error(_0x21d53c['error']||_0x21d53c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x36cd48['statusText']);}return await _0x36cd48['json']();},async 'startTask'(_0x3a484e){if(!_0x3a484e)throw new Error('Task\x20ID\x20is\x20required');const _0x520920=await fetch(API_BASE+'/tasks/'+_0x3a484e+'/start',{'method':'POST'});if(!_0x520920['ok']){const _0x4637d8=await _0x520920['json']()['catch'](()=>({}));throw new Error(_0x4637d8['error']||'Failed\x20to\x20start\x20task:\x20'+_0x520920['statusText']);}return await _0x520920['json']();},async 'deleteTask'(_0x5b20ec){if(!_0x5b20ec)throw new Error('Task\x20ID\x20is\x20required');const _0x189c60=await fetch(API_BASE+'/tasks/'+_0x5b20ec,{'method':'DELETE'});if(!_0x189c60['ok']){const _0x5191c5=await _0x189c60['json']()['catch'](()=>({}));throw new Error(_0x5191c5['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x189c60['statusText']);}return await _0x189c60['json']();},async 'refreshTasksFromDisk'(){const _0x21bb56=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x21bb56['ok']){const _0x23ee22=await _0x21bb56['json']()['catch'](()=>({}));throw new Error(_0x23ee22['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x21bb56['statusText']);}return await _0x21bb56['json']();},async 'approveTask'(_0x3cabc2,_0x5dacf8={}){if(!_0x3cabc2)throw new Error('Task\x20ID\x20is\x20required');const _0x51a417={'commit_message':_0x5dacf8['commit_message']||'','pull':_0x5dacf8['pull']??![],'push':_0x5dacf8['push']??![]};_0x5dacf8['new_branch']&&(_0x51a417['new_branch']=_0x5dacf8['new_branch']);const _0xafe19d=await fetch(API_BASE+'/tasks/'+_0x3cabc2+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51a417)});if(!_0xafe19d['ok']){const _0x5646c2=await _0xafe19d['json']()['catch'](()=>({}));let _0x4dec01=_0x5646c2['error']||_0x5646c2['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xafe19d['statusText'];if(_0x5646c2['results']&&Array['isArray'](_0x5646c2['results'])){const _0x527321=_0x5646c2['results']['filter'](_0x10716a=>!_0x10716a['success']&&_0x10716a['error']);_0x527321['length']>0x0&&(_0x4dec01=_0x527321[0x0]['error']);}throw new Error(_0x4dec01);}return await _0xafe19d['json']();},async 'getPullRequestInfo'(_0x189cf0){if(!_0x189cf0)throw new Error('Task\x20ID\x20is\x20required');const _0x111992=await fetch(API_BASE+'/tasks/'+_0x189cf0+'/pull-request-info');if(!_0x111992['ok']){const _0x25fea0=await _0x111992['json']()['catch'](()=>({}));throw new Error(_0x25fea0['error']||_0x25fea0['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x111992['statusText']);}return await _0x111992['json']();},async 'createPullRequests'(_0x5afc8e,_0x3698cf){if(!_0x5afc8e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3698cf||!Array['isArray'](_0x3698cf))throw new Error('repos\x20array\x20is\x20required');const _0x51bbb9=await fetch(API_BASE+'/tasks/'+_0x5afc8e+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3698cf})});if(!_0x51bbb9['ok']){const _0x1df656=await _0x51bbb9['json']()['catch'](()=>({}));let _0x25847d=_0x1df656['error']||_0x1df656['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x51bbb9['statusText'];if(_0x1df656['results']&&Array['isArray'](_0x1df656['results'])){const _0x2e294b=_0x1df656['results']['filter'](_0x2e6360=>!_0x2e6360['success']&&_0x2e6360['error']);_0x2e294b['length']>0x0&&(_0x25847d=_0x2e294b[0x0]['error']);}throw new Error(_0x25847d);}return await _0x51bbb9['json']();},async 'syncRepos'(_0x54a20e){if(!_0x54a20e)throw new Error('Task\x20ID\x20is\x20required');const _0x35870e=await fetch(API_BASE+'/tasks/'+_0x54a20e+'/sync-repos',{'method':'POST'});if(!_0x35870e['ok']){const _0x29a815=await _0x35870e['json']()['catch'](()=>({}));throw new Error(_0x29a815['error']||_0x29a815['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x35870e['statusText']);}return await _0x35870e['json']();},async 'getIbmiSyncInfo'(_0x3f9a07){if(!_0x3f9a07)throw new Error('Task\x20ID\x20is\x20required');const _0x480579=await fetch(API_BASE+'/tasks/'+_0x3f9a07+'/ibmi-sync-info');if(!_0x480579['ok']){const _0x5447da=await _0x480579['json']()['catch'](()=>({}));throw new Error(_0x5447da['error']||_0x5447da['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x480579['json']();},async 'syncToIbmi'(_0x34c46e,_0x4d0e36){if(!_0x34c46e)throw new Error('Task\x20ID\x20is\x20required');const _0x2df91e=await fetch(API_BASE+'/tasks/'+_0x34c46e+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x4d0e36})});if(!_0x2df91e['ok']){const _0x1627f0=await _0x2df91e['json']()['catch'](()=>({}));throw new Error(_0x1627f0['error']||_0x1627f0['message']||'Sync\x20failed');}return await _0x2df91e['json']();},async 'getIbmiSyncLog'(_0x1bc973){if(!_0x1bc973)throw new Error('Task\x20ID\x20is\x20required');const _0x5166da=await fetch(API_BASE+'/tasks/'+_0x1bc973+'/ibmi-sync-log');if(!_0x5166da['ok']){const _0x2a82dd=await _0x5166da['json']()['catch'](()=>({}));throw new Error(_0x2a82dd['error']||_0x2a82dd['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5166da['json']();},async 'pullChanges'(_0x18b00c){if(!_0x18b00c)throw new Error('Task\x20ID\x20is\x20required');const _0x59965e=await fetch(API_BASE+'/tasks/'+_0x18b00c+'/pull-changes',{'method':'POST'});if(!_0x59965e['ok']){const _0x208dee=await _0x59965e['json']()['catch'](()=>({}));throw new Error(_0x208dee['error']||_0x208dee['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x59965e['statusText']);}return await _0x59965e['json']();},async 'readFile'(_0x4615f5,_0x3c60d8){if(!_0x4615f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3c60d8)throw new Error('File\x20path\x20is\x20required');const _0x4adc65=await fetch(API_BASE+'/tasks/'+_0x4615f5+'/files?path='+encodeURIComponent(_0x3c60d8));if(!_0x4adc65['ok']){const _0x97aa9e=await _0x4adc65['json']()['catch'](()=>({}));throw new Error(_0x97aa9e['error']||_0x97aa9e['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4adc65['statusText']);}return await _0x4adc65['json']();},async 'writeFile'(_0x1064ac,_0x16fac4,_0x1db5c8){if(!_0x1064ac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16fac4)throw new Error('File\x20path\x20is\x20required');if(_0x1db5c8===undefined)throw new Error('Content\x20is\x20required');const _0x760924=await fetch(API_BASE+'/tasks/'+_0x1064ac+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x16fac4,'content':_0x1db5c8})});if(!_0x760924['ok']){const _0x47aeae=await _0x760924['json']()['catch'](()=>({}));throw new Error(_0x47aeae['error']||_0x47aeae['message']||'Failed\x20to\x20write\x20file:\x20'+_0x760924['statusText']);}return await _0x760924['json']();},async 'deleteFile'(_0x15f2fb,_0x88fdf6){if(!_0x15f2fb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x88fdf6)throw new Error('File\x20path\x20is\x20required');const _0x30e974=await fetch(API_BASE+'/tasks/'+_0x15f2fb+'/files?path='+encodeURIComponent(_0x88fdf6),{'method':'DELETE'});if(!_0x30e974['ok']){const _0x169ac8=await _0x30e974['json']()['catch'](()=>({}));throw new Error(_0x169ac8['error']||_0x169ac8['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x30e974['statusText']);}return await _0x30e974['json']();},async 'discardFile'(_0x14194c,_0x1e3b3b,_0x59fb22){if(!_0x14194c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e3b3b)throw new Error('File\x20path\x20is\x20required');if(!_0x59fb22)throw new Error('Repository\x20path\x20is\x20required');const _0x448955=await fetch(API_BASE+'/tasks/'+_0x14194c+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1e3b3b,'repoPath':_0x59fb22})});if(!_0x448955['ok']){const _0x5010cc=await _0x448955['json']()['catch'](()=>({}));throw new Error(_0x5010cc['error']||_0x5010cc['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x448955['statusText']);}return await _0x448955['json']();},async 'followUpTask'(_0x3efe77,_0x154c7c={}){if(!_0x3efe77)throw new Error('Task\x20ID\x20is\x20required');if(!_0x154c7c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x557e34,_0x51d72a={};if(_0x154c7c['files']&&_0x154c7c['files']['length']>0x0){const _0x263a22=new FormData();_0x263a22['append']('instructions',_0x154c7c['instructions']);for(const _0x128b3c of _0x154c7c['files']){_0x263a22['append']('attachments',_0x128b3c);}_0x557e34=_0x263a22;}else _0x51d72a['Content-Type']='application/json',_0x557e34=JSON['stringify']({'instructions':_0x154c7c['instructions']});const _0x196f03=await fetch(API_BASE+'/tasks/'+_0x3efe77+'/follow-up',{'method':'POST','headers':_0x51d72a,'body':_0x557e34});if(!_0x196f03['ok']){const _0x5eeefa=await _0x196f03['json']()['catch'](()=>({}));throw new Error(_0x5eeefa['error']||_0x5eeefa['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x196f03['statusText']);}return await _0x196f03['json']();},async 'getTaskRewindPoints'(_0x4b1c8f){if(!_0x4b1c8f)throw new Error('Task\x20ID\x20is\x20required');const _0x6c6439=await fetch(API_BASE+'/tasks/'+_0x4b1c8f+'/rewind-points');if(!_0x6c6439['ok']){const _0x34fce7=await _0x6c6439['json']()['catch'](()=>({}));throw new Error(_0x34fce7['error']||_0x34fce7['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x6c6439['statusText']);}return await _0x6c6439['json']();},async 'rewindTask'(_0x253278,_0x18e4b2={}){if(!_0x253278)throw new Error('Task\x20ID\x20is\x20required');const _0x367b4a=Number['isInteger'](_0x18e4b2['targetFollowUpCount'])?_0x18e4b2['targetFollowUpCount']:0x0,_0x38d7f3={'targetFollowUpCount':_0x367b4a};typeof _0x18e4b2['instructions']==='string'&&_0x18e4b2['instructions']['trim']()&&(_0x38d7f3['instructions']=_0x18e4b2['instructions']['trim']());typeof _0x18e4b2['rewindFiles']==='boolean'&&(_0x38d7f3['rewindFiles']=_0x18e4b2['rewindFiles']);const _0x3d2ce3=await fetch(API_BASE+'/tasks/'+_0x253278+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38d7f3)});if(!_0x3d2ce3['ok']){const _0x2dbd83=await _0x3d2ce3['json']()['catch'](()=>({}));throw new Error(_0x2dbd83['error']||_0x2dbd83['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3d2ce3['statusText']);}return await _0x3d2ce3['json']();},async 'login'(_0x58f23d,_0x349ca9){const _0x3be184=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x58f23d,'password':_0x349ca9})});if(!_0x3be184['ok']){const _0xb4ece2=await _0x3be184['json']();throw new Error(_0xb4ece2['message']||'Login\x20failed');}return await _0x3be184['json']();},async 'logout'(){const _0x971e9f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x971e9f['ok']){const _0x228c70=await _0x971e9f['json']();throw new Error(_0x228c70['message']||'Logout\x20failed');}return await _0x971e9f['json']();},async 'getCurrentUser'(){const _0x5124ae=await fetch(API_BASE+'/auth/me');if(!_0x5124ae['ok'])throw new Error('Not\x20authenticated');const _0x322bca=await _0x5124ae['json']();return _0x322bca['user'];},async 'getRolesInfo'(){const _0x411139=await fetch(API_BASE+'/users/roles');if(!_0x411139['ok']){const _0x47f5e9=await _0x411139['json']();throw new Error(_0x47f5e9['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x411139['json']();},async 'getUsers'(){const _0x38246f=await fetch(API_BASE+'/users');if(!_0x38246f['ok']){const _0x2fb357=await _0x38246f['json']();throw new Error(_0x2fb357['message']||'Failed\x20to\x20get\x20users');}return await _0x38246f['json']();},async 'getUser'(_0x36f403){const _0x55f686=await fetch(API_BASE+'/users/'+_0x36f403);if(!_0x55f686['ok']){const _0x596ddf=await _0x55f686['json']();throw new Error(_0x596ddf['message']||'Failed\x20to\x20get\x20user');}return await _0x55f686['json']();},async 'createUser'(_0x767695){const _0x2226a3=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x767695)});if(!_0x2226a3['ok']){const _0x167bd5=await _0x2226a3['json']();throw new Error(_0x167bd5['message']||'Failed\x20to\x20create\x20user');}return await _0x2226a3['json']();},async 'updateUser'(_0xb013ac,_0x88c1fa){const _0x356076=await fetch(API_BASE+'/users/'+_0xb013ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x88c1fa)});if(!_0x356076['ok']){const _0x2c7b98=await _0x356076['json']();throw new Error(_0x2c7b98['message']||'Failed\x20to\x20update\x20user');}return await _0x356076['json']();},async 'deleteUser'(_0x10e3ae){const _0x29bc31=await fetch(API_BASE+'/users/'+_0x10e3ae,{'method':'DELETE'});if(!_0x29bc31['ok']){const _0x39e447=await _0x29bc31['json']();throw new Error(_0x39e447['message']||'Failed\x20to\x20delete\x20user');}return await _0x29bc31['json']();},async 'stopAllContainers'(){const _0x19b243=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2c0f22=await _0x19b243['json']()['catch'](()=>({}));if(!_0x19b243['ok'])throw new Error(_0x2c0f22['message']||_0x2c0f22['error']||'Failed\x20to\x20stop\x20containers');return _0x2c0f22;},async 'removeStoppedContainers'(){const _0xdf14bb=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x59a6df=await _0xdf14bb['json']()['catch'](()=>({}));if(!_0xdf14bb['ok'])throw new Error(_0x59a6df['message']||_0x59a6df['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x59a6df;},async 'pruneDockerResources'(){const _0x122290=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x51f2f6=await _0x122290['json']()['catch'](()=>({}));if(!_0x122290['ok'])throw new Error(_0x51f2f6['message']||_0x51f2f6['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x51f2f6;},async 'createPasswordToken'(_0x23fde9,_0x34e61e='setup',_0x3e26db=![]){const _0x205779=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x23fde9,'type':_0x34e61e,'sendEmail':_0x3e26db})});if(!_0x205779['ok']){const _0x6c1d7f=await _0x205779['json']();throw new Error(_0x6c1d7f['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x205779['json']();},async 'getEmailConfig'(){const _0x1ef3da=await fetch(API_BASE+'/password/email-config');if(!_0x1ef3da['ok']){const _0x26461b=await _0x1ef3da['json']();throw new Error(_0x26461b['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x1ef3da['json']();},async 'updateTaskName'(_0x1ba7c4,_0x27f7e0){const _0x30f594=await fetch(API_BASE+'/tasks/'+_0x1ba7c4,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x27f7e0})});if(!_0x30f594['ok']){const _0x31387d=await _0x30f594['json']();throw new Error(_0x31387d['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x30f594['json']();},async 'pinTask'(_0x51d780,_0x5e2d07,_0x3c4f57=null){if(!_0x51d780)throw new Error('Task\x20ID\x20is\x20required');const _0x4e69b2={'pinned':_0x5e2d07};_0x3c4f57&&_0x3c4f57['length']>0x0&&(_0x4e69b2['additionalTaskIds']=_0x3c4f57);const _0xd76895=await fetch(API_BASE+'/tasks/'+_0x51d780+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e69b2)});if(!_0xd76895['ok']){const _0x776a55=await _0xd76895['json']();throw new Error(_0x776a55['error']||'Failed\x20to\x20pin\x20task');}return await _0xd76895['json']();},async 'setTaskWinner'(_0x2dfc50,_0x7b9f9,_0x3d861c=[]){if(!_0x2dfc50)throw new Error('Task\x20ID\x20is\x20required');const _0x86092f=await fetch(API_BASE+'/tasks/'+_0x2dfc50+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x7b9f9,'siblings':_0x3d861c})});if(!_0x86092f['ok']){const _0x1461d9=await _0x86092f['json']();throw new Error(_0x1461d9['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x86092f['json']();},async 'setTaskLoser'(_0x5e4595,_0x2266ee){if(!_0x5e4595)throw new Error('Task\x20ID\x20is\x20required');const _0x2e9b5a=await fetch(API_BASE+'/tasks/'+_0x5e4595+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2266ee})});if(!_0x2e9b5a['ok']){const _0x3c7415=await _0x2e9b5a['json']();throw new Error(_0x3c7415['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2e9b5a['json']();},async 'createTaskGroup'(_0x1ec8ae){const _0x27be4a=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ec8ae)});if(!_0x27be4a['ok']){const _0x5ebad6=await _0x27be4a['json']();throw new Error(_0x5ebad6['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x27be4a['json']();},async 'getTaskGroups'(_0x106c7f={}){const _0x171469=new URLSearchParams();if(_0x106c7f['userId'])_0x171469['set']('userId',String(_0x106c7f['userId']));if(_0x106c7f['status'])_0x171469['set']('status',String(_0x106c7f['status']));if(_0x106c7f['limit'])_0x171469['set']('limit',String(_0x106c7f['limit']));const _0xfff19a=API_BASE+'/tasks/groups'+(_0x171469['toString']()?'?'+_0x171469['toString']():''),_0x4c8865=await fetch(_0xfff19a);if(!_0x4c8865['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4c8865['json']();},async 'getTaskGroup'(_0x583e79){const _0x44cf03=await fetch(API_BASE+'/tasks/groups/'+_0x583e79);if(!_0x44cf03['ok']){const _0x7c066d=await _0x44cf03['json']();throw new Error(_0x7c066d['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x44cf03['json']();},async 'updateTaskGroup'(_0x3b56b6,_0x3c14dc,_0x53486d){const _0x227ffb=await fetch(API_BASE+'/tasks/'+_0x3b56b6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3c14dc,'groupIndex':_0x53486d})});if(!_0x227ffb['ok']){const _0x9ab8e2=await _0x227ffb['json']();throw new Error(_0x9ab8e2['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x227ffb['json']();},async 'removeTaskFromGroup'(_0x508db5){return this['updateTaskGroup'](_0x508db5,null,null);},async 'deleteTaskGroup'(_0x40cb99,_0x54f411=![]){const _0x559abc=_0x54f411?'?deleteTasks=true':'',_0x401018=await fetch(API_BASE+'/tasks/groups/'+_0x40cb99+_0x559abc,{'method':'DELETE'});if(!_0x401018['ok']){const _0x48575f=await _0x401018['json']();throw new Error(_0x48575f['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x422106,_0x24093a){const _0x49ea93=await fetch(API_BASE+'/tasks/groups/'+_0x422106+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x24093a})});if(!_0x49ea93['ok']){const _0x247483=await _0x49ea93['json']();throw new Error(_0x247483['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x49ea93['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x1a0da1){if(!_0x1a0da1)throw new Error('Task\x20ID\x20is\x20required');const _0x4f4f54=await fetch(API_BASE+'/tasks/'+_0x1a0da1+'/comments');if(!_0x4f4f54['ok']){const _0x2260b5=await _0x4f4f54['json']()['catch'](()=>({}));throw new Error(_0x2260b5['error']||'Failed\x20to\x20get\x20comments');}return await _0x4f4f54['json']();},async 'addComment'(_0x584e09,_0x1b6db4){if(!_0x584e09)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b6db4)throw new Error('Comment\x20content\x20is\x20required');const _0x5968b2=await fetch(API_BASE+'/tasks/'+_0x584e09+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1b6db4})});if(!_0x5968b2['ok']){const _0x5d4977=await _0x5968b2['json']()['catch'](()=>({}));throw new Error(_0x5d4977['error']||'Failed\x20to\x20add\x20comment');}return await _0x5968b2['json']();},async 'updateComment'(_0x42b38f,_0x498c8d,_0x3dea9f){if(!_0x42b38f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x498c8d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3dea9f)throw new Error('Comment\x20content\x20is\x20required');const _0x25dc65=await fetch(API_BASE+'/tasks/'+_0x42b38f+'/comments/'+_0x498c8d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3dea9f})});if(!_0x25dc65['ok']){const _0x489e82=await _0x25dc65['json']()['catch'](()=>({}));throw new Error(_0x489e82['error']||'Failed\x20to\x20update\x20comment');}return await _0x25dc65['json']();},async 'deleteComment'(_0x47cdb0,_0x32e0fe){if(!_0x47cdb0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x32e0fe)throw new Error('Comment\x20ID\x20is\x20required');const _0x1b46aa=await fetch(API_BASE+'/tasks/'+_0x47cdb0+'/comments/'+_0x32e0fe,{'method':'DELETE'});if(!_0x1b46aa['ok']){const _0x57671a=await _0x1b46aa['json']()['catch'](()=>({}));throw new Error(_0x57671a['error']||'Failed\x20to\x20delete\x20comment');}return await _0x1b46aa['json']();},async 'createObjective'(_0x599500){const _0x11610b={'objective':!![],'name':_0x599500['name']||'','environment':_0x599500['environment']||null,'agents':_0x599500['agents']||[],'branches':_0x599500['branches']||{},'isPinned':_0x599500['isPinned']||![],'parentObjectiveId':_0x599500['parentObjectiveId']||null,'env_vars':_0x599500['envVars']||{},'parameters':{'instructions':_0x599500['instructions']||''},'files':_0x599500['files']||[],'jira':_0x599500['jira']||null};return this['createTask'](_0x11610b);},async 'updateObjective'(_0x42c56d,_0x52fbb7,_0xf799b1=[],_0x41da19=[]){let _0x1406bb,_0x5c3596={};const _0x175431={..._0x52fbb7};_0x41da19&&_0x41da19['length']>0x0&&(_0x175431['removeAttachments']=_0x41da19);if(_0xf799b1&&_0xf799b1['length']>0x0){const _0x16c6c1=new FormData();for(const [_0x157f13,_0x3fc782]of Object['entries'](_0x175431)){if(_0x3fc782==null)continue;typeof _0x3fc782==='object'?_0x16c6c1['append'](_0x157f13,JSON['stringify'](_0x3fc782)):_0x16c6c1['append'](_0x157f13,String(_0x3fc782));}for(const _0x3b0b8b of _0xf799b1){_0x16c6c1['append']('attachments',_0x3b0b8b);}_0x1406bb=_0x16c6c1;}else _0x5c3596['Content-Type']='application/json',_0x1406bb=JSON['stringify'](_0x175431);const _0x5aa64d=await fetch(API_BASE+'/tasks/'+_0x42c56d,{'method':'PATCH','headers':_0x5c3596,'body':_0x1406bb});if(!_0x5aa64d['ok']){const _0x1527f3=await _0x5aa64d['json']();throw new Error(_0x1527f3['error']||'Failed\x20to\x20update\x20objective');}return await _0x5aa64d['json']();},async 'deleteObjective'(_0x4ad2aa){return this['deleteTask'](_0x4ad2aa);},async 'launchObjective'(_0x5b999,_0x24207d={}){const _0x1bab3a=await fetch(API_BASE+'/tasks/'+_0x5b999+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24207d)});if(!_0x1bab3a['ok']){const _0x54be60=await _0x1bab3a['json']();throw new Error(_0x54be60['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1bab3a['json']();},async 'getObjectiveAttachments'(_0x371f90){return this['getTaskAttachments'](_0x371f90);},async 'createJudgeTask'({environment:_0x3f321a,judgeAgent:_0x5d651b,groupId:_0x12e43b,taskIds:_0x276113,judgeCustomInstructions:_0xbd33b6,isPinned:_0x542e93}){const _0xf39a7=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3f321a,'judgeAgent':_0x5d651b,'groupId':_0x12e43b,'taskIds':_0x276113,'judgeCustomInstructions':_0xbd33b6,'isPinned':_0x542e93})});if(!_0xf39a7['ok']){const _0x29dbef=await _0xf39a7['json']();throw new Error(_0x29dbef['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xf39a7['json']();},async 'getJudgeTasks'(_0x3d27c9){const _0x23d583=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3d27c9));if(!_0x23d583['ok']){const _0x4671f4=await _0x23d583['json']();throw new Error(_0x4671f4['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x23d583['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x32f7b1,_0x319c76,_0xaa00c9=''){const _0x3fcf7a=await fetch(API_BASE+'/tasks/'+_0x32f7b1+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x319c76,'customPreamble':_0xaa00c9})});if(!_0x3fcf7a['ok']){const _0x2ab308=await _0x3fcf7a['json']();throw new Error(_0x2ab308['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x3fcf7a['json']();},async 'getJiraConfig'(){const _0x15f174=await fetch(API_BASE+'/jira/config');if(!_0x15f174['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x15f174['json']();},async 'getJiraIssue'(_0x1a8059){const _0x3d820c=await fetch(API_BASE+'/jira/issues/'+_0x1a8059);if(!_0x3d820c['ok']){const _0x47c365=await _0x3d820c['json']()['catch'](()=>({}));throw new Error(_0x47c365['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x3d820c['statusText']);}return await _0x3d820c['json']();},async 'searchJiraIssues'(_0x283400,_0x9dbd25=0x14){const _0x2d6986=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x283400,'maxResults':_0x9dbd25})});if(!_0x2d6986['ok']){const _0x242f07=await _0x2d6986['json']()['catch'](()=>({}));throw new Error(_0x242f07['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x2d6986['statusText']);}return await _0x2d6986['json']();},async 'postJiraComment'(_0x2a40a5,_0x17a9ae){const _0x4e3564=await fetch(API_BASE+'/jira/issues/'+_0x2a40a5+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x17a9ae})});if(!_0x4e3564['ok']){const _0x7f51a3=await _0x4e3564['json']()['catch'](()=>({}));throw new Error(_0x7f51a3['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4e3564['statusText']);}return await _0x4e3564['json']();},async 'getJiraComments'(_0x16891d){const _0x1e31f6=await fetch(API_BASE+'/jira/issues/'+_0x16891d+'/comments');if(!_0x1e31f6['ok']){const _0x2d0378=await _0x1e31f6['json']()['catch'](()=>({}));throw new Error(_0x2d0378['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1e31f6['statusText']);}return await _0x1e31f6['json']();},async 'promptParameter'({environment:_0x4ddb47,command:_0x5899bf,parser:parser='json'}){const _0xe34122=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4ddb47,'command':_0x5899bf,'parser':parser})});if(!_0xe34122['ok']){const _0x58ab2b=await _0xe34122['json']()['catch'](()=>({}));throw new Error(_0x58ab2b['message']||_0x58ab2b['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xe34122['statusText']);}return await _0xe34122['json']();},async 'promptParameterStream'(_0x42dd0d,_0x3b7555){const _0x2d5927=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42dd0d)});if(!_0x2d5927['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2d5927['statusText']);const _0x4ae719=_0x2d5927['body']['getReader'](),_0x57c5cc=new TextDecoder();let _0x5d6399='';return new Promise((_0x4e1573,_0x12828d)=>{const _0x3a2ddd=async()=>{try{const {done:_0x49c7c7,value:_0x57f075}=await _0x4ae719['read']();if(_0x49c7c7)return;_0x5d6399+=_0x57c5cc['decode'](_0x57f075,{'stream':!![]});const _0xfb1f75=_0x5d6399['split']('\x0a\x0a');_0x5d6399=_0xfb1f75['pop']()||'';for(const _0x339742 of _0xfb1f75){if(!_0x339742['trim']())continue;const _0x23e156=_0x339742['split']('\x0a');let _0x388eb8='message',_0x100687='';for(const _0x164d1f of _0x23e156){if(_0x164d1f['startsWith']('event:'))_0x388eb8=_0x164d1f['substring'](0x6)['trim']();else _0x164d1f['startsWith']('data:')&&(_0x100687=_0x164d1f['substring'](0x5)['trim']());}if(!_0x100687)continue;try{const _0x2f0d36=JSON['parse'](_0x100687);if(_0x388eb8==='progress'&&_0x3b7555)_0x3b7555(_0x2f0d36['stage'],_0x2f0d36['message']);else{if(_0x388eb8==='result'){_0x4e1573(_0x2f0d36);return;}else{if(_0x388eb8==='error'){let _0x37f542=_0x2f0d36['message']||_0x2f0d36['error']||'Prompt\x20command\x20failed';_0x2f0d36['rawOutput']&&(_0x37f542+='\x0a\x0aRaw\x20output:\x0a'+_0x2f0d36['rawOutput']);_0x12828d(new Error(_0x37f542));return;}}}}catch(_0x3ca1dd){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3ca1dd),console['error']('Event\x20type:',_0x388eb8),console['error']('Event\x20data:',_0x100687),console['error']('First\x20200\x20chars:',_0x100687['substring'](0x0,0xc8)),_0x12828d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3ca1dd['message']+'\x0a\x0aData:\x20'+_0x100687['substring'](0x0,0x1f4)));return;}}_0x3a2ddd();}catch(_0xb11f98){_0x12828d(_0xb11f98);}};_0x3a2ddd();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x228a57){const _0x27aebd=await fetch(''+API_BASE+_0x228a57);if(!_0x27aebd['ok']){const _0x31235e=await _0x27aebd['json']()['catch'](()=>({'error':_0x27aebd['statusText']})),_0x198d66=new Error(_0x31235e['error']||_0x31235e['message']||_0x27aebd['statusText']);if(_0x31235e['detail']!==undefined)_0x198d66['detail']=_0x31235e['detail'];throw _0x198d66;}return await _0x27aebd['json']();},async 'post'(_0x2e47a0,_0x5d4f75){const _0xac1655=await fetch(''+API_BASE+_0x2e47a0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d4f75)});if(!_0xac1655['ok']){const _0x1cd886=await _0xac1655['json']()['catch'](()=>({'error':_0xac1655['statusText']})),_0xdfc0de=new Error(_0x1cd886['error']||_0x1cd886['message']||_0xac1655['statusText']);if(_0x1cd886['detail']!==undefined)_0xdfc0de['detail']=_0x1cd886['detail'];throw _0xdfc0de;}return await _0xac1655['json']();},async 'put'(_0x45c291,_0x363503){const _0x12049e=await fetch(''+API_BASE+_0x45c291,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x363503)});if(!_0x12049e['ok']){const _0x378b3e=await _0x12049e['json']()['catch'](()=>({'error':_0x12049e['statusText']})),_0x5e4c5=new Error(_0x378b3e['error']||_0x378b3e['message']||_0x12049e['statusText']);if(_0x378b3e['detail']!==undefined)_0x5e4c5['detail']=_0x378b3e['detail'];throw _0x5e4c5;}return await _0x12049e['json']();},async 'delete'(_0x33f346,_0x5c399a){const _0x49f777={'method':'DELETE'};_0x5c399a&&(_0x49f777['headers']={'Content-Type':'application/json'},_0x49f777['body']=JSON['stringify'](_0x5c399a));const _0x3a43cd=await fetch(''+API_BASE+_0x33f346,_0x49f777);if(!_0x3a43cd['ok']){const _0x39ab94=await _0x3a43cd['json']()['catch'](()=>({'error':_0x3a43cd['statusText']})),_0x4596b7=new Error(_0x39ab94['error']||_0x39ab94['message']||_0x3a43cd['statusText']);if(_0x39ab94['detail']!==undefined)_0x4596b7['detail']=_0x39ab94['detail'];throw _0x4596b7;}return await _0x3a43cd['json']();},async 'getSkills'(){const _0x583aad=await fetch(API_BASE+'/skills');if(!_0x583aad['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x583aad['statusText']);return await _0x583aad['json']();},async 'getSkill'(_0x61cb57){const _0x5e60cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x61cb57));if(!_0x5e60cc['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5e60cc['statusText']);return await _0x5e60cc['json']();},async 'createSkill'(_0x503280){const _0x17ae51=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x503280)});if(!_0x17ae51['ok']){const _0xa7eda8=await _0x17ae51['json']()['catch'](()=>({'error':_0x17ae51['statusText']})),_0x1183c2=new Error(_0xa7eda8['error']||_0xa7eda8['message']||_0x17ae51['statusText']);if(_0xa7eda8['detail']!==undefined)_0x1183c2['detail']=_0xa7eda8['detail'];throw _0x1183c2;}return await _0x17ae51['json']();},async 'updateSkill'(_0x12ac6c,_0x564f3e){const _0x3c60fa=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x12ac6c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x564f3e)});if(!_0x3c60fa['ok']){const _0x31f5cc=await _0x3c60fa['json']()['catch'](()=>({'error':_0x3c60fa['statusText']})),_0x3829d0=new Error(_0x31f5cc['error']||_0x31f5cc['message']||_0x3c60fa['statusText']);if(_0x31f5cc['detail']!==undefined)_0x3829d0['detail']=_0x31f5cc['detail'];throw _0x3829d0;}return await _0x3c60fa['json']();},async 'deleteSkill'(_0x2fa002){const _0x32f45e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2fa002),{'method':'DELETE'});if(!_0x32f45e['ok']){const _0x5dbcf2=await _0x32f45e['json']()['catch'](()=>({'error':_0x32f45e['statusText']})),_0x2305a8=new Error(_0x5dbcf2['error']||_0x5dbcf2['message']||_0x32f45e['statusText']);if(_0x5dbcf2['detail']!==undefined)_0x2305a8['detail']=_0x5dbcf2['detail'];throw _0x2305a8;}return await _0x32f45e['json']();},async 'getSkillFile'(_0x1dfe2c,_0x230c77){const _0x37fc1f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1dfe2c)+'/files/'+_0x230c77);if(!_0x37fc1f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x37fc1f['statusText']);return await _0x37fc1f['json']();},async 'saveSkillFile'(_0x2bceac,_0x55b4d4,_0x1d4ca3){const _0x167da4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2bceac)+'/files/'+_0x55b4d4,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d4ca3})});if(!_0x167da4['ok']){const _0x21839f=await _0x167da4['json']()['catch'](()=>({'error':_0x167da4['statusText']})),_0x562abb=new Error(_0x21839f['error']||_0x21839f['message']||_0x167da4['statusText']);if(_0x21839f['detail']!==undefined)_0x562abb['detail']=_0x21839f['detail'];throw _0x562abb;}return await _0x167da4['json']();},async 'deleteSkillFile'(_0x2aa230,_0x11b1a){const _0x29bb31=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2aa230)+'/files/'+_0x11b1a,{'method':'DELETE'});if(!_0x29bb31['ok']){const _0x3ae048=await _0x29bb31['json']()['catch'](()=>({'error':_0x29bb31['statusText']})),_0x434002=new Error(_0x3ae048['error']||_0x3ae048['message']||_0x29bb31['statusText']);if(_0x3ae048['detail']!==undefined)_0x434002['detail']=_0x3ae048['detail'];throw _0x434002;}return await _0x29bb31['json']();},async 'pullSkills'(){const _0x175661=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x175661['ok']){const _0x1848b8=await _0x175661['json']()['catch'](()=>({'error':_0x175661['statusText']})),_0x232780=new Error(_0x1848b8['error']||_0x1848b8['message']||_0x175661['statusText']);if(_0x1848b8['detail']!==undefined)_0x232780['detail']=_0x1848b8['detail'];throw _0x232780;}return await _0x175661['json']();},async 'commitSkills'(_0x1e4478,_0x3a574e={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3a574e,_0x111c54=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1e4478,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x111c54['ok']){const _0xd04d39=await _0x111c54['json']()['catch'](()=>({'error':_0x111c54['statusText']})),_0x15e851=new Error(_0xd04d39['error']||_0xd04d39['message']||_0x111c54['statusText']);if(_0xd04d39['detail']!==undefined)_0x15e851['detail']=_0xd04d39['detail'];throw _0x15e851;}return await _0x111c54['json']();},async 'discardSkillsChanges'(){const _0x1a22bd=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1a22bd['ok']){const _0x217e6d=await _0x1a22bd['json']()['catch'](()=>({'error':_0x1a22bd['statusText']})),_0x53f22c=new Error(_0x217e6d['error']||_0x217e6d['message']||_0x1a22bd['statusText']);if(_0x217e6d['detail']!==undefined)_0x53f22c['detail']=_0x217e6d['detail'];throw _0x53f22c;}return await _0x1a22bd['json']();},async 'getSkillCatalog'(){const _0x10934b=await fetch(API_BASE+'/external-skills/catalog');if(!_0x10934b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x10934b['statusText']);return await _0x10934b['json']();},async 'getImportedSkillsRegistry'(){const _0x3d5c2c=await fetch(API_BASE+'/external-skills/registry');if(!_0x3d5c2c['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3d5c2c['statusText']);return await _0x3d5c2c['json']();},async 'importCatalogSkill'(_0xc79c1d){const _0x37b83b=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0xc79c1d})});if(!_0x37b83b['ok']){const _0x155496=await _0x37b83b['json']()['catch'](()=>({'error':_0x37b83b['statusText']})),_0x379dce=new Error(_0x155496['error']||_0x155496['message']||_0x37b83b['statusText']);if(_0x155496['detail']!==undefined)_0x379dce['detail']=_0x155496['detail'];throw _0x379dce;}return await _0x37b83b['json']();},async 'importSkillFromGit'(_0x340512,_0x291480,_0xdb219b='main',_0x44cd40=null){const _0x423358=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x340512,'skillPath':_0x291480,'branch':_0xdb219b,'skillId':_0x44cd40})});if(!_0x423358['ok']){const _0x4405e5=await _0x423358['json']()['catch'](()=>({'error':_0x423358['statusText']})),_0x5b26c3=new Error(_0x4405e5['error']||_0x4405e5['message']||_0x423358['statusText']);if(_0x4405e5['detail']!==undefined)_0x5b26c3['detail']=_0x4405e5['detail'];throw _0x5b26c3;}return await _0x423358['json']();},async 'probeMarketplace'(_0x3b0bda,_0x365c79='main'){const _0xe3ab2e=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3b0bda,'branch':_0x365c79})});if(!_0xe3ab2e['ok']){const _0x3a7a03=await _0xe3ab2e['json']()['catch'](()=>({'error':_0xe3ab2e['statusText']})),_0xf70b5b=new Error(_0x3a7a03['error']||_0x3a7a03['message']||_0xe3ab2e['statusText']);if(_0x3a7a03['detail']!==undefined)_0xf70b5b['detail']=_0x3a7a03['detail'];throw _0xf70b5b;}return await _0xe3ab2e['json']();},async 'importMarketplaceBundle'(_0x42d48d,_0x14cce7,_0x4b126d,_0x550af9=null){const _0x546695=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x42d48d,'branch':_0x14cce7,'bundleId':_0x4b126d,'selectedSkills':_0x550af9})});if(!_0x546695['ok']){const _0x36e089=await _0x546695['json']()['catch'](()=>({'error':_0x546695['statusText']})),_0x2dee83=new Error(_0x36e089['error']||_0x36e089['message']||_0x546695['statusText']);if(_0x36e089['detail']!==undefined)_0x2dee83['detail']=_0x36e089['detail'];throw _0x2dee83;}return await _0x546695['json']();},async 'importSkillFromFolder'(_0x42b112,_0x4bc7af=null){const _0x5c0448=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x42b112,'skillId':_0x4bc7af})});if(!_0x5c0448['ok']){const _0x7076f2=await _0x5c0448['json']()['catch'](()=>({'error':_0x5c0448['statusText']})),_0x3652a1=new Error(_0x7076f2['error']||_0x7076f2['message']||_0x5c0448['statusText']);if(_0x7076f2['detail']!==undefined)_0x3652a1['detail']=_0x7076f2['detail'];throw _0x3652a1;}return await _0x5c0448['json']();},async 'importSkillFromNpm'(_0x23d541,_0x3c8320='latest',_0x1676bc=null,_0x18c096=null){const _0x45398b=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x23d541,'version':_0x3c8320,'skillId':_0x1676bc,'registry':_0x18c096})});if(!_0x45398b['ok']){const _0x593a12=await _0x45398b['json']()['catch'](()=>({'error':_0x45398b['statusText']})),_0xc6a97e=new Error(_0x593a12['error']||_0x593a12['message']||_0x45398b['statusText']);if(_0x593a12['detail']!==undefined)_0xc6a97e['detail']=_0x593a12['detail'];throw _0xc6a97e;}return await _0x45398b['json']();},async 'checkSkillUpdates'(_0x15d3dc){const _0x2c1113=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x15d3dc)+'/check-updates',{'method':'POST'});if(!_0x2c1113['ok']){const _0x6c2e3=await _0x2c1113['json']()['catch'](()=>({'error':_0x2c1113['statusText']})),_0x58dd15=new Error(_0x6c2e3['error']||_0x6c2e3['message']||_0x2c1113['statusText']);if(_0x6c2e3['detail']!==undefined)_0x58dd15['detail']=_0x6c2e3['detail'];throw _0x58dd15;}return await _0x2c1113['json']();},async 'updateExternalSkill'(_0x354591){const _0xd990b7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x354591)+'/update',{'method':'POST'});if(!_0xd990b7['ok']){const _0x36cb90=await _0xd990b7['json']()['catch'](()=>({'error':_0xd990b7['statusText']})),_0xff76cc=new Error(_0x36cb90['error']||_0x36cb90['message']||_0xd990b7['statusText']);if(_0x36cb90['detail']!==undefined)_0xff76cc['detail']=_0x36cb90['detail'];throw _0xff76cc;}return await _0xd990b7['json']();},async 'updateSkillFlags'(_0x5076cc,_0x4c2456){const _0x5015fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5076cc)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4c2456})});if(!_0x5015fd['ok']){const _0x57081b=await _0x5015fd['json']()['catch'](()=>({'error':_0x5015fd['statusText']})),_0x21b5ef=new Error(_0x57081b['error']||_0x57081b['message']||_0x5015fd['statusText']);if(_0x57081b['detail']!==undefined)_0x21b5ef['detail']=_0x57081b['detail'];throw _0x21b5ef;}return await _0x5015fd['json']();},async 'removeFromImportedRegistry'(_0x38a80c){const _0x463a22=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x38a80c)+'/registry',{'method':'DELETE'});if(!_0x463a22['ok']){const _0x55aa42=await _0x463a22['json']()['catch'](()=>({'error':_0x463a22['statusText']})),_0x1c71d2=new Error(_0x55aa42['error']||_0x55aa42['message']||_0x463a22['statusText']);if(_0x55aa42['detail']!==undefined)_0x1c71d2['detail']=_0x55aa42['detail'];throw _0x1c71d2;}return await _0x463a22['json']();},async 'getTeams'(){const _0x180f26=await fetch(API_BASE+'/teams');if(!_0x180f26['ok']){const _0x2ddc37=await _0x180f26['json']()['catch'](()=>({'message':_0x180f26['statusText']}));throw new Error(_0x2ddc37['message']||'Failed\x20to\x20get\x20teams');}return await _0x180f26['json']();},async 'getTeam'(_0x5a4303){const _0x4f474d=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5a4303));if(!_0x4f474d['ok']){const _0x323210=await _0x4f474d['json']()['catch'](()=>({'message':_0x4f474d['statusText']}));throw new Error(_0x323210['message']||'Failed\x20to\x20get\x20team');}return await _0x4f474d['json']();},async 'createTeam'(_0x1d3e6d){const _0x10ab13=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d3e6d)});if(!_0x10ab13['ok']){const _0x2d30b0=await _0x10ab13['json']()['catch'](()=>({'message':_0x10ab13['statusText']}));throw new Error(_0x2d30b0['message']||'Failed\x20to\x20create\x20team');}return await _0x10ab13['json']();},async 'updateTeam'(_0x397200,_0x43325){const _0x1223a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x397200),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43325)});if(!_0x1223a2['ok']){const _0x49cb8e=await _0x1223a2['json']()['catch'](()=>({'message':_0x1223a2['statusText']}));throw new Error(_0x49cb8e['message']||'Failed\x20to\x20update\x20team');}return await _0x1223a2['json']();},async 'deleteTeam'(_0x5c5fb3){const _0x15c494=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5c5fb3),{'method':'DELETE'});if(!_0x15c494['ok']){const _0x248363=await _0x15c494['json']()['catch'](()=>({'message':_0x15c494['statusText']}));throw new Error(_0x248363['message']||'Failed\x20to\x20delete\x20team');}return await _0x15c494['json']();},async 'addTeamMember'(_0x216296,_0x3593e9){const _0x115550=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x216296)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3593e9})});if(!_0x115550['ok']){const _0x2184f4=await _0x115550['json']()['catch'](()=>({'message':_0x115550['statusText']}));throw new Error(_0x2184f4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x115550['json']();},async 'removeTeamMember'(_0x3ef945,_0x140824){const _0x4171d6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3ef945)+'/members/'+encodeURIComponent(_0x140824),{'method':'DELETE'});if(!_0x4171d6['ok']){const _0x5c8ac0=await _0x4171d6['json']()['catch'](()=>({'message':_0x4171d6['statusText']}));throw new Error(_0x5c8ac0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4171d6['json']();},async 'getBindings'(_0xefdd4f={}){const _0x477a9f=new URLSearchParams();if(_0xefdd4f['resource_type'])_0x477a9f['set']('resource_type',_0xefdd4f['resource_type']);if(_0xefdd4f['resource_id'])_0x477a9f['set']('resource_id',_0xefdd4f['resource_id']);if(_0xefdd4f['subject_type'])_0x477a9f['set']('subject_type',_0xefdd4f['subject_type']);if(_0xefdd4f['subject_id'])_0x477a9f['set']('subject_id',_0xefdd4f['subject_id']);const _0x438447=_0x477a9f['toString'](),_0x4ce436=await fetch(API_BASE+'/bindings'+(_0x438447?'?'+_0x438447:''));if(!_0x4ce436['ok']){const _0x3723ed=await _0x4ce436['json']()['catch'](()=>({'message':_0x4ce436['statusText']}));throw new Error(_0x3723ed['message']||'Failed\x20to\x20get\x20bindings');}return await _0x4ce436['json']();},async 'createBinding'(_0x3afb6b){const _0x5d6455=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3afb6b)});if(!_0x5d6455['ok']){const _0x1622c1=await _0x5d6455['json']()['catch'](()=>({'message':_0x5d6455['statusText']}));throw new Error(_0x1622c1['message']||'Failed\x20to\x20create\x20binding');}return await _0x5d6455['json']();},async 'updateBinding'(_0x1e73e2,_0x59ddcb){const _0x48287b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1e73e2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59ddcb)});if(!_0x48287b['ok']){const _0x1890cd=await _0x48287b['json']()['catch'](()=>({'message':_0x48287b['statusText']}));throw new Error(_0x1890cd['message']||'Failed\x20to\x20update\x20binding');}return await _0x48287b['json']();},async 'deleteBinding'(_0x22de82){const _0x46dd19=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x22de82),{'method':'DELETE'});if(!_0x46dd19['ok']){const _0x5b06ac=await _0x46dd19['json']()['catch'](()=>({'message':_0x46dd19['statusText']}));throw new Error(_0x5b06ac['message']||'Failed\x20to\x20delete\x20binding');}return await _0x46dd19['json']();},async 'getRoleDefinitions'(){const _0x38768b=await fetch(API_BASE+'/roles');if(!_0x38768b['ok']){const _0x57d5b3=await _0x38768b['json']()['catch'](()=>({'message':_0x38768b['statusText']}));throw new Error(_0x57d5b3['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x38768b['json']();},async 'getRoleDefinition'(_0x31d11b){const _0x23ee38=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31d11b));if(!_0x23ee38['ok']){const _0x5e017f=await _0x23ee38['json']()['catch'](()=>({'message':_0x23ee38['statusText']}));throw new Error(_0x5e017f['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x23ee38['json']();},async 'createRoleDefinition'(_0x2ec901){const _0x55d52d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ec901)});if(!_0x55d52d['ok']){const _0x4462db=await _0x55d52d['json']()['catch'](()=>({'message':_0x55d52d['statusText']}));throw new Error(_0x4462db['message']||_0x4462db['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x55d52d['json']();},async 'updateRoleDefinition'(_0x28beac,_0x105096){const _0x281ce3=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x28beac),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x105096)});if(!_0x281ce3['ok']){const _0x3b7214=await _0x281ce3['json']()['catch'](()=>({'message':_0x281ce3['statusText']}));throw new Error(_0x3b7214['message']||_0x3b7214['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x281ce3['json']();},async 'deleteRoleDefinition'(_0x4be677){const _0x53e99c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4be677),{'method':'DELETE'});if(!_0x53e99c['ok']){const _0x5c84ee=await _0x53e99c['json']()['catch'](()=>({'message':_0x53e99c['statusText']}));throw new Error(_0x5c84ee['message']||_0x5c84ee['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x53e99c['json']();},async 'getAvailablePermissions'(){const _0x12ceb3=await fetch(API_BASE+'/roles/available-permissions');if(!_0x12ceb3['ok']){const _0x266d4f=await _0x12ceb3['json']()['catch'](()=>({'message':_0x12ceb3['statusText']}));throw new Error(_0x266d4f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x12ceb3['json']();},async 'getGitProviderAllowedTeams'(_0x15b1a0){const _0x28676c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x15b1a0)+'/allowed-teams');if(!_0x28676c['ok']){const _0x28dcc2=await _0x28676c['json']()['catch'](()=>({'message':_0x28676c['statusText']}));throw new Error(_0x28dcc2['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x28676c['json']();},async 'setGitProviderAllowedTeams'(_0x433703,_0x4ab385){const _0x478329=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x433703)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x4ab385})});if(!_0x478329['ok']){const _0x1af74f=await _0x478329['json']()['catch'](()=>({'message':_0x478329['statusText']}));throw new Error(_0x1af74f['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x478329['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 _0x473eff=toastState['baseBottom'];toastState['toasts']['forEach'](_0xc8b511=>{_0xc8b511['el']['style']['bottom']=_0x473eff+'px';const _0x4b9091=_0xc8b511['el']['offsetHeight']||toastState['defaultHeight'];_0x473eff+=_0x4b9091+toastState['gap'];});});}function removeToastById(_0x257adf){const _0x4b171e=toastState['toasts']['findIndex'](_0x1bc1a2=>_0x1bc1a2['id']===_0x257adf);if(_0x4b171e===-0x1)return;const _0x12e253=toastState['toasts'][_0x4b171e];if(_0x12e253['timeoutId'])clearTimeout(_0x12e253['timeoutId']);_0x12e253['el']['classList']['remove']('show'),setTimeout(()=>_0x12e253['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4b171e,0x1),repositionAllToasts();}function registerToast(_0x52f7e7){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x52f7e7),repositionAllToasts(),_0x52f7e7['id'];}function getNextToastId(){return toastState['nextId']++;}export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x360b23){const _0x48deea=new Date(_0x360b23),_0x4b3552=new Date(),_0x5dfb7d=_0x4b3552-_0x48deea,_0x511432=Math['floor'](_0x5dfb7d/0x3e8),_0xeeb92d=Math['floor'](_0x511432/0x3c),_0x2286f0=Math['floor'](_0xeeb92d/0x3c),_0x1ed5b4=Math['floor'](_0x2286f0/0x18);if(_0x511432<0x3c)return'now';if(_0xeeb92d<0x3c)return _0xeeb92d+'m\x20ago';if(_0x2286f0<0x18)return _0x2286f0+'h\x20ago';return _0x1ed5b4+'d\x20ago';},'getStatusIcon'(_0x27d8d3){switch(_0x27d8d3){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x227730){switch(_0x227730){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'(_0x4edc0b,_0x3efa44=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x266155={};_0x266155['text/plain']=new Blob([_0x4edc0b],{'type':'text/plain'});_0x3efa44&&(_0x266155['text/html']=new Blob([_0x3efa44],{'type':'text/html'}));const _0x1d6af5=new ClipboardItem(_0x266155);return await navigator['clipboard']['write']([_0x1d6af5]),!![];}catch(_0x374618){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x374618);}try{const _0x19bc4f=_0x8d9de8=>{_0x8d9de8['preventDefault'](),_0x8d9de8['clipboardData']['setData']('text/plain',_0x4edc0b),_0x3efa44&&_0x8d9de8['clipboardData']['setData']('text/html',_0x3efa44);};document['addEventListener']('copy',_0x19bc4f);const _0x47909c=document['execCommand']('copy');document['removeEventListener']('copy',_0x19bc4f);if(_0x47909c)return!![];}catch(_0x5b8ff1){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x5b8ff1);}try{const _0x11f15c=document['createElement']('textarea');_0x11f15c['value']=_0x4edc0b,_0x11f15c['style']['position']='fixed',_0x11f15c['style']['opacity']='0',_0x11f15c['style']['pointerEvents']='none',document['body']['appendChild'](_0x11f15c),_0x11f15c['select']();const _0x439c26=document['execCommand']('copy');return document['body']['removeChild'](_0x11f15c),_0x439c26;}catch(_0x1de342){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1de342),![];}},'showToast'(_0x4d101d,_0x516447='info'){const _0x21b7ab=getNextToastId(),_0x282527=document['createElement']('div');_0x282527['className']='toast\x20toast-'+_0x516447,_0x282527['textContent']=_0x4d101d,_0x282527['dataset']['toastId']=_0x21b7ab,document['body']['appendChild'](_0x282527);const _0x1932e2=_0x516447==='error'?0x2710:0xbb8,_0x1b80c2=setTimeout(()=>{removeToastById(_0x21b7ab);},_0x1932e2),_0x3e1471={'id':_0x21b7ab,'el':_0x282527,'timeoutId':_0x1b80c2};return registerToast(_0x3e1471),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x282527['classList']['add']('show');});}),_0x21b7ab;},'showError'(_0x100aa0){console['error'](_0x100aa0);const _0x4770cf=typeof _0x100aa0==='string'?_0x100aa0:_0x100aa0['message']||'An\x20error\x20occurred';this['showToast'](_0x4770cf,'error');},'showSuccess'(_0x76384b){this['showToast'](_0x76384b,'success');},'capitalize'(_0x5653cd){if(!_0x5653cd)return'';return _0x5653cd['charAt'](0x0)['toUpperCase']()+_0x5653cd['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x146bcd){if(_0x146bcd===null||_0x146bcd===undefined)return'';return String(_0x146bcd)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');},'ansiToHtml'(_0x5b00bf){if(_0x5b00bf===null||_0x5b00bf===undefined)return'';let _0x3ac0b5=this['escapeHtml'](_0x5b00bf);const _0x45b046={'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'},_0x1af33d={'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 _0x1370fb=0x0;return _0x3ac0b5=_0x3ac0b5['replace'](/\x1b\[([0-9;]*)m/g,(_0x3680d6,_0x36f69e)=>{if(!_0x36f69e||_0x36f69e==='0'){const _0x15aad9='</span>'['repeat'](_0x1370fb);return _0x1370fb=0x0,_0x15aad9;}const _0x213bc0=_0x36f69e['split'](';'),_0x3dbb40=[];for(const _0x8c7c72 of _0x213bc0){if(_0x8c7c72==='1')_0x3dbb40['push']('font-weight:bold');else{if(_0x8c7c72==='2')_0x3dbb40['push']('opacity:0.7');else{if(_0x8c7c72==='3')_0x3dbb40['push']('font-style:italic');else{if(_0x8c7c72==='4')_0x3dbb40['push']('text-decoration:underline');else{if(_0x8c7c72==='9')_0x3dbb40['push']('text-decoration:line-through');else{if(_0x45b046[_0x8c7c72])_0x3dbb40['push']('color:'+_0x45b046[_0x8c7c72]);else{if(_0x1af33d[_0x8c7c72])_0x3dbb40['push']('background-color:'+_0x1af33d[_0x8c7c72]);}}}}}}}if(_0x3dbb40['length']>0x0)return _0x1370fb++,'<span\x20style=\x22'+_0x3dbb40['join'](';')+'\x22>';return'';}),_0x3ac0b5+='</span>'['repeat'](_0x1370fb),_0x3ac0b5=_0x3ac0b5['replace'](/\\u001b\[([0-9;]*)m/g,(_0x6eb13c,_0x251a4a)=>{if(!_0x251a4a||_0x251a4a==='0')return'';const _0x43d945=_0x251a4a['split'](';'),_0x3d6435=[];for(const _0x5931a4 of _0x43d945){if(_0x5931a4==='1')_0x3d6435['push']('font-weight:bold');else{if(_0x45b046[_0x5931a4])_0x3d6435['push']('color:'+_0x45b046[_0x5931a4]);else{if(_0x1af33d[_0x5931a4])_0x3d6435['push']('background-color:'+_0x1af33d[_0x5931a4]);}}}if(_0x3d6435['length']>0x0)return'<span\x20style=\x22'+_0x3d6435['join'](';')+'\x22>';return'';}),_0x3ac0b5;},'showModal'({title:_0xb9fcd5,content:_0x46d4cf,buttons:buttons=[]}){const _0x196253='\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'](_0xb9fcd5)+'</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>&times;</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'+_0x46d4cf+'\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']((_0x334ecb,_0x4320d0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x334ecb['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4320d0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x334ecb['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',_0x45400c=document['createElement']('div');_0x45400c['id']='utils-modal',_0x45400c['className']='modal',_0x45400c['innerHTML']=_0x196253,document['body']['appendChild'](_0x45400c);const _0x3b916a=document['getElementById']('utils-modal-close');_0x3b916a&&_0x3b916a['addEventListener']('click',()=>this['hideModal']());const _0x2f15ca=_0x45400c['querySelectorAll']('[data-btn-index]');_0x2f15ca['forEach'](_0x161146=>{const _0x2dfa07=parseInt(_0x161146['dataset']['btnIndex']);buttons[_0x2dfa07]?.['onClick']&&_0x161146['addEventListener']('click',buttons[_0x2dfa07]['onClick']);});const _0x36e025=document['getElementById']('utils-modal-overlay');_0x36e025&&_0x36e025['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x3182a1=document['getElementById']('utils-modal');_0x3182a1&&_0x3182a1['remove']();},'parseKeyValuePairs'(_0x5bae83){const _0x5adf00={};if(!_0x5bae83)return _0x5adf00;return _0x5bae83['split'](/\r?\n/)['map'](_0x1d0e9a=>_0x1d0e9a['trim']())['filter'](Boolean)['forEach'](_0x8c5879=>{const _0x3a4075=_0x8c5879['indexOf']('=');if(_0x3a4075>0x0){const _0x1556bc=_0x8c5879['slice'](0x0,_0x3a4075)['trim'](),_0x4e7f6b=_0x8c5879['slice'](_0x3a4075+0x1)['trim']();if(_0x1556bc)_0x5adf00[_0x1556bc]=_0x4e7f6b;}}),_0x5adf00;},'debounce'(_0x319e30,_0x274262=0xfa){let _0x3f96db=null;return(..._0x810cc5)=>{clearTimeout(_0x3f96db),_0x3f96db=setTimeout(()=>_0x319e30['apply'](this,_0x810cc5),_0x274262);};},'formatTimestamp'(_0x1f0e4a){if(!_0x1f0e4a)return'N/A';const _0x5efcf0=new Date(_0x1f0e4a);return _0x5efcf0['toLocaleDateString']()+'\x20'+_0x5efcf0['toLocaleTimeString']();},'getQueryParams'(){const _0xdcbc5d=new URLSearchParams(window['location']['search']),_0x296a36={};for(const [_0x276459,_0x1e240d]of _0xdcbc5d){_0x296a36[_0x276459]=_0x1e240d;}return _0x296a36;},'formatDuration'(_0x78c5a,_0x42568e){if(!_0x78c5a)return'N/A';const _0xd4032b=new Date(_0x78c5a),_0x6ba020=_0x42568e?new Date(_0x42568e):new Date(),_0x5ac7ae=_0x6ba020-_0xd4032b;if(_0x5ac7ae<0x0)return'0s';const _0x79973c=Math['floor'](_0x5ac7ae/0x3e8),_0x18cf37=Math['floor'](_0x79973c/0x3c),_0x9ad4e4=Math['floor'](_0x18cf37/0x3c),_0xe46095=Math['floor'](_0x9ad4e4/0x18);if(_0x79973c<0x3c)return _0x79973c+'s';if(_0x18cf37<0x3c)return _0x18cf37+'m\x20'+_0x79973c%0x3c+'s';if(_0x9ad4e4<0x18)return _0x9ad4e4+'h\x20'+_0x18cf37%0x3c+'m\x20'+_0x79973c%0x3c+'s';return _0xe46095+'d\x20'+_0x9ad4e4%0x18+'h\x20'+_0x18cf37%0x3c+'m';},'renderMarkdown'(_0x4c34f4,_0x5ea4a0={}){if(!_0x4c34f4)return'';_0x4c34f4=this['rewriteAttachmentLinks'](_0x4c34f4,_0x5ea4a0),_0x4c34f4=this['rewriteColorSyntax'](_0x4c34f4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x4c34f4,_0x5ea4a0);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x59b1a6=new marked['Renderer'](),_0x345b18=_0x59b1a6['code']['bind'](_0x59b1a6);_0x59b1a6['code']=function(_0x485549,_0x3a7539){const _0x48587f=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x48587f&&_0x3a7539)try{const _0xef2e4f=_0x48587f['getLanguage'](_0x3a7539)?_0x3a7539:'plaintext',_0x289bc0=_0x48587f['highlight'](_0x485549,{'language':_0xef2e4f})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x3a7539+'\x22>'+_0x289bc0+'</code></pre>';}catch(_0x3765b4){console['error']('Syntax\x20highlighting\x20error:',_0x3765b4);}return _0x345b18(_0x485549,_0x3a7539);};try{return marked['parse'](_0x4c34f4,{'renderer':_0x59b1a6});}catch(_0x296813){return console['error']('Markdown\x20parsing\x20error:',_0x296813),this['renderMarkdownFallback'](_0x4c34f4,_0x5ea4a0);}},'rewriteAttachmentLinks'(_0x67b6c1,_0xfa6fff={}){const _0xad4b60=typeof _0xfa6fff['resolveAttachmentUrl']==='function'?_0xfa6fff['resolveAttachmentUrl']:_0xfa6fff['taskId']?_0x22bbf0=>API_BASE+'/tasks/'+_0xfa6fff['taskId']+'/attachments/'+encodeURIComponent(_0x22bbf0):null;if(!_0xad4b60)return _0x67b6c1;return String(_0x67b6c1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x21d152,_0x2d9867)=>{const _0x2eabd4=String(_0x2d9867||'')['trim']();if(!_0x2eabd4)return _0x21d152;let _0x316e08=_0x2eabd4;try{_0x316e08=decodeURIComponent(_0x2eabd4);}catch{}const _0x157316=_0xad4b60(_0x316e08);if(!_0x157316)return _0x21d152;return']('+_0x157316+')';});},'rewriteColorSyntax'(_0x5ed622){if(!_0x5ed622)return _0x5ed622;return String(_0x5ed622)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x123e05,_0x5dbfe9,_0x11fb6a)=>{const _0x1b360c=this['rewriteColorSyntax'](_0x11fb6a);return'<span\x20style=\x22color:\x20'+_0x5dbfe9+'\x22>'+_0x1b360c+'</span>';});},'renderMarkdownFallback'(_0x3fba0a,_0x4b9b29={}){if(!_0x3fba0a)return'';_0x3fba0a=_0x3fba0a['replace'](/\r\n/g,'\x0a'),_0x3fba0a=_0x3fba0a['replace'](/\r/g,'\x0a'),_0x3fba0a=this['rewriteAttachmentLinks'](_0x3fba0a,_0x4b9b29);let _0xbd1488=this['escapeHtml'](_0x3fba0a);return _0xbd1488=_0xbd1488['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0xbd1488=_0xbd1488['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0xbd1488=_0xbd1488['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0xbd1488=_0xbd1488['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0xbd1488=_0xbd1488['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0xbd1488=_0xbd1488['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0xbd1488=_0xbd1488['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0xbd1488=_0xbd1488['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0xbd1488=_0xbd1488['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0xbd1488=_0xbd1488['replace'](/\n\n/g,'</p><p>'),_0xbd1488=_0xbd1488['replace'](/\n/g,'<br>'),'<p>'+_0xbd1488+'</p>';}};export class CustomSelect{constructor(_0x28aabb,_0xff32cd={}){this['nativeSelect']=_0x28aabb,this['options']=_0xff32cd,this['isOpen']=![],this['selectedValue']=_0x28aabb['value']||'',this['searchable']=_0xff32cd['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1c5050=document['createElement']('div');_0x1c5050['className']='custom-select';const _0x47bbdf=document['createElement']('div');_0x47bbdf['className']='custom-select-trigger',_0x47bbdf['setAttribute']('tabindex','0'),_0x47bbdf['setAttribute']('role','button'),_0x47bbdf['setAttribute']('aria-haspopup','listbox');const _0x5626ab=document['createElement']('span');_0x5626ab['className']='custom-select-trigger-text';const _0x4fc8cf=document['createElement']('span');_0x4fc8cf['className']='custom-select-arrow',_0x4fc8cf['textContent']='▼',_0x47bbdf['appendChild'](_0x5626ab),_0x47bbdf['appendChild'](_0x4fc8cf);const _0x449dc5=document['createElement']('div');_0x449dc5['className']='custom-select-dropdown',_0x449dc5['setAttribute']('role','listbox');if(this['searchable']){const _0xb4cbf7=document['createElement']('div');_0xb4cbf7['className']='custom-select-search';const _0x52719c=document['createElement']('input');_0x52719c['type']='text',_0x52719c['className']='custom-select-search-input',_0x52719c['placeholder']='Type\x20to\x20search...',_0x52719c['setAttribute']('aria-label','Search\x20options'),_0x52719c['addEventListener']('input',_0x2648e4=>{this['searchQuery']=_0x2648e4['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x52719c['addEventListener']('keydown',_0x3e729a=>{if(_0x3e729a['key']==='Escape')_0x3e729a['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3e729a['key']==='Enter'){_0x3e729a['preventDefault'](),_0x3e729a['stopPropagation']();const _0x47c1d1=_0x449dc5['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x47c1d1){const _0xf92499=_0x47c1d1['getAttribute']('data-value');this['select'](_0xf92499);}}}}),_0xb4cbf7['appendChild'](_0x52719c),_0x449dc5['appendChild'](_0xb4cbf7),this['searchInput']=_0x52719c;}const _0x1d347a=document['createElement']('div');_0x1d347a['className']='custom-select-options',_0x449dc5['appendChild'](_0x1d347a),_0x1c5050['appendChild'](_0x47bbdf),_0x1c5050['appendChild'](_0x449dc5),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1c5050,this['nativeSelect']),this['wrapper']=_0x1c5050,this['trigger']=_0x47bbdf,this['triggerText']=_0x5626ab,this['dropdown']=_0x449dc5,this['optionsContainer']=_0x1d347a,_0x47bbdf['addEventListener']('click',()=>this['toggle']()),_0x47bbdf['addEventListener']('keydown',_0x3842a4=>this['handleKeydown'](_0x3842a4)),document['addEventListener']('click',_0x380937=>{!_0x1c5050['contains'](_0x380937['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x18afdc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x18afdc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2965cb=new MutationObserver(()=>{this['updateDisabledState']();});_0x2965cb['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x42ae30=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x42ae30['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0xd71706=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0xd71706),this['trigger']['setAttribute']('aria-disabled',_0xd71706?'true':'false'),this['trigger']['setAttribute']('tabindex',_0xd71706?'-1':'0'),_0xd71706&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x577faa=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4c4eef=_0x577faa['filter'](_0x262d19=>!_0x262d19['disabled']&&!_0x262d19['hidden']);_0x577faa['forEach']((_0x5cfaab,_0x4a61e8)=>{const _0x22df6b=document['createElement']('div');_0x22df6b['className']='custom-select-option',_0x22df6b['textContent']=_0x5cfaab['textContent'],_0x22df6b['setAttribute']('data-value',_0x5cfaab['value']),_0x22df6b['setAttribute']('data-index',_0x4a61e8),_0x22df6b['setAttribute']('role','option'),_0x5cfaab['disabled']?_0x22df6b['classList']['add']('disabled'):_0x22df6b['addEventListener']('click',()=>this['select'](_0x5cfaab['value'])),_0x5cfaab['value']===this['selectedValue']&&_0x22df6b['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x22df6b),this['allOptions']['push']({'element':_0x22df6b,'text':_0x5cfaab['textContent']['toLowerCase'](),'value':_0x5cfaab['value'],'disabled':_0x5cfaab['disabled']});});if(this['searchable']&&this['searchInput']){const _0xe24938=this['searchInput']['parentElement'];_0x4c4eef['length']>0x3?_0xe24938['style']['display']='':_0xe24938['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4b0783=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x1d2f59=>{if(!_0x4b0783||_0x1d2f59['disabled'])_0x1d2f59['element']['style']['display']='';else{const _0x243d26=_0x1d2f59['text']['includes'](_0x4b0783);_0x1d2f59['element']['style']['display']=_0x243d26?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x275fa0){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x275fa0,this['nativeSelect']['value']=_0x275fa0;const _0x42b496=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x42b496),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x31876c=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x31876c&&(this['triggerText']['textContent']=_0x31876c['textContent'],_0x31876c['disabled']||_0x31876c['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2449f7=>{_0x2449f7['getAttribute']('data-value')===this['selectedValue']?_0x2449f7['classList']['add']('selected'):_0x2449f7['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 _0x1908f3=window['getComputedStyle'](this['dropdown']);if(_0x1908f3['position']==='fixed'){const _0xe89b9e=this['trigger']['getBoundingClientRect'](),_0x2d9913=parseInt(_0x1908f3['maxHeight'])||0xc8,_0x25487e=window['innerHeight'],_0x4fafb1=_0x25487e-_0xe89b9e['bottom'],_0x21d78a=_0xe89b9e['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x514019;_0x4fafb1<_0x2d9913&&_0x21d78a>_0x4fafb1?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x25487e-_0xe89b9e['top']+'px',_0x514019=Math['min'](_0x2d9913,_0x21d78a-0xa),this['dropdown']['style']['maxHeight']=_0x514019+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xe89b9e['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x514019=Math['min'](_0x2d9913,_0x4fafb1-0xa),this['dropdown']['style']['maxHeight']=_0x514019+'px');if(this['optionsContainer']){let _0x2125a0=_0x514019;if(this['searchInput']){const _0x37cded=this['searchInput']['parentElement'];_0x37cded&&(_0x2125a0-=_0x37cded['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x2125a0)+'px';}this['dropdown']['style']['left']=_0xe89b9e['left']+'px',this['dropdown']['style']['width']=_0xe89b9e['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x2e4e2e=this['searchInput']['parentElement'];_0x2e4e2e&&_0x2e4e2e['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'](_0x487032){if(this['nativeSelect']['disabled'])return;if(_0x487032['key']==='Enter'||_0x487032['key']==='\x20')_0x487032['preventDefault'](),this['toggle']();else _0x487032['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xf3718a='\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>&times;</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',_0xf3718a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x91f5e8=document['getElementById']('confirm-dialog-close'),_0x200930=document['getElementById']('confirm-dialog-cancel'),_0x506bdc=document['getElementById']('confirm-dialog-confirm'),_0xb44cda=this['_modal']['querySelector']('.modal-overlay');_0x91f5e8['addEventListener']('click',()=>this['_resolve'](![])),_0x200930['addEventListener']('click',()=>this['_resolve'](![])),_0x506bdc['addEventListener']('click',()=>this['_resolve'](!![])),_0xb44cda['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x52987c=>{if(_0x52987c['key']==='Escape')_0x52987c['preventDefault'](),this['_resolve'](![]);else _0x52987c['key']==='Enter'&&(_0x52987c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x368192,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1729f9=>{this['_resolvePromise']=_0x1729f9,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x368192;const _0x4b9e56=document['getElementById']('confirm-dialog-cancel'),_0x4625ce=document['getElementById']('confirm-dialog-confirm');_0x4b9e56['textContent']=cancelText,_0x4625ce['textContent']=confirmText,_0x4625ce['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x4625ce['focus']();});},'_resolve'(_0x4ae332){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4ae332),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x28e67a,_0x5e0648={}){this['container']=_0x28e67a,this['options']={'placeholder':_0x5e0648['placeholder']||'Type\x20to\x20search...','maxItems':_0x5e0648['maxItems']||0x64,'loadItems':_0x5e0648['loadItems']||(async()=>[]),'renderItem':_0x5e0648['renderItem']||(_0x45a881=>({'primary':String(_0x45a881),'secondary':''})),'onSelect':_0x5e0648['onSelect']||(()=>{}),'filterItems':_0x5e0648['filterItems']||null,'getItemValue':_0x5e0648['getItemValue']||(_0x61abdc=>_0x61abdc),'sortItems':_0x5e0648['sortItems']||null,'debounceMs':_0x5e0648['debounceMs']||0xc8,'minCharsForSearch':_0x5e0648['minCharsForSearch']||0x0,'emptyMessage':_0x5e0648['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5e0648['loadingMessage']||'Loading...','preload':_0x5e0648['preload']!==![],'searchMode':_0x5e0648['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']='&times;',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',_0x35e644=>this['onBlur'](_0x35e644)),this['input']['addEventListener']('input',_0x2235c3=>this['onInput'](_0x2235c3)),this['input']['addEventListener']('keydown',_0x365aeb=>this['onKeydown'](_0x365aeb)),this['clearBtn']['addEventListener']('mousedown',_0x2bbc92=>{_0x2bbc92['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x10398d=>{_0x10398d['preventDefault']();}),document['addEventListener']('click',_0x135f53=>{!this['wrapper']['contains'](_0x135f53['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(_0x165086){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x165086);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x37c156){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x38ade1){const _0x592a50=_0x38ade1['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x592a50);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x592a50):this['loadAndShow'](_0x592a50);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x46478f){switch(_0x46478f['key']){case'ArrowDown':_0x46478f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x46478f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x46478f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x46478f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x203e3c){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x8f13d7=this['selectedIndex']+_0x203e3c;if(_0x8f13d7>=0x0&&_0x8f13d7<this['filteredItems']['length']){this['selectedIndex']=_0x8f13d7,this['updateSelectionHighlight']();const _0x5b7031=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5b7031[this['selectedIndex']]&&_0x5b7031[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1c93f6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1c93f6['forEach']((_0x5e7d6f,_0x5d5c62)=>{_0x5e7d6f['classList']['toggle']('keyboard-selected',_0x5d5c62===this['selectedIndex']);});}async['loadAndShow'](_0x5ad63f){this['showLoading']();try{const _0x287f2c=await this['options']['loadItems'](_0x5ad63f);if(this['options']['searchMode']==='server'){let _0xd38f32=_0x287f2c;this['options']['sortItems']&&(_0xd38f32=this['options']['sortItems']([..._0x287f2c]));this['filteredItems']=_0xd38f32;const _0x405ae7=this['filteredItems']['length']>=this['options']['maxItems'];_0x405ae7&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x405ae7),this['open']();}else this['allItems']=_0x287f2c,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5ad63f);}catch(_0x507a38){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x507a38),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x2df3d4){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x2df3d4):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x50eade=this['filteredItems']['length']>=this['options']['maxItems'];_0x50eade&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x50eade),this['open']();}['renderItems'](_0x46d50a){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']((_0x2edd4c,_0x3b88e1)=>{const _0x416347=document['createElement']('div');_0x416347['className']='autocomplete-select-item',_0x416347['setAttribute']('role','option'),_0x416347['setAttribute']('data-index',_0x3b88e1);const _0x409752=this['options']['renderItem'](_0x2edd4c);let _0x43c88a='';_0x409752['icon']&&(_0x43c88a='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x409752['iconClass']||'')+'\x22>'+_0x409752['icon']+'</span>'),_0x416347['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x43c88a+'\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'](_0x409752['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x409752['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x409752['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x416347['addEventListener']('click',()=>{this['selectItem'](_0x2edd4c);}),_0x416347['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3b88e1,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x416347);}),_0x46d50a?(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'](_0x21f0d4){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x21f0d4)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2f4719){this['selectedItem']=_0x2f4719;const _0x2acc51=this['options']['renderItem'](_0x2f4719);this['input']['value']=_0x2acc51['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2f4719);}['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'](_0x509e98){if(_0x509e98){this['selectedItem']=_0x509e98;const _0x170560=this['options']['renderItem'](_0x509e98);this['input']['value']=_0x170560['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x594be3){this['allItems']=_0x594be3,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'](_0x4feec3){this['input']['placeholder']=_0x4feec3;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x391425=null){const _0x3145f5=document['getElementById']('admin-menu-container'),_0x3c1ba9=document['getElementById']('admin-menu-btn'),_0x7f005e=document['getElementById']('admin-menu');if(!_0x3145f5||!_0x3c1ba9||!_0x7f005e)return;try{!_0x391425&&(_0x391425=await API['getCurrentUser']());if(_0x391425){const _0x3c3602=_0x391425['hasAllPermissions']||_0x391425['hasEnvironmentsManage']||_0x391425['canCreateUsers']||_0x391425['canManageTeams']||_0x391425['hasEnvironmentBindings'];if(!_0x3c3602)return;_0x3145f5['hidden']=![];if(!_0x391425['hasAllPermissions']){const _0x5a6c0e=_0x7f005e['querySelectorAll']('.admin-menu-item');_0x5a6c0e['forEach'](_0x28be72=>{const _0x336cf2=_0x28be72['querySelector']('.option-text')?.['textContent']?.['trim']();_0x336cf2==='Users'&&!_0x391425['canCreateUsers']&&(_0x28be72['hidden']=!![]),_0x336cf2==='Skills'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Server\x20Settings'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Server\x20Health'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Git\x20History'&&(_0x28be72['hidden']=!![]);});}_0x3c1ba9['addEventListener']('click',_0x5cb53c=>{_0x5cb53c['stopPropagation']();const _0x294f26=document['getElementById']('actions-menu');if(_0x294f26)_0x294f26['hidden']=!![];_0x7f005e['hidden']=!_0x7f005e['hidden'];}),document['addEventListener']('click',_0x27d667=>{!_0x7f005e['hidden']&&!_0x3c1ba9['contains'](_0x27d667['target'])&&!_0x7f005e['contains'](_0x27d667['target'])&&(_0x7f005e['hidden']=!![]);}),document['addEventListener']('keydown',_0x4b2867=>{_0x4b2867['key']==='Escape'&&!_0x7f005e['hidden']&&(_0x7f005e['hidden']=!![]);});const _0x333b24=document['getElementById']('server-health-btn');_0x333b24&&_0x333b24['addEventListener']('click',async()=>{_0x7f005e['hidden']=!![];const {openServerHealthModal:_0x542af9}=await import('./server-health.js');_0x542af9();});}}catch(_0x430960){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x430960['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};