@profoundlogic/coderflow-server 0.5.4 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 _0x580988=window['location']['pathname'],_0x2582ba=_0x580988['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x2582ba)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x2582ba[0x1]),_0x2582ba[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x5cd922={}){const _0xeb270=new URLSearchParams();_0x5cd922['userId']&&_0xeb270['set']('userId',String(_0x5cd922['userId']));_0x5cd922['automation']&&_0xeb270['set']('automation',String(_0x5cd922['automation']));const _0x4852a2=API_BASE+'/tasks/stats'+(_0xeb270['toString']()?'?'+_0xeb270['toString']():''),_0x42472b=await fetch(_0x4852a2);if(!_0x42472b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x42472b['statusText']);return await _0x42472b['json']();},async 'getTasks'(_0x2562bf={}){const _0x132ebb=new URLSearchParams();_0x2562bf['status']&&_0x132ebb['set']('status',String(_0x2562bf['status']));_0x2562bf['environment']&&_0x132ebb['set']('environment',String(_0x2562bf['environment']));_0x2562bf['automation']&&_0x132ebb['set']('automation',String(_0x2562bf['automation']));if(_0x2562bf['include']){const _0x31ba88=Array['isArray'](_0x2562bf['include'])?_0x2562bf['include']['join'](','):String(_0x2562bf['include']);_0x31ba88&&_0x132ebb['set']('include',_0x31ba88);}_0x2562bf['filter']&&_0x132ebb['set']('filter',String(_0x2562bf['filter']));_0x2562bf['page']&&_0x132ebb['set']('page',String(_0x2562bf['page']));_0x2562bf['limit']&&_0x132ebb['set']('limit',String(_0x2562bf['limit']));_0x2562bf['userId']&&_0x132ebb['set']('userId',String(_0x2562bf['userId']));_0x2562bf['search']&&_0x132ebb['set']('search',String(_0x2562bf['search']));_0x2562bf['includeChildTasks']&&_0x132ebb['set']('includeChildTasks','true');const _0x39ba67=API_BASE+'/tasks'+(_0x132ebb['toString']()?'?'+_0x132ebb['toString']():''),_0xd2c242=await fetch(_0x39ba67);if(!_0xd2c242['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xd2c242['statusText']);return await _0xd2c242['json']();},async 'getAutomations'(_0x1e5e4d={}){const _0x2f9637=new URLSearchParams();_0x1e5e4d['environment']&&_0x2f9637['set']('environment',String(_0x1e5e4d['environment']));const _0x54a561=await fetch(API_BASE+'/api/automations'+(_0x2f9637['toString']()?'?'+_0x2f9637['toString']():''));if(!_0x54a561['ok']){const _0x908d3=await _0x54a561['json']()['catch'](()=>({}));throw new Error(_0x908d3['message']||_0x908d3['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x54a561['statusText']);}return await _0x54a561['json']();},async 'getAutomation'(_0x48664a){const _0x42e623=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x48664a));if(!_0x42e623['ok']){const _0x4806c3=await _0x42e623['json']()['catch'](()=>({}));throw new Error(_0x4806c3['message']||_0x4806c3['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x42e623['statusText']);}return await _0x42e623['json']();},async 'createAutomation'(_0x5e1c36){const _0xd88e6e=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e1c36||{})});if(!_0xd88e6e['ok']){const _0x51ce5d=await _0xd88e6e['json']()['catch'](()=>({}));throw new Error(_0x51ce5d['message']||_0x51ce5d['error']||'Failed\x20to\x20create\x20automation:\x20'+_0xd88e6e['statusText']);}return await _0xd88e6e['json']();},async 'updateAutomation'(_0x456ab3,_0x10c3a3){const _0x12641b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x456ab3),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10c3a3||{})});if(!_0x12641b['ok']){const _0x7a31f8=await _0x12641b['json']()['catch'](()=>({}));throw new Error(_0x7a31f8['message']||_0x7a31f8['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x12641b['statusText']);}return await _0x12641b['json']();},async 'deleteAutomation'(_0x467ab8){const _0x266113=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x467ab8),{'method':'DELETE'});if(!_0x266113['ok']){const _0xc01345=await _0x266113['json']()['catch'](()=>({}));throw new Error(_0xc01345['message']||_0xc01345['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x266113['statusText']);}return await _0x266113['json']();},async 'triggerAutomation'(_0x336061){const _0x204bb8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x336061)+'/trigger',{'method':'POST'});if(!_0x204bb8['ok']){const _0x46e9a6=await _0x204bb8['json']()['catch'](()=>({}));throw new Error(_0x46e9a6['message']||_0x46e9a6['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x204bb8['statusText']);}return await _0x204bb8['json']();},async 'setAutomationEnabled'(_0x311be0,_0xbd1c72){const _0x8e15c9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x311be0)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xbd1c72})});if(!_0x8e15c9['ok']){const _0x109b34=await _0x8e15c9['json']()['catch'](()=>({}));throw new Error(_0x109b34['message']||_0x109b34['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x8e15c9['statusText']);}return await _0x8e15c9['json']();},async 'getAutomationHistory'(_0x5c615b,_0x32a61f=0x32){const _0x59e492=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c615b)+'/history?limit='+encodeURIComponent(String(_0x32a61f)));if(!_0x59e492['ok']){const _0x54eb4b=await _0x59e492['json']()['catch'](()=>({}));throw new Error(_0x54eb4b['message']||_0x54eb4b['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x59e492['statusText']);}return await _0x59e492['json']();},async 'getTask'(_0x150d2a,_0x2619b3={}){const _0x39a355=new URLSearchParams();if(_0x2619b3['include']){const _0x454fa1=Array['isArray'](_0x2619b3['include'])?_0x2619b3['include']['join'](','):String(_0x2619b3['include']);if(_0x454fa1)_0x39a355['set']('include',_0x454fa1);}const _0xec17a7=await fetch(API_BASE+'/tasks/'+_0x150d2a+(_0x39a355['toString']()?'?'+_0x39a355['toString']():''));if(!_0xec17a7['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xec17a7['statusText']);return await _0xec17a7['json']();},async 'getTaskResults'(_0x56afc8){const _0x473aca=await fetch(API_BASE+'/tasks/'+_0x56afc8+'/results');if(!_0x473aca['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x473aca['statusText']);return await _0x473aca['json']();},async 'getTaskPatches'(_0x3c14bc){const _0x296e5b=await fetch(API_BASE+'/tasks/'+_0x3c14bc+'/patches');if(!_0x296e5b['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x296e5b['statusText']);return await _0x296e5b['json']();},async 'getTaskAttachments'(_0x2afb06){const _0x2bb50d=await fetch(API_BASE+'/tasks/'+_0x2afb06+'/attachments');if(!_0x2bb50d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x2bb50d['statusText']);return await _0x2bb50d['json']();},async 'uploadAttachments'(_0xbcaa1b,_0x1c490a){const _0x125535=new FormData();for(const _0x29e983 of _0x1c490a){_0x125535['append']('attachments',_0x29e983);}const _0x3ec7fb=await fetch(API_BASE+'/tasks/'+_0xbcaa1b+'/attachments',{'method':'POST','body':_0x125535});if(!_0x3ec7fb['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3ec7fb['statusText']);return await _0x3ec7fb['json']();},async 'isAINameGenerationAvailable'(){try{const _0x1e2f9a=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x1e2f9a['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x1e2f9a['json']();}catch(_0x30da53){return{'available':![],'reason':_0x30da53['message']};}},async 'generateTaskName'(_0x13618e){try{const _0x37c94b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x13618e})});return await _0x37c94b['json']();}catch(_0x4df798){return{'success':![],'error':_0x4df798['message']};}},async 'createTask'(_0x1d5315){let _0x562b0a,_0xb02f1e={};if(_0x1d5315['files']&&_0x1d5315['files']['length']>0x0){const _0x4446e8=new FormData();for(const [_0x137001,_0x4d0a85]of Object['entries'](_0x1d5315)){if(_0x137001!=='files'){if(_0x4d0a85==null)continue;typeof _0x4d0a85==='object'?_0x4446e8['append'](_0x137001,JSON['stringify'](_0x4d0a85)):_0x4446e8['append'](_0x137001,String(_0x4d0a85));}}for(const _0x1a490f of _0x1d5315['files']){_0x4446e8['append']('attachments',_0x1a490f);}_0x562b0a=_0x4446e8;}else _0xb02f1e['Content-Type']='application/json',_0x562b0a=JSON['stringify'](_0x1d5315);const _0x59ec7a=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0xb02f1e,'body':_0x562b0a});if(!_0x59ec7a['ok']){const _0x296926=await _0x59ec7a['json'](),_0x1154fb=new Error(_0x296926['error']||'Failed\x20to\x20create\x20task:\x20'+_0x59ec7a['statusText']),{message:_0x4b47eb,..._0x3d5679}=_0x296926;Object['assign'](_0x1154fb,_0x3d5679);throw _0x1154fb;}return await _0x59ec7a['json']();},async 'createTestTask'(_0x1439fe){const _0x560e85=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1439fe)});if(!_0x560e85['ok']){const _0x322276=await _0x560e85['json']();throw new Error(_0x322276['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x560e85['statusText']);}return await _0x560e85['json']();},async 'createEphemeralTest'(_0x3705ae){const _0x5d0070=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3705ae)});if(!_0x5d0070['ok']){const _0x17ed79=await _0x5d0070['json']();throw new Error(_0x17ed79['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5d0070['statusText']);}return await _0x5d0070['json']();},async 'createDeployTask'(_0x38c04c){const _0x202fbc=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38c04c)});if(!_0x202fbc['ok']){const _0xd5f926=await _0x202fbc['json']();throw new Error(_0xd5f926['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x202fbc['statusText']);}return await _0x202fbc['json']();},async 'getEnvironments'(){const _0x4ca6ca=await fetch(API_BASE+'/environments');if(!_0x4ca6ca['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4ca6ca['statusText']);return await _0x4ca6ca['json']();},async 'getEnvironment'(_0x57c74c){const _0x3d8634=await fetch(API_BASE+'/environments/'+_0x57c74c);if(!_0x3d8634['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x3d8634['statusText']);return await _0x3d8634['json']();},async 'getEnvironmentRepoHistory'(_0x39231d,_0x1c1e77,_0x3af9a2={}){if(!_0x39231d||!_0x1c1e77)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x663fa7=new URLSearchParams();if(_0x3af9a2['limit'])_0x663fa7['set']('limit',String(_0x3af9a2['limit']));if(_0x3af9a2['offset'])_0x663fa7['set']('offset',String(_0x3af9a2['offset']));if(_0x3af9a2['search'])_0x663fa7['set']('search',String(_0x3af9a2['search']));if(_0x3af9a2['branch'])_0x663fa7['set']('branch',String(_0x3af9a2['branch']));const _0x128f92=API_BASE+'/environments/'+encodeURIComponent(_0x39231d)+'/repos/'+encodeURIComponent(_0x1c1e77)+'/git/history',_0x5a24bb=await fetch(''+_0x128f92+(_0x663fa7['toString']()?'?'+_0x663fa7['toString']():''));if(!_0x5a24bb['ok']){const _0x56e7ff=await _0x5a24bb['json']()['catch'](()=>({}));throw new Error(_0x56e7ff['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5a24bb['statusText']);}return await _0x5a24bb['json']();},async 'getEnvironmentRepoCommit'(_0x44b641,_0x3e35ff,_0x1855aa){if(!_0x44b641||!_0x3e35ff||!_0x1855aa)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xcfe2af=API_BASE+'/environments/'+encodeURIComponent(_0x44b641)+'/repos/'+encodeURIComponent(_0x3e35ff)+'/git/commits/'+encodeURIComponent(_0x1855aa),_0x2d86a1=await fetch(_0xcfe2af);if(!_0x2d86a1['ok']){const _0x4e2929=await _0x2d86a1['json']()['catch'](()=>({}));throw new Error(_0x4e2929['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2d86a1['statusText']);}return await _0x2d86a1['json']();},async 'getEnvironmentRepoBranches'(_0x25a071,_0x3c3739){if(!_0x25a071||!_0x3c3739)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3ca37f=API_BASE+'/environments/'+encodeURIComponent(_0x25a071)+'/repos/'+encodeURIComponent(_0x3c3739)+'/git/branches',_0x121bc3=await fetch(_0x3ca37f);if(!_0x121bc3['ok']){const _0x28a650=await _0x121bc3['json']()['catch'](()=>({}));throw new Error(_0x28a650['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x121bc3['statusText']);}return await _0x121bc3['json']();},async 'revertEnvironmentRepoCommit'(_0xadad5,_0x1642fa,_0x21f0cf,_0x1d0288={}){if(!_0xadad5||!_0x1642fa||!_0x21f0cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1bba4b=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0xadad5)+'/repos/'+encodeURIComponent(_0x1642fa)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x21f0cf,..._0x1d0288})});if(!_0x1bba4b['ok']){const _0x148eee=await _0x1bba4b['json']()['catch'](()=>({}));throw new Error(_0x148eee['message']||_0x148eee['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1bba4b['statusText']);}return await _0x1bba4b['json']();},async 'getTemplates'(_0xf57d07={}){const _0x5c9bf1=new URLSearchParams();if(_0xf57d07['include']){const _0x46560d=Array['isArray'](_0xf57d07['include'])?_0xf57d07['include']['join'](','):String(_0xf57d07['include']);if(_0x46560d)_0x5c9bf1['set']('include',_0x46560d);}const _0x33f099=await fetch(API_BASE+'/templates'+(_0x5c9bf1['toString']()?'?'+_0x5c9bf1['toString']():''));if(!_0x33f099['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x33f099['statusText']);return await _0x33f099['json']();},async 'getTemplatesForEnvironment'(_0x3d36d0,_0x123089={}){if(!_0x3d36d0)throw new Error('Environment\x20name\x20is\x20required');const _0x3a6753=new URLSearchParams();if(_0x123089['include']){const _0x397c67=Array['isArray'](_0x123089['include'])?_0x123089['include']['join'](','):String(_0x123089['include']);if(_0x397c67)_0x3a6753['set']('include',_0x397c67);}const _0x5c871a=await fetch(API_BASE+'/templates/'+_0x3d36d0+(_0x3a6753['toString']()?'?'+_0x3a6753['toString']():''));if(!_0x5c871a['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3d36d0+':\x20'+_0x5c871a['statusText']);return await _0x5c871a['json']();},async 'getTemplate'(_0x3a5d30,_0x3e9852,_0x420dda={}){if(!_0x3a5d30||!_0x3e9852)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x15e9cf=new URLSearchParams();if(_0x420dda['include']){const _0x1a4f62=Array['isArray'](_0x420dda['include'])?_0x420dda['include']['join'](','):String(_0x420dda['include']);if(_0x1a4f62)_0x15e9cf['set']('include',_0x1a4f62);}const _0x5837ea=await fetch(API_BASE+'/templates/'+_0x3a5d30+'/'+_0x3e9852+(_0x15e9cf['toString']()?'?'+_0x15e9cf['toString']():''));if(!_0x5837ea['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x5837ea['statusText']);return await _0x5837ea['json']();},async 'getTaskLogs'(_0x4f016b,_0x25d7ef={}){if(!_0x4f016b)throw new Error('Task\x20ID\x20is\x20required');const _0x3b6775=new URLSearchParams();_0x25d7ef['tail']&&_0x3b6775['set']('tail',String(_0x25d7ef['tail']));const _0x495a87=await fetch(API_BASE+'/tasks/'+_0x4f016b+'/logs'+(_0x3b6775['toString']()?'?'+_0x3b6775['toString']():''));if(!_0x495a87['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x495a87['statusText']);return await _0x495a87['text']();},async 'getContainers'(){const _0x138d9b=await fetch(API_BASE+'/containers');if(!_0x138d9b['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x138d9b['statusText']);return await _0x138d9b['json']();},async 'getContainer'(_0x210627){const _0x5a63f8=await fetch(API_BASE+'/containers/'+_0x210627);if(!_0x5a63f8['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5a63f8['statusText']);return await _0x5a63f8['json']();},async 'startInteractiveContainer'(_0x2a380e){const _0x343f6c=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2a380e)});if(!_0x343f6c['ok']){const _0x206e04=await _0x343f6c['json']()['catch'](()=>({}));throw new Error(_0x206e04['message']||'Failed\x20to\x20start\x20container:\x20'+_0x343f6c['statusText']);}return await _0x343f6c['json']();},async 'stopContainer'(_0x305279){const _0x186c17=await fetch(API_BASE+'/containers/'+_0x305279,{'method':'DELETE'});if(!_0x186c17['ok']){const _0x2742f4=await _0x186c17['json']()['catch'](()=>({}));throw new Error(_0x2742f4['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x186c17['statusText']);}return await _0x186c17['json']();},async 'stopTask'(_0x22f05c){if(!_0x22f05c)throw new Error('Task\x20ID\x20is\x20required');const _0x26c080=await fetch(API_BASE+'/tasks/'+_0x22f05c+'/stop',{'method':'POST'});if(!_0x26c080['ok']){const _0x5e3b8d=await _0x26c080['json']()['catch'](()=>({}));throw new Error(_0x5e3b8d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x26c080['statusText']);}return await _0x26c080['json']();},async 'interruptTask'(_0x405d80){if(!_0x405d80)throw new Error('Task\x20ID\x20is\x20required');const _0xe27a5c=await fetch(API_BASE+'/tasks/'+_0x405d80+'/interrupt',{'method':'POST'});if(!_0xe27a5c['ok']){const _0x2f4920=await _0xe27a5c['json']()['catch'](()=>({}));throw new Error(_0x2f4920['error']||_0x2f4920['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0xe27a5c['statusText']);}return await _0xe27a5c['json']();},async 'startTask'(_0x4699c8){if(!_0x4699c8)throw new Error('Task\x20ID\x20is\x20required');const _0x4ed432=await fetch(API_BASE+'/tasks/'+_0x4699c8+'/start',{'method':'POST'});if(!_0x4ed432['ok']){const _0x57f229=await _0x4ed432['json']()['catch'](()=>({}));throw new Error(_0x57f229['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4ed432['statusText']);}return await _0x4ed432['json']();},async 'deleteTask'(_0x18ab57){if(!_0x18ab57)throw new Error('Task\x20ID\x20is\x20required');const _0x1225de=await fetch(API_BASE+'/tasks/'+_0x18ab57,{'method':'DELETE'});if(!_0x1225de['ok']){const _0xae8753=await _0x1225de['json']()['catch'](()=>({}));throw new Error(_0xae8753['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x1225de['statusText']);}return await _0x1225de['json']();},async 'refreshTasksFromDisk'(){const _0x1f5e30=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1f5e30['ok']){const _0x375ccc=await _0x1f5e30['json']()['catch'](()=>({}));throw new Error(_0x375ccc['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1f5e30['statusText']);}return await _0x1f5e30['json']();},async 'approveTask'(_0x5721b1,_0x5d8ce8={}){if(!_0x5721b1)throw new Error('Task\x20ID\x20is\x20required');const _0x361c45={'commit_message':_0x5d8ce8['commit_message']||'','pull':_0x5d8ce8['pull']??![],'push':_0x5d8ce8['push']??![]};_0x5d8ce8['new_branch']&&(_0x361c45['new_branch']=_0x5d8ce8['new_branch']);const _0x3f52b8=await fetch(API_BASE+'/tasks/'+_0x5721b1+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x361c45)});if(!_0x3f52b8['ok']){const _0x2dfdfb=await _0x3f52b8['json']()['catch'](()=>({}));let _0x525f0b=_0x2dfdfb['error']||_0x2dfdfb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3f52b8['statusText'];if(_0x2dfdfb['results']&&Array['isArray'](_0x2dfdfb['results'])){const _0xdecaac=_0x2dfdfb['results']['filter'](_0x4c6382=>!_0x4c6382['success']&&_0x4c6382['error']);_0xdecaac['length']>0x0&&(_0x525f0b=_0xdecaac[0x0]['error']);}throw new Error(_0x525f0b);}return await _0x3f52b8['json']();},async 'getPullRequestInfo'(_0x2f17c7){if(!_0x2f17c7)throw new Error('Task\x20ID\x20is\x20required');const _0x3d9892=await fetch(API_BASE+'/tasks/'+_0x2f17c7+'/pull-request-info');if(!_0x3d9892['ok']){const _0x4a75c0=await _0x3d9892['json']()['catch'](()=>({}));throw new Error(_0x4a75c0['error']||_0x4a75c0['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3d9892['statusText']);}return await _0x3d9892['json']();},async 'createPullRequests'(_0x3f979d,_0x573317){if(!_0x3f979d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x573317||!Array['isArray'](_0x573317))throw new Error('repos\x20array\x20is\x20required');const _0x4e9962=await fetch(API_BASE+'/tasks/'+_0x3f979d+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x573317})});if(!_0x4e9962['ok']){const _0x4bd8ca=await _0x4e9962['json']()['catch'](()=>({}));let _0x15d1fc=_0x4bd8ca['error']||_0x4bd8ca['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4e9962['statusText'];if(_0x4bd8ca['results']&&Array['isArray'](_0x4bd8ca['results'])){const _0xeb5c8b=_0x4bd8ca['results']['filter'](_0x1b32f3=>!_0x1b32f3['success']&&_0x1b32f3['error']);_0xeb5c8b['length']>0x0&&(_0x15d1fc=_0xeb5c8b[0x0]['error']);}throw new Error(_0x15d1fc);}return await _0x4e9962['json']();},async 'syncRepos'(_0x5903fb){if(!_0x5903fb)throw new Error('Task\x20ID\x20is\x20required');const _0x4d77d5=await fetch(API_BASE+'/tasks/'+_0x5903fb+'/sync-repos',{'method':'POST'});if(!_0x4d77d5['ok']){const _0x121029=await _0x4d77d5['json']()['catch'](()=>({}));throw new Error(_0x121029['error']||_0x121029['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4d77d5['statusText']);}return await _0x4d77d5['json']();},async 'getIbmiSyncInfo'(_0x1a0684){if(!_0x1a0684)throw new Error('Task\x20ID\x20is\x20required');const _0x5200e2=await fetch(API_BASE+'/tasks/'+_0x1a0684+'/ibmi-sync-info');if(!_0x5200e2['ok']){const _0x4413c4=await _0x5200e2['json']()['catch'](()=>({}));throw new Error(_0x4413c4['error']||_0x4413c4['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5200e2['json']();},async 'syncToIbmi'(_0x53f081,_0x10666c){if(!_0x53f081)throw new Error('Task\x20ID\x20is\x20required');const _0xd77bf5=await fetch(API_BASE+'/tasks/'+_0x53f081+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x10666c})});if(!_0xd77bf5['ok']){const _0x1abc4a=await _0xd77bf5['json']()['catch'](()=>({}));throw new Error(_0x1abc4a['error']||_0x1abc4a['message']||'Sync\x20failed');}return await _0xd77bf5['json']();},async 'getIbmiSyncLog'(_0xec5bd5){if(!_0xec5bd5)throw new Error('Task\x20ID\x20is\x20required');const _0x5f17df=await fetch(API_BASE+'/tasks/'+_0xec5bd5+'/ibmi-sync-log');if(!_0x5f17df['ok']){const _0x15f7cb=await _0x5f17df['json']()['catch'](()=>({}));throw new Error(_0x15f7cb['error']||_0x15f7cb['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5f17df['json']();},async 'pullChanges'(_0x3915fa){if(!_0x3915fa)throw new Error('Task\x20ID\x20is\x20required');const _0x5228fa=await fetch(API_BASE+'/tasks/'+_0x3915fa+'/pull-changes',{'method':'POST'});if(!_0x5228fa['ok']){const _0x4621c3=await _0x5228fa['json']()['catch'](()=>({}));throw new Error(_0x4621c3['error']||_0x4621c3['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5228fa['statusText']);}return await _0x5228fa['json']();},async 'readFile'(_0x4965cb,_0x32c5bc){if(!_0x4965cb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x32c5bc)throw new Error('File\x20path\x20is\x20required');const _0x1a0ab2=await fetch(API_BASE+'/tasks/'+_0x4965cb+'/files?path='+encodeURIComponent(_0x32c5bc));if(!_0x1a0ab2['ok']){const _0xe6ffbc=await _0x1a0ab2['json']()['catch'](()=>({}));throw new Error(_0xe6ffbc['error']||_0xe6ffbc['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1a0ab2['statusText']);}return await _0x1a0ab2['json']();},async 'writeFile'(_0x2b294e,_0x545fee,_0xa07389){if(!_0x2b294e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x545fee)throw new Error('File\x20path\x20is\x20required');if(_0xa07389===undefined)throw new Error('Content\x20is\x20required');const _0x2d95bb=await fetch(API_BASE+'/tasks/'+_0x2b294e+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x545fee,'content':_0xa07389})});if(!_0x2d95bb['ok']){const _0x21e895=await _0x2d95bb['json']()['catch'](()=>({}));throw new Error(_0x21e895['error']||_0x21e895['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2d95bb['statusText']);}return await _0x2d95bb['json']();},async 'deleteFile'(_0x277a22,_0x229471){if(!_0x277a22)throw new Error('Task\x20ID\x20is\x20required');if(!_0x229471)throw new Error('File\x20path\x20is\x20required');const _0x3786a3=await fetch(API_BASE+'/tasks/'+_0x277a22+'/files?path='+encodeURIComponent(_0x229471),{'method':'DELETE'});if(!_0x3786a3['ok']){const _0x47e898=await _0x3786a3['json']()['catch'](()=>({}));throw new Error(_0x47e898['error']||_0x47e898['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x3786a3['statusText']);}return await _0x3786a3['json']();},async 'discardFile'(_0x3e4fa9,_0x5c8119,_0x34a69b){if(!_0x3e4fa9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5c8119)throw new Error('File\x20path\x20is\x20required');if(!_0x34a69b)throw new Error('Repository\x20path\x20is\x20required');const _0x481c18=await fetch(API_BASE+'/tasks/'+_0x3e4fa9+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5c8119,'repoPath':_0x34a69b})});if(!_0x481c18['ok']){const _0x25718f=await _0x481c18['json']()['catch'](()=>({}));throw new Error(_0x25718f['error']||_0x25718f['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x481c18['statusText']);}return await _0x481c18['json']();},async 'followUpTask'(_0x1ce75d,_0x580b5f={}){if(!_0x1ce75d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x580b5f['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3ea782,_0x4f0052={};if(_0x580b5f['files']&&_0x580b5f['files']['length']>0x0){const _0x49509=new FormData();_0x49509['append']('instructions',_0x580b5f['instructions']);for(const _0x536e99 of _0x580b5f['files']){_0x49509['append']('attachments',_0x536e99);}_0x3ea782=_0x49509;}else _0x4f0052['Content-Type']='application/json',_0x3ea782=JSON['stringify']({'instructions':_0x580b5f['instructions']});const _0x1917de=await fetch(API_BASE+'/tasks/'+_0x1ce75d+'/follow-up',{'method':'POST','headers':_0x4f0052,'body':_0x3ea782});if(!_0x1917de['ok']){const _0x1c24ed=await _0x1917de['json']()['catch'](()=>({}));throw new Error(_0x1c24ed['error']||_0x1c24ed['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1917de['statusText']);}return await _0x1917de['json']();},async 'getTaskRewindPoints'(_0x2ab5ab){if(!_0x2ab5ab)throw new Error('Task\x20ID\x20is\x20required');const _0x5cb5ec=await fetch(API_BASE+'/tasks/'+_0x2ab5ab+'/rewind-points');if(!_0x5cb5ec['ok']){const _0x50d04d=await _0x5cb5ec['json']()['catch'](()=>({}));throw new Error(_0x50d04d['error']||_0x50d04d['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x5cb5ec['statusText']);}return await _0x5cb5ec['json']();},async 'rewindTask'(_0x3a831b,_0x5828ec={}){if(!_0x3a831b)throw new Error('Task\x20ID\x20is\x20required');const _0x2574a0=Number['isInteger'](_0x5828ec['targetFollowUpCount'])?_0x5828ec['targetFollowUpCount']:0x0,_0x121668={'targetFollowUpCount':_0x2574a0};typeof _0x5828ec['instructions']==='string'&&_0x5828ec['instructions']['trim']()&&(_0x121668['instructions']=_0x5828ec['instructions']['trim']());typeof _0x5828ec['rewindFiles']==='boolean'&&(_0x121668['rewindFiles']=_0x5828ec['rewindFiles']);const _0x5f025c=await fetch(API_BASE+'/tasks/'+_0x3a831b+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x121668)});if(!_0x5f025c['ok']){const _0xa1f3fa=await _0x5f025c['json']()['catch'](()=>({}));throw new Error(_0xa1f3fa['error']||_0xa1f3fa['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x5f025c['statusText']);}return await _0x5f025c['json']();},async 'login'(_0x16eb58,_0x4a4054){const _0x5ca7c5=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x16eb58,'password':_0x4a4054})});if(!_0x5ca7c5['ok']){const _0x4f90ef=await _0x5ca7c5['json']();throw new Error(_0x4f90ef['message']||'Login\x20failed');}return await _0x5ca7c5['json']();},async 'logout'(){const _0x579d68=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x579d68['ok']){const _0x4749ff=await _0x579d68['json']();throw new Error(_0x4749ff['message']||'Logout\x20failed');}return await _0x579d68['json']();},async 'getCurrentUser'(){const _0x434ed4=await fetch(API_BASE+'/auth/me');if(!_0x434ed4['ok'])throw new Error('Not\x20authenticated');const _0x3997e9=await _0x434ed4['json']();return _0x3997e9['user'];},async 'getRolesInfo'(){const _0xbe942e=await fetch(API_BASE+'/users/roles');if(!_0xbe942e['ok']){const _0xccc48e=await _0xbe942e['json']();throw new Error(_0xccc48e['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0xbe942e['json']();},async 'getUsers'(){const _0x132ce0=await fetch(API_BASE+'/users');if(!_0x132ce0['ok']){const _0x546f93=await _0x132ce0['json']();throw new Error(_0x546f93['message']||'Failed\x20to\x20get\x20users');}return await _0x132ce0['json']();},async 'getUser'(_0x3d7080){const _0xb84c01=await fetch(API_BASE+'/users/'+_0x3d7080);if(!_0xb84c01['ok']){const _0xe5ed3f=await _0xb84c01['json']();throw new Error(_0xe5ed3f['message']||'Failed\x20to\x20get\x20user');}return await _0xb84c01['json']();},async 'createUser'(_0x3b96c4){const _0x93383a=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b96c4)});if(!_0x93383a['ok']){const _0x23739f=await _0x93383a['json']();throw new Error(_0x23739f['message']||'Failed\x20to\x20create\x20user');}return await _0x93383a['json']();},async 'updateUser'(_0x30ed95,_0x23c096){const _0x30d6fc=await fetch(API_BASE+'/users/'+_0x30ed95,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23c096)});if(!_0x30d6fc['ok']){const _0x4d676a=await _0x30d6fc['json']();throw new Error(_0x4d676a['message']||'Failed\x20to\x20update\x20user');}return await _0x30d6fc['json']();},async 'deleteUser'(_0xabd125){const _0x54e4ff=await fetch(API_BASE+'/users/'+_0xabd125,{'method':'DELETE'});if(!_0x54e4ff['ok']){const _0x26ed75=await _0x54e4ff['json']();throw new Error(_0x26ed75['message']||'Failed\x20to\x20delete\x20user');}return await _0x54e4ff['json']();},async 'stopAllContainers'(){const _0x3c965f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x36c2b9=await _0x3c965f['json']()['catch'](()=>({}));if(!_0x3c965f['ok'])throw new Error(_0x36c2b9['message']||_0x36c2b9['error']||'Failed\x20to\x20stop\x20containers');return _0x36c2b9;},async 'removeStoppedContainers'(){const _0x3d6a0e=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x52dcaa=await _0x3d6a0e['json']()['catch'](()=>({}));if(!_0x3d6a0e['ok'])throw new Error(_0x52dcaa['message']||_0x52dcaa['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x52dcaa;},async 'pruneDockerResources'(){const _0x3e8af9=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xa6d03=await _0x3e8af9['json']()['catch'](()=>({}));if(!_0x3e8af9['ok'])throw new Error(_0xa6d03['message']||_0xa6d03['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xa6d03;},async 'createPasswordToken'(_0xc8aa2a,_0x258e33='setup',_0x25f69b=![]){const _0x1e72a5=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xc8aa2a,'type':_0x258e33,'sendEmail':_0x25f69b})});if(!_0x1e72a5['ok']){const _0x472551=await _0x1e72a5['json']();throw new Error(_0x472551['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1e72a5['json']();},async 'getEmailConfig'(){const _0x41d254=await fetch(API_BASE+'/password/email-config');if(!_0x41d254['ok']){const _0x3583e8=await _0x41d254['json']();throw new Error(_0x3583e8['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x41d254['json']();},async 'updateTaskName'(_0xc3c0e4,_0x38001e){const _0x5492d2=await fetch(API_BASE+'/tasks/'+_0xc3c0e4,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x38001e})});if(!_0x5492d2['ok']){const _0x84e43=await _0x5492d2['json']();throw new Error(_0x84e43['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5492d2['json']();},async 'pinTask'(_0x2a23a5,_0x488158,_0x22f49d=null){if(!_0x2a23a5)throw new Error('Task\x20ID\x20is\x20required');const _0x486274={'pinned':_0x488158};_0x22f49d&&_0x22f49d['length']>0x0&&(_0x486274['additionalTaskIds']=_0x22f49d);const _0x1d3d90=await fetch(API_BASE+'/tasks/'+_0x2a23a5+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x486274)});if(!_0x1d3d90['ok']){const _0x5dc0d8=await _0x1d3d90['json']();throw new Error(_0x5dc0d8['error']||'Failed\x20to\x20pin\x20task');}return await _0x1d3d90['json']();},async 'setTaskWinner'(_0x2d06bf,_0x1c7141,_0x387213=[]){if(!_0x2d06bf)throw new Error('Task\x20ID\x20is\x20required');const _0x53606c=await fetch(API_BASE+'/tasks/'+_0x2d06bf+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x1c7141,'siblings':_0x387213})});if(!_0x53606c['ok']){const _0xbcb587=await _0x53606c['json']();throw new Error(_0xbcb587['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x53606c['json']();},async 'setTaskLoser'(_0x16e265,_0x4909af){if(!_0x16e265)throw new Error('Task\x20ID\x20is\x20required');const _0x3fe6cf=await fetch(API_BASE+'/tasks/'+_0x16e265+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4909af})});if(!_0x3fe6cf['ok']){const _0x15eece=await _0x3fe6cf['json']();throw new Error(_0x15eece['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3fe6cf['json']();},async 'createTaskGroup'(_0x2e72fd){const _0x40483c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e72fd)});if(!_0x40483c['ok']){const _0x3cf933=await _0x40483c['json']();throw new Error(_0x3cf933['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x40483c['json']();},async 'getTaskGroups'(_0x46e7ab={}){const _0x21829f=new URLSearchParams();if(_0x46e7ab['userId'])_0x21829f['set']('userId',String(_0x46e7ab['userId']));if(_0x46e7ab['status'])_0x21829f['set']('status',String(_0x46e7ab['status']));if(_0x46e7ab['limit'])_0x21829f['set']('limit',String(_0x46e7ab['limit']));const _0xbf4c00=API_BASE+'/tasks/groups'+(_0x21829f['toString']()?'?'+_0x21829f['toString']():''),_0x435f32=await fetch(_0xbf4c00);if(!_0x435f32['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x435f32['json']();},async 'getTaskGroup'(_0x13bed5){const _0x4f8b4b=await fetch(API_BASE+'/tasks/groups/'+_0x13bed5);if(!_0x4f8b4b['ok']){const _0x4963d5=await _0x4f8b4b['json']();throw new Error(_0x4963d5['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4f8b4b['json']();},async 'updateTaskGroup'(_0x2b4752,_0x312419,_0x14551b){const _0x2ec16f=await fetch(API_BASE+'/tasks/'+_0x2b4752+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x312419,'groupIndex':_0x14551b})});if(!_0x2ec16f['ok']){const _0xb1ae6c=await _0x2ec16f['json']();throw new Error(_0xb1ae6c['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2ec16f['json']();},async 'removeTaskFromGroup'(_0x1dfbe4){return this['updateTaskGroup'](_0x1dfbe4,null,null);},async 'deleteTaskGroup'(_0x592260,_0xe5abcf=![]){const _0x39b40e=_0xe5abcf?'?deleteTasks=true':'',_0x2bfaca=await fetch(API_BASE+'/tasks/groups/'+_0x592260+_0x39b40e,{'method':'DELETE'});if(!_0x2bfaca['ok']){const _0x3c08e0=await _0x2bfaca['json']();throw new Error(_0x3c08e0['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x2a0980,_0x129800){const _0x4d1da9=await fetch(API_BASE+'/tasks/groups/'+_0x2a0980+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x129800})});if(!_0x4d1da9['ok']){const _0x30ff5a=await _0x4d1da9['json']();throw new Error(_0x30ff5a['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x4d1da9['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0xabd956){if(!_0xabd956)throw new Error('Task\x20ID\x20is\x20required');const _0x4a50df=await fetch(API_BASE+'/tasks/'+_0xabd956+'/comments');if(!_0x4a50df['ok']){const _0x2a4b0e=await _0x4a50df['json']()['catch'](()=>({}));throw new Error(_0x2a4b0e['error']||'Failed\x20to\x20get\x20comments');}return await _0x4a50df['json']();},async 'addComment'(_0x532c5f,_0x40c276){if(!_0x532c5f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40c276)throw new Error('Comment\x20content\x20is\x20required');const _0x463360=await fetch(API_BASE+'/tasks/'+_0x532c5f+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x40c276})});if(!_0x463360['ok']){const _0x542b71=await _0x463360['json']()['catch'](()=>({}));throw new Error(_0x542b71['error']||'Failed\x20to\x20add\x20comment');}return await _0x463360['json']();},async 'updateComment'(_0x32ed09,_0x45af88,_0x4eda7f){if(!_0x32ed09)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45af88)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4eda7f)throw new Error('Comment\x20content\x20is\x20required');const _0x226bfe=await fetch(API_BASE+'/tasks/'+_0x32ed09+'/comments/'+_0x45af88,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4eda7f})});if(!_0x226bfe['ok']){const _0x23a5e6=await _0x226bfe['json']()['catch'](()=>({}));throw new Error(_0x23a5e6['error']||'Failed\x20to\x20update\x20comment');}return await _0x226bfe['json']();},async 'deleteComment'(_0x2ed8e7,_0x1df9ef){if(!_0x2ed8e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1df9ef)throw new Error('Comment\x20ID\x20is\x20required');const _0x4da8a5=await fetch(API_BASE+'/tasks/'+_0x2ed8e7+'/comments/'+_0x1df9ef,{'method':'DELETE'});if(!_0x4da8a5['ok']){const _0x5dedf6=await _0x4da8a5['json']()['catch'](()=>({}));throw new Error(_0x5dedf6['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4da8a5['json']();},async 'createObjective'(_0x440f1d){const _0x4093e9={'objective':!![],'name':_0x440f1d['name']||'','environment':_0x440f1d['environment']||null,'agents':_0x440f1d['agents']||[],'branches':_0x440f1d['branches']||{},'isPinned':_0x440f1d['isPinned']||![],'parentObjectiveId':_0x440f1d['parentObjectiveId']||null,'env_vars':_0x440f1d['envVars']||{},'parameters':{'instructions':_0x440f1d['instructions']||''},'files':_0x440f1d['files']||[],'jira':_0x440f1d['jira']||null};return this['createTask'](_0x4093e9);},async 'updateObjective'(_0x5409cb,_0x16400c,_0x2455bf=[],_0x3eef1d=[]){let _0x554200,_0x589b19={};const _0x1364e9={..._0x16400c};_0x3eef1d&&_0x3eef1d['length']>0x0&&(_0x1364e9['removeAttachments']=_0x3eef1d);if(_0x2455bf&&_0x2455bf['length']>0x0){const _0xeeab0e=new FormData();for(const [_0x3408a1,_0x44a4d1]of Object['entries'](_0x1364e9)){if(_0x44a4d1==null)continue;typeof _0x44a4d1==='object'?_0xeeab0e['append'](_0x3408a1,JSON['stringify'](_0x44a4d1)):_0xeeab0e['append'](_0x3408a1,String(_0x44a4d1));}for(const _0x37f202 of _0x2455bf){_0xeeab0e['append']('attachments',_0x37f202);}_0x554200=_0xeeab0e;}else _0x589b19['Content-Type']='application/json',_0x554200=JSON['stringify'](_0x1364e9);const _0x1d7f4f=await fetch(API_BASE+'/tasks/'+_0x5409cb,{'method':'PATCH','headers':_0x589b19,'body':_0x554200});if(!_0x1d7f4f['ok']){const _0x388565=await _0x1d7f4f['json']();throw new Error(_0x388565['error']||'Failed\x20to\x20update\x20objective');}return await _0x1d7f4f['json']();},async 'deleteObjective'(_0x5ab45f){return this['deleteTask'](_0x5ab45f);},async 'launchObjective'(_0x137c88,_0x426f08={}){const _0x2705e6=await fetch(API_BASE+'/tasks/'+_0x137c88+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x426f08)});if(!_0x2705e6['ok']){const _0x3d331a=await _0x2705e6['json']();throw new Error(_0x3d331a['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2705e6['json']();},async 'getObjectiveAttachments'(_0x1e8642){return this['getTaskAttachments'](_0x1e8642);},async 'createJudgeTask'({environment:_0x64216f,judgeAgent:_0x487aa8,groupId:_0x59275d,taskIds:_0x1e96d0,judgeCustomInstructions:_0x19a58f,isPinned:_0x5d483}){const _0x3924b5=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x64216f,'judgeAgent':_0x487aa8,'groupId':_0x59275d,'taskIds':_0x1e96d0,'judgeCustomInstructions':_0x19a58f,'isPinned':_0x5d483})});if(!_0x3924b5['ok']){const _0x4bfdc6=await _0x3924b5['json']();throw new Error(_0x4bfdc6['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x3924b5['json']();},async 'getJudgeTasks'(_0x196283){const _0xe208b6=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x196283));if(!_0xe208b6['ok']){const _0xb8324e=await _0xe208b6['json']();throw new Error(_0xb8324e['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xe208b6['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0xbe2f1c,_0x453899,_0x3bf31d=''){const _0x2a8f3c=await fetch(API_BASE+'/tasks/'+_0xbe2f1c+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x453899,'customPreamble':_0x3bf31d})});if(!_0x2a8f3c['ok']){const _0x377361=await _0x2a8f3c['json']();throw new Error(_0x377361['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x2a8f3c['json']();},async 'getJiraConfig'(){const _0x35c53c=await fetch(API_BASE+'/jira/config');if(!_0x35c53c['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x35c53c['json']();},async 'getJiraIssue'(_0x4b4be6){const _0x4fec22=await fetch(API_BASE+'/jira/issues/'+_0x4b4be6);if(!_0x4fec22['ok']){const _0x11f0b8=await _0x4fec22['json']()['catch'](()=>({}));throw new Error(_0x11f0b8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4fec22['statusText']);}return await _0x4fec22['json']();},async 'searchJiraIssues'(_0x2467f1,_0x2e0b6d=0x14){const _0x3808fe=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2467f1,'maxResults':_0x2e0b6d})});if(!_0x3808fe['ok']){const _0x253d82=await _0x3808fe['json']()['catch'](()=>({}));throw new Error(_0x253d82['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x3808fe['statusText']);}return await _0x3808fe['json']();},async 'postJiraComment'(_0x2dd47a,_0x203b95){const _0x4ff2e4=await fetch(API_BASE+'/jira/issues/'+_0x2dd47a+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x203b95})});if(!_0x4ff2e4['ok']){const _0x175819=await _0x4ff2e4['json']()['catch'](()=>({}));throw new Error(_0x175819['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4ff2e4['statusText']);}return await _0x4ff2e4['json']();},async 'getJiraComments'(_0x312529){const _0x84b448=await fetch(API_BASE+'/jira/issues/'+_0x312529+'/comments');if(!_0x84b448['ok']){const _0x52a5be=await _0x84b448['json']()['catch'](()=>({}));throw new Error(_0x52a5be['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x84b448['statusText']);}return await _0x84b448['json']();},async 'promptParameter'({environment:_0x4c13de,command:_0x4e67f8,parser:parser='json'}){const _0x521cfd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4c13de,'command':_0x4e67f8,'parser':parser})});if(!_0x521cfd['ok']){const _0x4567c6=await _0x521cfd['json']()['catch'](()=>({}));throw new Error(_0x4567c6['message']||_0x4567c6['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x521cfd['statusText']);}return await _0x521cfd['json']();},async 'promptParameterStream'(_0x172c63,_0x1f79e9){const _0x1bb538=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x172c63)});if(!_0x1bb538['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x1bb538['statusText']);const _0x456589=_0x1bb538['body']['getReader'](),_0x1d6b2a=new TextDecoder();let _0x4073a3='';return new Promise((_0x464927,_0x52c700)=>{const _0x4774de=async()=>{try{const {done:_0x8e5a74,value:_0x24b5a7}=await _0x456589['read']();if(_0x8e5a74)return;_0x4073a3+=_0x1d6b2a['decode'](_0x24b5a7,{'stream':!![]});const _0x1d414b=_0x4073a3['split']('\x0a\x0a');_0x4073a3=_0x1d414b['pop']()||'';for(const _0x1040e9 of _0x1d414b){if(!_0x1040e9['trim']())continue;const _0x8b1743=_0x1040e9['split']('\x0a');let _0x552cae='message',_0x299406='';for(const _0x25a21f of _0x8b1743){if(_0x25a21f['startsWith']('event:'))_0x552cae=_0x25a21f['substring'](0x6)['trim']();else _0x25a21f['startsWith']('data:')&&(_0x299406=_0x25a21f['substring'](0x5)['trim']());}if(!_0x299406)continue;try{const _0x2258b8=JSON['parse'](_0x299406);if(_0x552cae==='progress'&&_0x1f79e9)_0x1f79e9(_0x2258b8['stage'],_0x2258b8['message']);else{if(_0x552cae==='result'){_0x464927(_0x2258b8);return;}else{if(_0x552cae==='error'){let _0x352561=_0x2258b8['message']||_0x2258b8['error']||'Prompt\x20command\x20failed';_0x2258b8['rawOutput']&&(_0x352561+='\x0a\x0aRaw\x20output:\x0a'+_0x2258b8['rawOutput']);_0x52c700(new Error(_0x352561));return;}}}}catch(_0x185ccf){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x185ccf),console['error']('Event\x20type:',_0x552cae),console['error']('Event\x20data:',_0x299406),console['error']('First\x20200\x20chars:',_0x299406['substring'](0x0,0xc8)),_0x52c700(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x185ccf['message']+'\x0a\x0aData:\x20'+_0x299406['substring'](0x0,0x1f4)));return;}}_0x4774de();}catch(_0x3f7755){_0x52c700(_0x3f7755);}};_0x4774de();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2d968a){const _0x5aa535=await fetch(''+API_BASE+_0x2d968a);if(!_0x5aa535['ok']){const _0xbde2bd=await _0x5aa535['json']()['catch'](()=>({'error':_0x5aa535['statusText']})),_0x5f082e=new Error(_0xbde2bd['error']||_0xbde2bd['message']||_0x5aa535['statusText']);if(_0xbde2bd['detail']!==undefined)_0x5f082e['detail']=_0xbde2bd['detail'];throw _0x5f082e;}return await _0x5aa535['json']();},async 'post'(_0x401f53,_0x1e9700){const _0x191d90=await fetch(''+API_BASE+_0x401f53,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e9700)});if(!_0x191d90['ok']){const _0x40e240=await _0x191d90['json']()['catch'](()=>({'error':_0x191d90['statusText']})),_0x3ef704=new Error(_0x40e240['error']||_0x40e240['message']||_0x191d90['statusText']);if(_0x40e240['detail']!==undefined)_0x3ef704['detail']=_0x40e240['detail'];throw _0x3ef704;}return await _0x191d90['json']();},async 'put'(_0x4338bf,_0x1004e9){const _0x3cc524=await fetch(''+API_BASE+_0x4338bf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1004e9)});if(!_0x3cc524['ok']){const _0x2270bf=await _0x3cc524['json']()['catch'](()=>({'error':_0x3cc524['statusText']})),_0x12fd92=new Error(_0x2270bf['error']||_0x2270bf['message']||_0x3cc524['statusText']);if(_0x2270bf['detail']!==undefined)_0x12fd92['detail']=_0x2270bf['detail'];throw _0x12fd92;}return await _0x3cc524['json']();},async 'delete'(_0x28b343,_0x1e6c19){const _0x327335={'method':'DELETE'};_0x1e6c19&&(_0x327335['headers']={'Content-Type':'application/json'},_0x327335['body']=JSON['stringify'](_0x1e6c19));const _0x50934d=await fetch(''+API_BASE+_0x28b343,_0x327335);if(!_0x50934d['ok']){const _0x138c21=await _0x50934d['json']()['catch'](()=>({'error':_0x50934d['statusText']})),_0x536007=new Error(_0x138c21['error']||_0x138c21['message']||_0x50934d['statusText']);if(_0x138c21['detail']!==undefined)_0x536007['detail']=_0x138c21['detail'];throw _0x536007;}return await _0x50934d['json']();},async 'getSkills'(){const _0x3e225d=await fetch(API_BASE+'/skills');if(!_0x3e225d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3e225d['statusText']);return await _0x3e225d['json']();},async 'getSkill'(_0x52d5bb){const _0x3dbd82=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52d5bb));if(!_0x3dbd82['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x3dbd82['statusText']);return await _0x3dbd82['json']();},async 'createSkill'(_0x3e30e5){const _0x555148=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e30e5)});if(!_0x555148['ok']){const _0xda6714=await _0x555148['json']()['catch'](()=>({'error':_0x555148['statusText']})),_0x3fa290=new Error(_0xda6714['error']||_0xda6714['message']||_0x555148['statusText']);if(_0xda6714['detail']!==undefined)_0x3fa290['detail']=_0xda6714['detail'];throw _0x3fa290;}return await _0x555148['json']();},async 'updateSkill'(_0x259c59,_0x22cf3a){const _0x1644cb=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x259c59),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22cf3a)});if(!_0x1644cb['ok']){const _0x22da97=await _0x1644cb['json']()['catch'](()=>({'error':_0x1644cb['statusText']})),_0x2a868f=new Error(_0x22da97['error']||_0x22da97['message']||_0x1644cb['statusText']);if(_0x22da97['detail']!==undefined)_0x2a868f['detail']=_0x22da97['detail'];throw _0x2a868f;}return await _0x1644cb['json']();},async 'deleteSkill'(_0x2e5bbe){const _0x4b0036=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2e5bbe),{'method':'DELETE'});if(!_0x4b0036['ok']){const _0x1fd698=await _0x4b0036['json']()['catch'](()=>({'error':_0x4b0036['statusText']})),_0x57e87d=new Error(_0x1fd698['error']||_0x1fd698['message']||_0x4b0036['statusText']);if(_0x1fd698['detail']!==undefined)_0x57e87d['detail']=_0x1fd698['detail'];throw _0x57e87d;}return await _0x4b0036['json']();},async 'getSkillFile'(_0x5f0a82,_0x28afcd){const _0x551cc3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f0a82)+'/files/'+_0x28afcd);if(!_0x551cc3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x551cc3['statusText']);return await _0x551cc3['json']();},async 'saveSkillFile'(_0x51e3b2,_0xd2aa9c,_0x57da26){const _0x182e6f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x51e3b2)+'/files/'+_0xd2aa9c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x57da26})});if(!_0x182e6f['ok']){const _0x44dcc3=await _0x182e6f['json']()['catch'](()=>({'error':_0x182e6f['statusText']})),_0x466a0b=new Error(_0x44dcc3['error']||_0x44dcc3['message']||_0x182e6f['statusText']);if(_0x44dcc3['detail']!==undefined)_0x466a0b['detail']=_0x44dcc3['detail'];throw _0x466a0b;}return await _0x182e6f['json']();},async 'deleteSkillFile'(_0x3f3a74,_0xf15a2a){const _0x51c5c5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f3a74)+'/files/'+_0xf15a2a,{'method':'DELETE'});if(!_0x51c5c5['ok']){const _0x19c631=await _0x51c5c5['json']()['catch'](()=>({'error':_0x51c5c5['statusText']})),_0x1a005c=new Error(_0x19c631['error']||_0x19c631['message']||_0x51c5c5['statusText']);if(_0x19c631['detail']!==undefined)_0x1a005c['detail']=_0x19c631['detail'];throw _0x1a005c;}return await _0x51c5c5['json']();},async 'pullSkills'(){const _0x1657bc=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x1657bc['ok']){const _0x2b8d6c=await _0x1657bc['json']()['catch'](()=>({'error':_0x1657bc['statusText']})),_0x40b937=new Error(_0x2b8d6c['error']||_0x2b8d6c['message']||_0x1657bc['statusText']);if(_0x2b8d6c['detail']!==undefined)_0x40b937['detail']=_0x2b8d6c['detail'];throw _0x40b937;}return await _0x1657bc['json']();},async 'commitSkills'(_0x4e8b5c,_0x50817d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x50817d,_0x2cb18b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x4e8b5c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2cb18b['ok']){const _0x41c9d4=await _0x2cb18b['json']()['catch'](()=>({'error':_0x2cb18b['statusText']})),_0x3eb4d5=new Error(_0x41c9d4['error']||_0x41c9d4['message']||_0x2cb18b['statusText']);if(_0x41c9d4['detail']!==undefined)_0x3eb4d5['detail']=_0x41c9d4['detail'];throw _0x3eb4d5;}return await _0x2cb18b['json']();},async 'discardSkillsChanges'(){const _0x3678fb=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x3678fb['ok']){const _0x1fd337=await _0x3678fb['json']()['catch'](()=>({'error':_0x3678fb['statusText']})),_0x382c39=new Error(_0x1fd337['error']||_0x1fd337['message']||_0x3678fb['statusText']);if(_0x1fd337['detail']!==undefined)_0x382c39['detail']=_0x1fd337['detail'];throw _0x382c39;}return await _0x3678fb['json']();},async 'getSkillCatalog'(){const _0x4c6344=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4c6344['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4c6344['statusText']);return await _0x4c6344['json']();},async 'getImportedSkillsRegistry'(){const _0x4cd184=await fetch(API_BASE+'/external-skills/registry');if(!_0x4cd184['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4cd184['statusText']);return await _0x4cd184['json']();},async 'importCatalogSkill'(_0x3595fb){const _0x90a29a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3595fb})});if(!_0x90a29a['ok']){const _0x15496f=await _0x90a29a['json']()['catch'](()=>({'error':_0x90a29a['statusText']})),_0x48d36b=new Error(_0x15496f['error']||_0x15496f['message']||_0x90a29a['statusText']);if(_0x15496f['detail']!==undefined)_0x48d36b['detail']=_0x15496f['detail'];throw _0x48d36b;}return await _0x90a29a['json']();},async 'importSkillFromGit'(_0x39d34c,_0xbd2f51,_0x4a4a42='main',_0x18e312=null){const _0x3f4b2f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x39d34c,'skillPath':_0xbd2f51,'branch':_0x4a4a42,'skillId':_0x18e312})});if(!_0x3f4b2f['ok']){const _0x4cf885=await _0x3f4b2f['json']()['catch'](()=>({'error':_0x3f4b2f['statusText']})),_0x8c9381=new Error(_0x4cf885['error']||_0x4cf885['message']||_0x3f4b2f['statusText']);if(_0x4cf885['detail']!==undefined)_0x8c9381['detail']=_0x4cf885['detail'];throw _0x8c9381;}return await _0x3f4b2f['json']();},async 'probeMarketplace'(_0x460b16,_0x1b398d='main'){const _0x53218a=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x460b16,'branch':_0x1b398d})});if(!_0x53218a['ok']){const _0x2d3663=await _0x53218a['json']()['catch'](()=>({'error':_0x53218a['statusText']})),_0x3a5720=new Error(_0x2d3663['error']||_0x2d3663['message']||_0x53218a['statusText']);if(_0x2d3663['detail']!==undefined)_0x3a5720['detail']=_0x2d3663['detail'];throw _0x3a5720;}return await _0x53218a['json']();},async 'importMarketplaceBundle'(_0x1ab3cf,_0x23d072,_0x38eeaa,_0x23c3ce=null){const _0x49f3d1=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1ab3cf,'branch':_0x23d072,'bundleId':_0x38eeaa,'selectedSkills':_0x23c3ce})});if(!_0x49f3d1['ok']){const _0x5419a2=await _0x49f3d1['json']()['catch'](()=>({'error':_0x49f3d1['statusText']})),_0x4db367=new Error(_0x5419a2['error']||_0x5419a2['message']||_0x49f3d1['statusText']);if(_0x5419a2['detail']!==undefined)_0x4db367['detail']=_0x5419a2['detail'];throw _0x4db367;}return await _0x49f3d1['json']();},async 'importSkillFromFolder'(_0x42843b,_0x295eb5=null){const _0x57528b=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x42843b,'skillId':_0x295eb5})});if(!_0x57528b['ok']){const _0x36b044=await _0x57528b['json']()['catch'](()=>({'error':_0x57528b['statusText']})),_0x17ee63=new Error(_0x36b044['error']||_0x36b044['message']||_0x57528b['statusText']);if(_0x36b044['detail']!==undefined)_0x17ee63['detail']=_0x36b044['detail'];throw _0x17ee63;}return await _0x57528b['json']();},async 'importSkillFromNpm'(_0x30ffbc,_0x22464a='latest',_0x1b7452=null,_0x46efcc=null){const _0x404fe0=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x30ffbc,'version':_0x22464a,'skillId':_0x1b7452,'registry':_0x46efcc})});if(!_0x404fe0['ok']){const _0x35c6f3=await _0x404fe0['json']()['catch'](()=>({'error':_0x404fe0['statusText']})),_0x20fbc6=new Error(_0x35c6f3['error']||_0x35c6f3['message']||_0x404fe0['statusText']);if(_0x35c6f3['detail']!==undefined)_0x20fbc6['detail']=_0x35c6f3['detail'];throw _0x20fbc6;}return await _0x404fe0['json']();},async 'checkSkillUpdates'(_0x1a7d16){const _0x4553e4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1a7d16)+'/check-updates',{'method':'POST'});if(!_0x4553e4['ok']){const _0xe4dac9=await _0x4553e4['json']()['catch'](()=>({'error':_0x4553e4['statusText']})),_0x581081=new Error(_0xe4dac9['error']||_0xe4dac9['message']||_0x4553e4['statusText']);if(_0xe4dac9['detail']!==undefined)_0x581081['detail']=_0xe4dac9['detail'];throw _0x581081;}return await _0x4553e4['json']();},async 'updateExternalSkill'(_0x1bb09c){const _0x4d0c5a=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1bb09c)+'/update',{'method':'POST'});if(!_0x4d0c5a['ok']){const _0x53157e=await _0x4d0c5a['json']()['catch'](()=>({'error':_0x4d0c5a['statusText']})),_0x5b9ccd=new Error(_0x53157e['error']||_0x53157e['message']||_0x4d0c5a['statusText']);if(_0x53157e['detail']!==undefined)_0x5b9ccd['detail']=_0x53157e['detail'];throw _0x5b9ccd;}return await _0x4d0c5a['json']();},async 'updateSkillFlags'(_0x101bce,_0x4982a2){const _0x5a8264=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x101bce)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4982a2})});if(!_0x5a8264['ok']){const _0x1e033c=await _0x5a8264['json']()['catch'](()=>({'error':_0x5a8264['statusText']})),_0x59656f=new Error(_0x1e033c['error']||_0x1e033c['message']||_0x5a8264['statusText']);if(_0x1e033c['detail']!==undefined)_0x59656f['detail']=_0x1e033c['detail'];throw _0x59656f;}return await _0x5a8264['json']();},async 'removeFromImportedRegistry'(_0x5c1750){const _0xffc897=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5c1750)+'/registry',{'method':'DELETE'});if(!_0xffc897['ok']){const _0x544c74=await _0xffc897['json']()['catch'](()=>({'error':_0xffc897['statusText']})),_0x4576e0=new Error(_0x544c74['error']||_0x544c74['message']||_0xffc897['statusText']);if(_0x544c74['detail']!==undefined)_0x4576e0['detail']=_0x544c74['detail'];throw _0x4576e0;}return await _0xffc897['json']();},async 'getTeams'(){const _0x2117ce=await fetch(API_BASE+'/teams');if(!_0x2117ce['ok']){const _0x47deb2=await _0x2117ce['json']()['catch'](()=>({'message':_0x2117ce['statusText']}));throw new Error(_0x47deb2['message']||'Failed\x20to\x20get\x20teams');}return await _0x2117ce['json']();},async 'getTeam'(_0x414971){const _0xab1e3c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x414971));if(!_0xab1e3c['ok']){const _0x11d3f2=await _0xab1e3c['json']()['catch'](()=>({'message':_0xab1e3c['statusText']}));throw new Error(_0x11d3f2['message']||'Failed\x20to\x20get\x20team');}return await _0xab1e3c['json']();},async 'createTeam'(_0x1b3517){const _0x3df5e5=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b3517)});if(!_0x3df5e5['ok']){const _0x821d07=await _0x3df5e5['json']()['catch'](()=>({'message':_0x3df5e5['statusText']}));throw new Error(_0x821d07['message']||'Failed\x20to\x20create\x20team');}return await _0x3df5e5['json']();},async 'updateTeam'(_0x453c72,_0x1c4ba2){const _0x5ddf1c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x453c72),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c4ba2)});if(!_0x5ddf1c['ok']){const _0x464053=await _0x5ddf1c['json']()['catch'](()=>({'message':_0x5ddf1c['statusText']}));throw new Error(_0x464053['message']||'Failed\x20to\x20update\x20team');}return await _0x5ddf1c['json']();},async 'deleteTeam'(_0xefac6){const _0x5f0845=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xefac6),{'method':'DELETE'});if(!_0x5f0845['ok']){const _0x4a8516=await _0x5f0845['json']()['catch'](()=>({'message':_0x5f0845['statusText']}));throw new Error(_0x4a8516['message']||'Failed\x20to\x20delete\x20team');}return await _0x5f0845['json']();},async 'addTeamMember'(_0x5e2c4a,_0x27e3dc){const _0x2d653e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5e2c4a)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x27e3dc})});if(!_0x2d653e['ok']){const _0x167077=await _0x2d653e['json']()['catch'](()=>({'message':_0x2d653e['statusText']}));throw new Error(_0x167077['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2d653e['json']();},async 'removeTeamMember'(_0x3014b6,_0x17b3af){const _0xc0edb3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3014b6)+'/members/'+encodeURIComponent(_0x17b3af),{'method':'DELETE'});if(!_0xc0edb3['ok']){const _0x19f7c6=await _0xc0edb3['json']()['catch'](()=>({'message':_0xc0edb3['statusText']}));throw new Error(_0x19f7c6['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xc0edb3['json']();},async 'getBindings'(_0x352335={}){const _0x2e4ef4=new URLSearchParams();if(_0x352335['resource_type'])_0x2e4ef4['set']('resource_type',_0x352335['resource_type']);if(_0x352335['resource_id'])_0x2e4ef4['set']('resource_id',_0x352335['resource_id']);if(_0x352335['subject_type'])_0x2e4ef4['set']('subject_type',_0x352335['subject_type']);if(_0x352335['subject_id'])_0x2e4ef4['set']('subject_id',_0x352335['subject_id']);const _0x500248=_0x2e4ef4['toString'](),_0x23fa6e=await fetch(API_BASE+'/bindings'+(_0x500248?'?'+_0x500248:''));if(!_0x23fa6e['ok']){const _0x2c2931=await _0x23fa6e['json']()['catch'](()=>({'message':_0x23fa6e['statusText']}));throw new Error(_0x2c2931['message']||'Failed\x20to\x20get\x20bindings');}return await _0x23fa6e['json']();},async 'createBinding'(_0x4e8d63){const _0x4e3158=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e8d63)});if(!_0x4e3158['ok']){const _0x582e81=await _0x4e3158['json']()['catch'](()=>({'message':_0x4e3158['statusText']}));throw new Error(_0x582e81['message']||'Failed\x20to\x20create\x20binding');}return await _0x4e3158['json']();},async 'updateBinding'(_0x4997d7,_0x4df774){const _0x102d83=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4997d7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4df774)});if(!_0x102d83['ok']){const _0x4b6275=await _0x102d83['json']()['catch'](()=>({'message':_0x102d83['statusText']}));throw new Error(_0x4b6275['message']||'Failed\x20to\x20update\x20binding');}return await _0x102d83['json']();},async 'deleteBinding'(_0x10dbb3){const _0x50b88e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x10dbb3),{'method':'DELETE'});if(!_0x50b88e['ok']){const _0x1b1787=await _0x50b88e['json']()['catch'](()=>({'message':_0x50b88e['statusText']}));throw new Error(_0x1b1787['message']||'Failed\x20to\x20delete\x20binding');}return await _0x50b88e['json']();},async 'getRoleDefinitions'(){const _0x1e4de6=await fetch(API_BASE+'/roles');if(!_0x1e4de6['ok']){const _0x12587d=await _0x1e4de6['json']()['catch'](()=>({'message':_0x1e4de6['statusText']}));throw new Error(_0x12587d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1e4de6['json']();},async 'getRoleDefinition'(_0x54b6e7){const _0x464820=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x54b6e7));if(!_0x464820['ok']){const _0x597440=await _0x464820['json']()['catch'](()=>({'message':_0x464820['statusText']}));throw new Error(_0x597440['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x464820['json']();},async 'createRoleDefinition'(_0x32855c){const _0x2a700b=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32855c)});if(!_0x2a700b['ok']){const _0x32e857=await _0x2a700b['json']()['catch'](()=>({'message':_0x2a700b['statusText']}));throw new Error(_0x32e857['message']||_0x32e857['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2a700b['json']();},async 'updateRoleDefinition'(_0x50b24d,_0x992e4){const _0x527ac8=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x50b24d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x992e4)});if(!_0x527ac8['ok']){const _0x4061d9=await _0x527ac8['json']()['catch'](()=>({'message':_0x527ac8['statusText']}));throw new Error(_0x4061d9['message']||_0x4061d9['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x527ac8['json']();},async 'deleteRoleDefinition'(_0x448128){const _0x4de710=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x448128),{'method':'DELETE'});if(!_0x4de710['ok']){const _0x438751=await _0x4de710['json']()['catch'](()=>({'message':_0x4de710['statusText']}));throw new Error(_0x438751['message']||_0x438751['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x4de710['json']();},async 'getAvailablePermissions'(){const _0x5b2ff9=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5b2ff9['ok']){const _0x5130de=await _0x5b2ff9['json']()['catch'](()=>({'message':_0x5b2ff9['statusText']}));throw new Error(_0x5130de['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5b2ff9['json']();},async 'getGitProviderAllowedTeams'(_0x19ce08){const _0x33dc86=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x19ce08)+'/allowed-teams');if(!_0x33dc86['ok']){const _0x5e98ba=await _0x33dc86['json']()['catch'](()=>({'message':_0x33dc86['statusText']}));throw new Error(_0x5e98ba['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x33dc86['json']();},async 'setGitProviderAllowedTeams'(_0x5d2e42,_0x59303a){const _0x383c37=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5d2e42)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x59303a})});if(!_0x383c37['ok']){const _0x41e070=await _0x383c37['json']()['catch'](()=>({'message':_0x383c37['statusText']}));throw new Error(_0x41e070['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x383c37['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 _0x2dcefb=toastState['baseBottom'];toastState['toasts']['forEach'](_0x3978e4=>{_0x3978e4['el']['style']['bottom']=_0x2dcefb+'px';const _0x2757aa=_0x3978e4['el']['offsetHeight']||toastState['defaultHeight'];_0x2dcefb+=_0x2757aa+toastState['gap'];});});}function removeToastById(_0x30b577){const _0x4f40fe=toastState['toasts']['findIndex'](_0x5e5a49=>_0x5e5a49['id']===_0x30b577);if(_0x4f40fe===-0x1)return;const _0x53c816=toastState['toasts'][_0x4f40fe];if(_0x53c816['timeoutId'])clearTimeout(_0x53c816['timeoutId']);_0x53c816['el']['classList']['remove']('show'),setTimeout(()=>_0x53c816['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4f40fe,0x1),repositionAllToasts();}function registerToast(_0x23abed){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x23abed),repositionAllToasts(),_0x23abed['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'(_0x289246){const _0x3ac00a=new Date(_0x289246),_0x5536ac=new Date(),_0x4f886a=_0x5536ac-_0x3ac00a,_0x3f6894=Math['floor'](_0x4f886a/0x3e8),_0x4ea027=Math['floor'](_0x3f6894/0x3c),_0x3cce89=Math['floor'](_0x4ea027/0x3c),_0x3deb48=Math['floor'](_0x3cce89/0x18);if(_0x3f6894<0x3c)return'now';if(_0x4ea027<0x3c)return _0x4ea027+'m\x20ago';if(_0x3cce89<0x18)return _0x3cce89+'h\x20ago';return _0x3deb48+'d\x20ago';},'getStatusIcon'(_0x4a5aec){switch(_0x4a5aec){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4a2abe){switch(_0x4a2abe){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'(_0x3c9723,_0x5878e8=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1e76f8={};_0x1e76f8['text/plain']=new Blob([_0x3c9723],{'type':'text/plain'});_0x5878e8&&(_0x1e76f8['text/html']=new Blob([_0x5878e8],{'type':'text/html'}));const _0xd4a461=new ClipboardItem(_0x1e76f8);return await navigator['clipboard']['write']([_0xd4a461]),!![];}catch(_0x1610e8){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1610e8);}try{const _0x1831ac=_0x241b7c=>{_0x241b7c['preventDefault'](),_0x241b7c['clipboardData']['setData']('text/plain',_0x3c9723),_0x5878e8&&_0x241b7c['clipboardData']['setData']('text/html',_0x5878e8);};document['addEventListener']('copy',_0x1831ac);const _0x353693=document['execCommand']('copy');document['removeEventListener']('copy',_0x1831ac);if(_0x353693)return!![];}catch(_0x226b3b){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x226b3b);}try{const _0x279156=document['createElement']('textarea');_0x279156['value']=_0x3c9723,_0x279156['style']['position']='fixed',_0x279156['style']['opacity']='0',_0x279156['style']['pointerEvents']='none',document['body']['appendChild'](_0x279156),_0x279156['select']();const _0x2ed095=document['execCommand']('copy');return document['body']['removeChild'](_0x279156),_0x2ed095;}catch(_0x498d33){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x498d33),![];}},'showToast'(_0x30d17d,_0x4a001b='info'){const _0x4d6ae7=getNextToastId(),_0xe13f68=document['createElement']('div');_0xe13f68['className']='toast\x20toast-'+_0x4a001b,_0xe13f68['textContent']=_0x30d17d,_0xe13f68['dataset']['toastId']=_0x4d6ae7,document['body']['appendChild'](_0xe13f68);const _0x17663c=_0x4a001b==='error'?0x2710:0xbb8,_0x3baf3f=setTimeout(()=>{removeToastById(_0x4d6ae7);},_0x17663c),_0x504d12={'id':_0x4d6ae7,'el':_0xe13f68,'timeoutId':_0x3baf3f};return registerToast(_0x504d12),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0xe13f68['classList']['add']('show');});}),_0x4d6ae7;},'showError'(_0x2be7f1){console['error'](_0x2be7f1);const _0x1af866=typeof _0x2be7f1==='string'?_0x2be7f1:_0x2be7f1['message']||'An\x20error\x20occurred';this['showToast'](_0x1af866,'error');},'showSuccess'(_0x1dc874){this['showToast'](_0x1dc874,'success');},'capitalize'(_0x2a5750){if(!_0x2a5750)return'';return _0x2a5750['charAt'](0x0)['toUpperCase']()+_0x2a5750['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x545d6d){if(_0x545d6d===null||_0x545d6d===undefined)return'';return String(_0x545d6d)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');},'ansiToHtml'(_0x3bd5e5){if(_0x3bd5e5===null||_0x3bd5e5===undefined)return'';let _0x4bf9fc=this['escapeHtml'](_0x3bd5e5);const _0x565316={'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'},_0x125ae8={'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 _0x1a42b4=0x0;return _0x4bf9fc=_0x4bf9fc['replace'](/\x1b\[([0-9;]*)m/g,(_0x51e7cd,_0x203575)=>{if(!_0x203575||_0x203575==='0'){const _0x494285='</span>'['repeat'](_0x1a42b4);return _0x1a42b4=0x0,_0x494285;}const _0x4f2be5=_0x203575['split'](';'),_0x2076bc=[];for(const _0x3d403d of _0x4f2be5){if(_0x3d403d==='1')_0x2076bc['push']('font-weight:bold');else{if(_0x3d403d==='2')_0x2076bc['push']('opacity:0.7');else{if(_0x3d403d==='3')_0x2076bc['push']('font-style:italic');else{if(_0x3d403d==='4')_0x2076bc['push']('text-decoration:underline');else{if(_0x3d403d==='9')_0x2076bc['push']('text-decoration:line-through');else{if(_0x565316[_0x3d403d])_0x2076bc['push']('color:'+_0x565316[_0x3d403d]);else{if(_0x125ae8[_0x3d403d])_0x2076bc['push']('background-color:'+_0x125ae8[_0x3d403d]);}}}}}}}if(_0x2076bc['length']>0x0)return _0x1a42b4++,'<span\x20style=\x22'+_0x2076bc['join'](';')+'\x22>';return'';}),_0x4bf9fc+='</span>'['repeat'](_0x1a42b4),_0x4bf9fc=_0x4bf9fc['replace'](/\\u001b\[([0-9;]*)m/g,(_0x52ca91,_0x8704bd)=>{if(!_0x8704bd||_0x8704bd==='0')return'';const _0x3c6036=_0x8704bd['split'](';'),_0x273e2f=[];for(const _0xa98c02 of _0x3c6036){if(_0xa98c02==='1')_0x273e2f['push']('font-weight:bold');else{if(_0x565316[_0xa98c02])_0x273e2f['push']('color:'+_0x565316[_0xa98c02]);else{if(_0x125ae8[_0xa98c02])_0x273e2f['push']('background-color:'+_0x125ae8[_0xa98c02]);}}}if(_0x273e2f['length']>0x0)return'<span\x20style=\x22'+_0x273e2f['join'](';')+'\x22>';return'';}),_0x4bf9fc;},'showModal'({title:_0x3f2787,content:_0x56cdc4,buttons:buttons=[]}){const _0x4798d0='\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'](_0x3f2787)+'</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'+_0x56cdc4+'\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']((_0x3853a1,_0x46008c)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x3853a1['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x46008c+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x3853a1['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',_0x5223a8=document['createElement']('div');_0x5223a8['id']='utils-modal',_0x5223a8['className']='modal',_0x5223a8['innerHTML']=_0x4798d0,document['body']['appendChild'](_0x5223a8);const _0x3ff214=document['getElementById']('utils-modal-close');_0x3ff214&&_0x3ff214['addEventListener']('click',()=>this['hideModal']());const _0x4abd54=_0x5223a8['querySelectorAll']('[data-btn-index]');_0x4abd54['forEach'](_0x1cf4dd=>{const _0x3811a8=parseInt(_0x1cf4dd['dataset']['btnIndex']);buttons[_0x3811a8]?.['onClick']&&_0x1cf4dd['addEventListener']('click',buttons[_0x3811a8]['onClick']);});const _0x5c361f=document['getElementById']('utils-modal-overlay');_0x5c361f&&_0x5c361f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1963e2=document['getElementById']('utils-modal');_0x1963e2&&_0x1963e2['remove']();},'parseKeyValuePairs'(_0xb111c9){const _0x330f99={};if(!_0xb111c9)return _0x330f99;return _0xb111c9['split'](/\r?\n/)['map'](_0x18dd35=>_0x18dd35['trim']())['filter'](Boolean)['forEach'](_0xe512ea=>{const _0x3a359e=_0xe512ea['indexOf']('=');if(_0x3a359e>0x0){const _0x309a02=_0xe512ea['slice'](0x0,_0x3a359e)['trim'](),_0x45dc3c=_0xe512ea['slice'](_0x3a359e+0x1)['trim']();if(_0x309a02)_0x330f99[_0x309a02]=_0x45dc3c;}}),_0x330f99;},'debounce'(_0x59f692,_0xa57aad=0xfa){let _0xf2efc6=null;return(..._0x732892)=>{clearTimeout(_0xf2efc6),_0xf2efc6=setTimeout(()=>_0x59f692['apply'](this,_0x732892),_0xa57aad);};},'formatTimestamp'(_0x386a92){if(!_0x386a92)return'N/A';const _0x33f46e=new Date(_0x386a92);return _0x33f46e['toLocaleDateString']()+'\x20'+_0x33f46e['toLocaleTimeString']();},'getQueryParams'(){const _0x37fd6c=new URLSearchParams(window['location']['search']),_0x2d5ce6={};for(const [_0xb3e44f,_0x5e934f]of _0x37fd6c){_0x2d5ce6[_0xb3e44f]=_0x5e934f;}return _0x2d5ce6;},'formatDuration'(_0x381018,_0x11f06f){if(!_0x381018)return'N/A';const _0x5cc257=new Date(_0x381018),_0x3a54c8=_0x11f06f?new Date(_0x11f06f):new Date(),_0xed8371=_0x3a54c8-_0x5cc257;if(_0xed8371<0x0)return'0s';const _0x15a462=Math['floor'](_0xed8371/0x3e8),_0x5b82b8=Math['floor'](_0x15a462/0x3c),_0x36b88=Math['floor'](_0x5b82b8/0x3c),_0x318e2c=Math['floor'](_0x36b88/0x18);if(_0x15a462<0x3c)return _0x15a462+'s';if(_0x5b82b8<0x3c)return _0x5b82b8+'m\x20'+_0x15a462%0x3c+'s';if(_0x36b88<0x18)return _0x36b88+'h\x20'+_0x5b82b8%0x3c+'m\x20'+_0x15a462%0x3c+'s';return _0x318e2c+'d\x20'+_0x36b88%0x18+'h\x20'+_0x5b82b8%0x3c+'m';},'renderMarkdown'(_0x39be57,_0x337889={}){if(!_0x39be57)return'';_0x39be57=this['rewriteAttachmentLinks'](_0x39be57,_0x337889),_0x39be57=this['rewriteColorSyntax'](_0x39be57);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x39be57,_0x337889);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x3f8686=new marked['Renderer'](),_0x272f13=_0x3f8686['code']['bind'](_0x3f8686);_0x3f8686['code']=function(_0x19fada,_0x5bf3c8){const _0x4901ec=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x4901ec&&_0x5bf3c8)try{const _0x5ffb44=_0x4901ec['getLanguage'](_0x5bf3c8)?_0x5bf3c8:'plaintext',_0x5e7f04=_0x4901ec['highlight'](_0x19fada,{'language':_0x5ffb44})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x5bf3c8+'\x22>'+_0x5e7f04+'</code></pre>';}catch(_0x24d3f1){console['error']('Syntax\x20highlighting\x20error:',_0x24d3f1);}return _0x272f13(_0x19fada,_0x5bf3c8);};try{return marked['parse'](_0x39be57,{'renderer':_0x3f8686});}catch(_0x408d7f){return console['error']('Markdown\x20parsing\x20error:',_0x408d7f),this['renderMarkdownFallback'](_0x39be57,_0x337889);}},'rewriteAttachmentLinks'(_0xb68aa1,_0x37db9a={}){const _0x53258f=typeof _0x37db9a['resolveAttachmentUrl']==='function'?_0x37db9a['resolveAttachmentUrl']:_0x37db9a['taskId']?_0x1ddd01=>API_BASE+'/tasks/'+_0x37db9a['taskId']+'/attachments/'+encodeURIComponent(_0x1ddd01):null;if(!_0x53258f)return _0xb68aa1;return String(_0xb68aa1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5eaa5d,_0x3c5c3b)=>{const _0x11a3e5=String(_0x3c5c3b||'')['trim']();if(!_0x11a3e5)return _0x5eaa5d;let _0x345a48=_0x11a3e5;try{_0x345a48=decodeURIComponent(_0x11a3e5);}catch{}const _0x1dbd2c=_0x53258f(_0x345a48);if(!_0x1dbd2c)return _0x5eaa5d;return']('+_0x1dbd2c+')';});},'rewriteColorSyntax'(_0x37ee24){if(!_0x37ee24)return _0x37ee24;return String(_0x37ee24)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x35c879,_0x2a3657,_0x3706cd)=>{const _0x5792e0=this['rewriteColorSyntax'](_0x3706cd);return'<span\x20style=\x22color:\x20'+_0x2a3657+'\x22>'+_0x5792e0+'</span>';});},'renderMarkdownFallback'(_0x564971,_0x1d9ebf={}){if(!_0x564971)return'';_0x564971=_0x564971['replace'](/\r\n/g,'\x0a'),_0x564971=_0x564971['replace'](/\r/g,'\x0a'),_0x564971=this['rewriteAttachmentLinks'](_0x564971,_0x1d9ebf);let _0x554ea6=this['escapeHtml'](_0x564971);return _0x554ea6=_0x554ea6['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x554ea6=_0x554ea6['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x554ea6=_0x554ea6['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x554ea6=_0x554ea6['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x554ea6=_0x554ea6['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x554ea6=_0x554ea6['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x554ea6=_0x554ea6['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x554ea6=_0x554ea6['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x554ea6=_0x554ea6['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x554ea6=_0x554ea6['replace'](/\n\n/g,'</p><p>'),_0x554ea6=_0x554ea6['replace'](/\n/g,'<br>'),'<p>'+_0x554ea6+'</p>';}};export class CustomSelect{constructor(_0x6c5329,_0xd63681={}){this['nativeSelect']=_0x6c5329,this['options']=_0xd63681,this['isOpen']=![],this['selectedValue']=_0x6c5329['value']||'',this['searchable']=_0xd63681['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x3f728a=document['createElement']('div');_0x3f728a['className']='custom-select';const _0x21b914=document['createElement']('div');_0x21b914['className']='custom-select-trigger',_0x21b914['setAttribute']('tabindex','0'),_0x21b914['setAttribute']('role','button'),_0x21b914['setAttribute']('aria-haspopup','listbox');const _0x3d0acc=document['createElement']('span');_0x3d0acc['className']='custom-select-trigger-text';const _0xaaef3c=document['createElement']('span');_0xaaef3c['className']='custom-select-arrow',_0xaaef3c['textContent']='▼',_0x21b914['appendChild'](_0x3d0acc),_0x21b914['appendChild'](_0xaaef3c);const _0x2c75d3=document['createElement']('div');_0x2c75d3['className']='custom-select-dropdown',_0x2c75d3['setAttribute']('role','listbox');if(this['searchable']){const _0x5bb1cc=document['createElement']('div');_0x5bb1cc['className']='custom-select-search';const _0x263f6c=document['createElement']('input');_0x263f6c['type']='text',_0x263f6c['className']='custom-select-search-input',_0x263f6c['placeholder']='Type\x20to\x20search...',_0x263f6c['setAttribute']('aria-label','Search\x20options'),_0x263f6c['addEventListener']('input',_0x34012e=>{this['searchQuery']=_0x34012e['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x263f6c['addEventListener']('keydown',_0x5d9b35=>{if(_0x5d9b35['key']==='Escape')_0x5d9b35['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x5d9b35['key']==='Enter'){_0x5d9b35['preventDefault'](),_0x5d9b35['stopPropagation']();const _0x157950=_0x2c75d3['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x157950){const _0x454d95=_0x157950['getAttribute']('data-value');this['select'](_0x454d95);}}}}),_0x5bb1cc['appendChild'](_0x263f6c),_0x2c75d3['appendChild'](_0x5bb1cc),this['searchInput']=_0x263f6c;}const _0x41aa5b=document['createElement']('div');_0x41aa5b['className']='custom-select-options',_0x2c75d3['appendChild'](_0x41aa5b),_0x3f728a['appendChild'](_0x21b914),_0x3f728a['appendChild'](_0x2c75d3),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x3f728a,this['nativeSelect']),this['wrapper']=_0x3f728a,this['trigger']=_0x21b914,this['triggerText']=_0x3d0acc,this['dropdown']=_0x2c75d3,this['optionsContainer']=_0x41aa5b,_0x21b914['addEventListener']('click',()=>this['toggle']()),_0x21b914['addEventListener']('keydown',_0x32d8c0=>this['handleKeydown'](_0x32d8c0)),document['addEventListener']('click',_0x2fb6c9=>{!_0x3f728a['contains'](_0x2fb6c9['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x3cb8ef=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x3cb8ef['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x58c214=new MutationObserver(()=>{this['updateDisabledState']();});_0x58c214['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2a63d8=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2a63d8['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x2e0d38=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x2e0d38),this['trigger']['setAttribute']('aria-disabled',_0x2e0d38?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x2e0d38?'-1':'0'),_0x2e0d38&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x504db9=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0xf05824=_0x504db9['filter'](_0x520d7e=>!_0x520d7e['disabled']&&!_0x520d7e['hidden']);_0x504db9['forEach']((_0x2e69fa,_0x282876)=>{const _0x4a190f=document['createElement']('div');_0x4a190f['className']='custom-select-option',_0x4a190f['textContent']=_0x2e69fa['textContent'],_0x4a190f['setAttribute']('data-value',_0x2e69fa['value']),_0x4a190f['setAttribute']('data-index',_0x282876),_0x4a190f['setAttribute']('role','option'),_0x2e69fa['disabled']?_0x4a190f['classList']['add']('disabled'):_0x4a190f['addEventListener']('click',()=>this['select'](_0x2e69fa['value'])),_0x2e69fa['value']===this['selectedValue']&&_0x4a190f['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4a190f),this['allOptions']['push']({'element':_0x4a190f,'text':_0x2e69fa['textContent']['toLowerCase'](),'value':_0x2e69fa['value'],'disabled':_0x2e69fa['disabled']});});if(this['searchable']&&this['searchInput']){const _0x1d47de=this['searchInput']['parentElement'];_0xf05824['length']>0x3?_0x1d47de['style']['display']='':_0x1d47de['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x13af08=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3dfe46=>{if(!_0x13af08||_0x3dfe46['disabled'])_0x3dfe46['element']['style']['display']='';else{const _0x12dfc4=_0x3dfe46['text']['includes'](_0x13af08);_0x3dfe46['element']['style']['display']=_0x12dfc4?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x423ea8){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x423ea8,this['nativeSelect']['value']=_0x423ea8;const _0x360fff=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x360fff),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x41a397=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x41a397&&(this['triggerText']['textContent']=_0x41a397['textContent'],_0x41a397['disabled']||_0x41a397['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2a44ba=>{_0x2a44ba['getAttribute']('data-value')===this['selectedValue']?_0x2a44ba['classList']['add']('selected'):_0x2a44ba['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 _0x2d293f=window['getComputedStyle'](this['dropdown']);if(_0x2d293f['position']==='fixed'){const _0x3b708a=this['trigger']['getBoundingClientRect'](),_0x1240cd=parseInt(_0x2d293f['maxHeight'])||0xc8,_0x2a9237=window['innerHeight'],_0x3b3275=_0x2a9237-_0x3b708a['bottom'],_0x4dd89d=_0x3b708a['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x5a0715;_0x3b3275<_0x1240cd&&_0x4dd89d>_0x3b3275?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2a9237-_0x3b708a['top']+'px',_0x5a0715=Math['min'](_0x1240cd,_0x4dd89d-0xa),this['dropdown']['style']['maxHeight']=_0x5a0715+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3b708a['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x5a0715=Math['min'](_0x1240cd,_0x3b3275-0xa),this['dropdown']['style']['maxHeight']=_0x5a0715+'px');if(this['optionsContainer']){let _0x2066bb=_0x5a0715;if(this['searchInput']){const _0x495930=this['searchInput']['parentElement'];_0x495930&&(_0x2066bb-=_0x495930['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x2066bb)+'px';}this['dropdown']['style']['left']=_0x3b708a['left']+'px',this['dropdown']['style']['width']=_0x3b708a['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x1d49c3=this['searchInput']['parentElement'];_0x1d49c3&&_0x1d49c3['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'](_0x3985d2){if(this['nativeSelect']['disabled'])return;if(_0x3985d2['key']==='Enter'||_0x3985d2['key']==='\x20')_0x3985d2['preventDefault'](),this['toggle']();else _0x3985d2['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x583d19='\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',_0x583d19),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x49e430=document['getElementById']('confirm-dialog-close'),_0x296994=document['getElementById']('confirm-dialog-cancel'),_0x2e25bc=document['getElementById']('confirm-dialog-confirm'),_0x2553b1=this['_modal']['querySelector']('.modal-overlay');_0x49e430['addEventListener']('click',()=>this['_resolve'](![])),_0x296994['addEventListener']('click',()=>this['_resolve'](![])),_0x2e25bc['addEventListener']('click',()=>this['_resolve'](!![])),_0x2553b1['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x554fe6=>{if(_0x554fe6['key']==='Escape')_0x554fe6['preventDefault'](),this['_resolve'](![]);else _0x554fe6['key']==='Enter'&&(_0x554fe6['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x504e53,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1e2216=>{this['_resolvePromise']=_0x1e2216,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x504e53;const _0x1a78fe=document['getElementById']('confirm-dialog-cancel'),_0x2d1e13=document['getElementById']('confirm-dialog-confirm');_0x1a78fe['textContent']=cancelText,_0x2d1e13['textContent']=confirmText,_0x2d1e13['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x2d1e13['focus']();});},'_resolve'(_0x4c9c28){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4c9c28),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x49c944,_0x403cf9={}){this['container']=_0x49c944,this['options']={'placeholder':_0x403cf9['placeholder']||'Type\x20to\x20search...','maxItems':_0x403cf9['maxItems']||0x64,'loadItems':_0x403cf9['loadItems']||(async()=>[]),'renderItem':_0x403cf9['renderItem']||(_0x19d543=>({'primary':String(_0x19d543),'secondary':''})),'onSelect':_0x403cf9['onSelect']||(()=>{}),'filterItems':_0x403cf9['filterItems']||null,'getItemValue':_0x403cf9['getItemValue']||(_0x26357b=>_0x26357b),'sortItems':_0x403cf9['sortItems']||null,'debounceMs':_0x403cf9['debounceMs']||0xc8,'minCharsForSearch':_0x403cf9['minCharsForSearch']||0x0,'emptyMessage':_0x403cf9['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x403cf9['loadingMessage']||'Loading...','preload':_0x403cf9['preload']!==![],'searchMode':_0x403cf9['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',_0x1affb6=>this['onBlur'](_0x1affb6)),this['input']['addEventListener']('input',_0xd58cb1=>this['onInput'](_0xd58cb1)),this['input']['addEventListener']('keydown',_0xf4e5c0=>this['onKeydown'](_0xf4e5c0)),this['clearBtn']['addEventListener']('mousedown',_0x10b027=>{_0x10b027['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x29b174=>{_0x29b174['preventDefault']();}),document['addEventListener']('click',_0x4f2d3e=>{!this['wrapper']['contains'](_0x4f2d3e['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(_0x55e7a6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x55e7a6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2303d9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5d1e8b){const _0x111ec3=_0x5d1e8b['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x111ec3);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x111ec3):this['loadAndShow'](_0x111ec3);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x55eebc){switch(_0x55eebc['key']){case'ArrowDown':_0x55eebc['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x55eebc['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x55eebc['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x55eebc['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x18b3e4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x23bab1=this['selectedIndex']+_0x18b3e4;if(_0x23bab1>=0x0&&_0x23bab1<this['filteredItems']['length']){this['selectedIndex']=_0x23bab1,this['updateSelectionHighlight']();const _0x3931a5=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x3931a5[this['selectedIndex']]&&_0x3931a5[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1fd37d=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1fd37d['forEach']((_0x2f7912,_0x34a5f1)=>{_0x2f7912['classList']['toggle']('keyboard-selected',_0x34a5f1===this['selectedIndex']);});}async['loadAndShow'](_0xb7fdd){this['showLoading']();try{const _0x59c47c=await this['options']['loadItems'](_0xb7fdd);if(this['options']['searchMode']==='server'){let _0x43fb55=_0x59c47c;this['options']['sortItems']&&(_0x43fb55=this['options']['sortItems']([..._0x59c47c]));this['filteredItems']=_0x43fb55;const _0x5ad813=this['filteredItems']['length']>=this['options']['maxItems'];_0x5ad813&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5ad813),this['open']();}else this['allItems']=_0x59c47c,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0xb7fdd);}catch(_0x51ec03){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x51ec03),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x5ad5b2){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x5ad5b2):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0xa470b8=this['filteredItems']['length']>=this['options']['maxItems'];_0xa470b8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xa470b8),this['open']();}['renderItems'](_0x29604e){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']((_0x2813af,_0x3fc5d4)=>{const _0x583646=document['createElement']('div');_0x583646['className']='autocomplete-select-item',_0x583646['setAttribute']('role','option'),_0x583646['setAttribute']('data-index',_0x3fc5d4);const _0x55ffa0=this['options']['renderItem'](_0x2813af);let _0x5026fc='';_0x55ffa0['icon']&&(_0x5026fc='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x55ffa0['iconClass']||'')+'\x22>'+_0x55ffa0['icon']+'</span>'),_0x583646['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5026fc+'\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'](_0x55ffa0['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x55ffa0['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x55ffa0['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x583646['addEventListener']('click',()=>{this['selectItem'](_0x2813af);}),_0x583646['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3fc5d4,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x583646);}),_0x29604e?(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'](_0x3cb0fb){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x3cb0fb)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1061bf){this['selectedItem']=_0x1061bf;const _0x18db42=this['options']['renderItem'](_0x1061bf);this['input']['value']=_0x18db42['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1061bf);}['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'](_0x296e71){if(_0x296e71){this['selectedItem']=_0x296e71;const _0x472d17=this['options']['renderItem'](_0x296e71);this['input']['value']=_0x472d17['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x3a3e2c){this['allItems']=_0x3a3e2c,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'](_0x40ee3d){this['input']['placeholder']=_0x40ee3d;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x33ad1a=null){const _0x3dfa18=document['getElementById']('admin-menu-container'),_0x52cd89=document['getElementById']('admin-menu-btn'),_0x34f8e1=document['getElementById']('admin-menu');if(!_0x3dfa18||!_0x52cd89||!_0x34f8e1)return;try{!_0x33ad1a&&(_0x33ad1a=await API['getCurrentUser']());if(_0x33ad1a){const _0x36aa50=_0x33ad1a['hasAllPermissions']||_0x33ad1a['hasEnvironmentsManage']||_0x33ad1a['canCreateUsers']||_0x33ad1a['canManageTeams']||_0x33ad1a['hasEnvironmentBindings'];if(!_0x36aa50)return;_0x3dfa18['hidden']=![];if(!_0x33ad1a['hasAllPermissions']){const _0x383a63=_0x34f8e1['querySelectorAll']('.admin-menu-item');_0x383a63['forEach'](_0x3de424=>{const _0x35c1ab=_0x3de424['querySelector']('.option-text')?.['textContent']?.['trim']();_0x35c1ab==='Users'&&!_0x33ad1a['canCreateUsers']&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Skills'&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Server\x20Settings'&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Server\x20Health'&&(_0x3de424['hidden']=!![]),_0x35c1ab==='Git\x20History'&&(_0x3de424['hidden']=!![]);});}_0x52cd89['addEventListener']('click',_0x44ddfd=>{_0x44ddfd['stopPropagation']();const _0x131fdc=document['getElementById']('actions-menu');if(_0x131fdc)_0x131fdc['hidden']=!![];_0x34f8e1['hidden']=!_0x34f8e1['hidden'];}),document['addEventListener']('click',_0x59d740=>{!_0x34f8e1['hidden']&&!_0x52cd89['contains'](_0x59d740['target'])&&!_0x34f8e1['contains'](_0x59d740['target'])&&(_0x34f8e1['hidden']=!![]);}),document['addEventListener']('keydown',_0x59783d=>{_0x59783d['key']==='Escape'&&!_0x34f8e1['hidden']&&(_0x34f8e1['hidden']=!![]);});const _0x357235=document['getElementById']('server-health-btn');_0x357235&&_0x357235['addEventListener']('click',async()=>{_0x34f8e1['hidden']=!![];const {openServerHealthModal:_0x4e7404}=await import('./server-health.js');_0x4e7404();});}}catch(_0x153cbb){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x153cbb['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};