@profoundlogic/coderflow-server 0.5.3 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) 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.html +6 -6
  141. package/dist/web-ui/public/environments.js +1 -1
  142. package/dist/web-ui/public/feedback-widget.css +409 -0
  143. package/dist/web-ui/public/feedback-widget.js +1 -1
  144. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  145. package/dist/web-ui/public/git-history.html +4 -4
  146. package/dist/web-ui/public/git-history.js +1 -1
  147. package/dist/web-ui/public/git-status.js +1 -1
  148. package/dist/web-ui/public/index.html +4 -4
  149. package/dist/web-ui/public/index.js +1 -1
  150. package/dist/web-ui/public/login.html +2 -2
  151. package/dist/web-ui/public/login.js +1 -1
  152. package/dist/web-ui/public/markdown-editor.js +1 -1
  153. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  154. package/dist/web-ui/public/modal-maximize.js +1 -1
  155. package/dist/web-ui/public/notifications.js +1 -1
  156. package/dist/web-ui/public/pr-dialog.js +1 -1
  157. package/dist/web-ui/public/roles.html +1 -1
  158. package/dist/web-ui/public/roles.js +1 -1
  159. package/dist/web-ui/public/server-health.js +1 -1
  160. package/dist/web-ui/public/settings.html +4 -4
  161. package/dist/web-ui/public/settings.js +1 -1
  162. package/dist/web-ui/public/setup-password.html +2 -2
  163. package/dist/web-ui/public/setup-password.js +1 -1
  164. package/dist/web-ui/public/skills.html +6 -6
  165. package/dist/web-ui/public/skills.js +1 -1
  166. package/dist/web-ui/public/sse-client.js +1 -1
  167. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  168. package/dist/web-ui/public/styles.css +2975 -2022
  169. package/dist/web-ui/public/task.html +101 -5
  170. package/dist/web-ui/public/task.js +1 -1
  171. package/dist/web-ui/public/teams.html +1 -1
  172. package/dist/web-ui/public/teams.js +1 -1
  173. package/dist/web-ui/public/terminal.html +2 -2
  174. package/dist/web-ui/public/terminal.js +1 -1
  175. package/dist/web-ui/public/theme.js +1 -1
  176. package/dist/web-ui/public/users.html +2 -2
  177. package/dist/web-ui/public/users.js +1 -1
  178. package/dist/web-ui/public/variant-grouping.js +1 -1
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x66f208=window['location']['pathname'],_0x5f0388=_0x66f208['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5f0388)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5f0388[0x1]),_0x5f0388[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x300cdc={}){const _0x310474=new URLSearchParams();_0x300cdc['userId']&&_0x310474['set']('userId',String(_0x300cdc['userId']));_0x300cdc['automation']&&_0x310474['set']('automation',String(_0x300cdc['automation']));const _0x679974=API_BASE+'/tasks/stats'+(_0x310474['toString']()?'?'+_0x310474['toString']():''),_0x1890d3=await fetch(_0x679974);if(!_0x1890d3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x1890d3['statusText']);return await _0x1890d3['json']();},async 'getTasks'(_0x2828de={}){const _0x445ef6=new URLSearchParams();_0x2828de['status']&&_0x445ef6['set']('status',String(_0x2828de['status']));_0x2828de['environment']&&_0x445ef6['set']('environment',String(_0x2828de['environment']));_0x2828de['automation']&&_0x445ef6['set']('automation',String(_0x2828de['automation']));if(_0x2828de['include']){const _0x1d9ac7=Array['isArray'](_0x2828de['include'])?_0x2828de['include']['join'](','):String(_0x2828de['include']);_0x1d9ac7&&_0x445ef6['set']('include',_0x1d9ac7);}_0x2828de['filter']&&_0x445ef6['set']('filter',String(_0x2828de['filter']));_0x2828de['page']&&_0x445ef6['set']('page',String(_0x2828de['page']));_0x2828de['limit']&&_0x445ef6['set']('limit',String(_0x2828de['limit']));_0x2828de['userId']&&_0x445ef6['set']('userId',String(_0x2828de['userId']));_0x2828de['search']&&_0x445ef6['set']('search',String(_0x2828de['search']));_0x2828de['includeChildTasks']&&_0x445ef6['set']('includeChildTasks','true');const _0x4cdad6=API_BASE+'/tasks'+(_0x445ef6['toString']()?'?'+_0x445ef6['toString']():''),_0x47955a=await fetch(_0x4cdad6);if(!_0x47955a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x47955a['statusText']);return await _0x47955a['json']();},async 'getAutomations'(_0x2bb3d5={}){const _0x21507c=new URLSearchParams();_0x2bb3d5['environment']&&_0x21507c['set']('environment',String(_0x2bb3d5['environment']));const _0x1652ca=await fetch(API_BASE+'/api/automations'+(_0x21507c['toString']()?'?'+_0x21507c['toString']():''));if(!_0x1652ca['ok']){const _0x555bbd=await _0x1652ca['json']()['catch'](()=>({}));throw new Error(_0x555bbd['message']||_0x555bbd['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1652ca['statusText']);}return await _0x1652ca['json']();},async 'getAutomation'(_0xf3a9dd){const _0x502c79=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xf3a9dd));if(!_0x502c79['ok']){const _0x5d009a=await _0x502c79['json']()['catch'](()=>({}));throw new Error(_0x5d009a['message']||_0x5d009a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x502c79['statusText']);}return await _0x502c79['json']();},async 'createAutomation'(_0x18e88a){const _0x5496be=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18e88a||{})});if(!_0x5496be['ok']){const _0x403bb6=await _0x5496be['json']()['catch'](()=>({}));throw new Error(_0x403bb6['message']||_0x403bb6['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x5496be['statusText']);}return await _0x5496be['json']();},async 'updateAutomation'(_0x2de20d,_0x25e25b){const _0x512683=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2de20d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25e25b||{})});if(!_0x512683['ok']){const _0x2f2962=await _0x512683['json']()['catch'](()=>({}));throw new Error(_0x2f2962['message']||_0x2f2962['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x512683['statusText']);}return await _0x512683['json']();},async 'deleteAutomation'(_0x12a0f6){const _0x1e941e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x12a0f6),{'method':'DELETE'});if(!_0x1e941e['ok']){const _0x5de5d0=await _0x1e941e['json']()['catch'](()=>({}));throw new Error(_0x5de5d0['message']||_0x5de5d0['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1e941e['statusText']);}return await _0x1e941e['json']();},async 'triggerAutomation'(_0x352b37){const _0x527394=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x352b37)+'/trigger',{'method':'POST'});if(!_0x527394['ok']){const _0x28107d=await _0x527394['json']()['catch'](()=>({}));throw new Error(_0x28107d['message']||_0x28107d['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x527394['statusText']);}return await _0x527394['json']();},async 'setAutomationEnabled'(_0x4f1777,_0xe9e68f){const _0x3d1cc6=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4f1777)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xe9e68f})});if(!_0x3d1cc6['ok']){const _0x324506=await _0x3d1cc6['json']()['catch'](()=>({}));throw new Error(_0x324506['message']||_0x324506['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x3d1cc6['statusText']);}return await _0x3d1cc6['json']();},async 'getAutomationHistory'(_0x55f6c7,_0x1199e8=0x32){const _0x444c62=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55f6c7)+'/history?limit='+encodeURIComponent(String(_0x1199e8)));if(!_0x444c62['ok']){const _0x57398c=await _0x444c62['json']()['catch'](()=>({}));throw new Error(_0x57398c['message']||_0x57398c['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x444c62['statusText']);}return await _0x444c62['json']();},async 'getTask'(_0x2b0381,_0x5b32c1={}){const _0x101122=new URLSearchParams();if(_0x5b32c1['include']){const _0xeb321f=Array['isArray'](_0x5b32c1['include'])?_0x5b32c1['include']['join'](','):String(_0x5b32c1['include']);if(_0xeb321f)_0x101122['set']('include',_0xeb321f);}const _0x516dec=await fetch(API_BASE+'/tasks/'+_0x2b0381+(_0x101122['toString']()?'?'+_0x101122['toString']():''));if(!_0x516dec['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x516dec['statusText']);return await _0x516dec['json']();},async 'getTaskResults'(_0x452e0b){const _0xe611da=await fetch(API_BASE+'/tasks/'+_0x452e0b+'/results');if(!_0xe611da['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xe611da['statusText']);return await _0xe611da['json']();},async 'getTaskPatches'(_0x56fc51){const _0x2bfb5f=await fetch(API_BASE+'/tasks/'+_0x56fc51+'/patches');if(!_0x2bfb5f['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2bfb5f['statusText']);return await _0x2bfb5f['json']();},async 'getTaskAttachments'(_0x4c3dd0){const _0x44ccd5=await fetch(API_BASE+'/tasks/'+_0x4c3dd0+'/attachments');if(!_0x44ccd5['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x44ccd5['statusText']);return await _0x44ccd5['json']();},async 'uploadAttachments'(_0x5ec62f,_0x30fcb0){const _0x109c38=new FormData();for(const _0x47d48e of _0x30fcb0){_0x109c38['append']('attachments',_0x47d48e);}const _0x1e2c3c=await fetch(API_BASE+'/tasks/'+_0x5ec62f+'/attachments',{'method':'POST','body':_0x109c38});if(!_0x1e2c3c['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x1e2c3c['statusText']);return await _0x1e2c3c['json']();},async 'isAINameGenerationAvailable'(){try{const _0xdb3886=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0xdb3886['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0xdb3886['json']();}catch(_0x4c117a){return{'available':![],'reason':_0x4c117a['message']};}},async 'generateTaskName'(_0x2d28e3){try{const _0x5782b3=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2d28e3})});return await _0x5782b3['json']();}catch(_0x102119){return{'success':![],'error':_0x102119['message']};}},async 'createTask'(_0x571ed5){let _0x5d78ad,_0x215847={};if(_0x571ed5['files']&&_0x571ed5['files']['length']>0x0){const _0xe5071f=new FormData();for(const [_0x44bb70,_0x462e4c]of Object['entries'](_0x571ed5)){if(_0x44bb70!=='files'){if(_0x462e4c==null)continue;typeof _0x462e4c==='object'?_0xe5071f['append'](_0x44bb70,JSON['stringify'](_0x462e4c)):_0xe5071f['append'](_0x44bb70,String(_0x462e4c));}}for(const _0x1ca11a of _0x571ed5['files']){_0xe5071f['append']('attachments',_0x1ca11a);}_0x5d78ad=_0xe5071f;}else _0x215847['Content-Type']='application/json',_0x5d78ad=JSON['stringify'](_0x571ed5);const _0x3cb870=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x215847,'body':_0x5d78ad});if(!_0x3cb870['ok']){const _0x45bd9a=await _0x3cb870['json'](),_0x461942=new Error(_0x45bd9a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3cb870['statusText']),{message:_0x21d63f,..._0x55003f}=_0x45bd9a;Object['assign'](_0x461942,_0x55003f);throw _0x461942;}return await _0x3cb870['json']();},async 'createTestTask'(_0x4b67e6){const _0x12a7a6=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b67e6)});if(!_0x12a7a6['ok']){const _0x22b448=await _0x12a7a6['json']();throw new Error(_0x22b448['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x12a7a6['statusText']);}return await _0x12a7a6['json']();},async 'createEphemeralTest'(_0x437cd6){const _0x4ba7a1=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x437cd6)});if(!_0x4ba7a1['ok']){const _0xbb8621=await _0x4ba7a1['json']();throw new Error(_0xbb8621['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4ba7a1['statusText']);}return await _0x4ba7a1['json']();},async 'createDeployTask'(_0x4b7f99){const _0x29cc90=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b7f99)});if(!_0x29cc90['ok']){const _0x8c47b5=await _0x29cc90['json']();throw new Error(_0x8c47b5['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x29cc90['statusText']);}return await _0x29cc90['json']();},async 'getEnvironments'(){const _0x186cfa=await fetch(API_BASE+'/environments');if(!_0x186cfa['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x186cfa['statusText']);return await _0x186cfa['json']();},async 'getEnvironment'(_0x4c3def){const _0x34d0fb=await fetch(API_BASE+'/environments/'+_0x4c3def);if(!_0x34d0fb['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x34d0fb['statusText']);return await _0x34d0fb['json']();},async 'getEnvironmentRepoHistory'(_0xd265c5,_0x1e097b,_0x14016c={}){if(!_0xd265c5||!_0x1e097b)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5b2eeb=new URLSearchParams();if(_0x14016c['limit'])_0x5b2eeb['set']('limit',String(_0x14016c['limit']));if(_0x14016c['offset'])_0x5b2eeb['set']('offset',String(_0x14016c['offset']));if(_0x14016c['search'])_0x5b2eeb['set']('search',String(_0x14016c['search']));if(_0x14016c['branch'])_0x5b2eeb['set']('branch',String(_0x14016c['branch']));const _0x48d66d=API_BASE+'/environments/'+encodeURIComponent(_0xd265c5)+'/repos/'+encodeURIComponent(_0x1e097b)+'/git/history',_0x23454d=await fetch(''+_0x48d66d+(_0x5b2eeb['toString']()?'?'+_0x5b2eeb['toString']():''));if(!_0x23454d['ok']){const _0x5d3b0c=await _0x23454d['json']()['catch'](()=>({}));throw new Error(_0x5d3b0c['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x23454d['statusText']);}return await _0x23454d['json']();},async 'getEnvironmentRepoCommit'(_0xf05fef,_0x2c0aed,_0x57dc98){if(!_0xf05fef||!_0x2c0aed||!_0x57dc98)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2bac81=API_BASE+'/environments/'+encodeURIComponent(_0xf05fef)+'/repos/'+encodeURIComponent(_0x2c0aed)+'/git/commits/'+encodeURIComponent(_0x57dc98),_0x12b98d=await fetch(_0x2bac81);if(!_0x12b98d['ok']){const _0x3f92f8=await _0x12b98d['json']()['catch'](()=>({}));throw new Error(_0x3f92f8['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x12b98d['statusText']);}return await _0x12b98d['json']();},async 'getEnvironmentRepoBranches'(_0x1878b0,_0x3b16af){if(!_0x1878b0||!_0x3b16af)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a754e=API_BASE+'/environments/'+encodeURIComponent(_0x1878b0)+'/repos/'+encodeURIComponent(_0x3b16af)+'/git/branches',_0x165c8d=await fetch(_0x3a754e);if(!_0x165c8d['ok']){const _0x3d8fb2=await _0x165c8d['json']()['catch'](()=>({}));throw new Error(_0x3d8fb2['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x165c8d['statusText']);}return await _0x165c8d['json']();},async 'revertEnvironmentRepoCommit'(_0x1638cc,_0x921292,_0x359922,_0x3b0561={}){if(!_0x1638cc||!_0x921292||!_0x359922)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2848a8=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1638cc)+'/repos/'+encodeURIComponent(_0x921292)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x359922,..._0x3b0561})});if(!_0x2848a8['ok']){const _0x52493e=await _0x2848a8['json']()['catch'](()=>({}));throw new Error(_0x52493e['message']||_0x52493e['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2848a8['statusText']);}return await _0x2848a8['json']();},async 'getTemplates'(_0x244185={}){const _0x144d6b=new URLSearchParams();if(_0x244185['include']){const _0x348d63=Array['isArray'](_0x244185['include'])?_0x244185['include']['join'](','):String(_0x244185['include']);if(_0x348d63)_0x144d6b['set']('include',_0x348d63);}const _0x43f848=await fetch(API_BASE+'/templates'+(_0x144d6b['toString']()?'?'+_0x144d6b['toString']():''));if(!_0x43f848['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x43f848['statusText']);return await _0x43f848['json']();},async 'getTemplatesForEnvironment'(_0x5bae6c,_0x7efdd0={}){if(!_0x5bae6c)throw new Error('Environment\x20name\x20is\x20required');const _0x540bf9=new URLSearchParams();if(_0x7efdd0['include']){const _0x2fbce9=Array['isArray'](_0x7efdd0['include'])?_0x7efdd0['include']['join'](','):String(_0x7efdd0['include']);if(_0x2fbce9)_0x540bf9['set']('include',_0x2fbce9);}const _0x3f06f1=await fetch(API_BASE+'/templates/'+_0x5bae6c+(_0x540bf9['toString']()?'?'+_0x540bf9['toString']():''));if(!_0x3f06f1['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5bae6c+':\x20'+_0x3f06f1['statusText']);return await _0x3f06f1['json']();},async 'getTemplate'(_0x2addd7,_0x69b1f4,_0x114704={}){if(!_0x2addd7||!_0x69b1f4)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x10b5ef=new URLSearchParams();if(_0x114704['include']){const _0x1d0dc5=Array['isArray'](_0x114704['include'])?_0x114704['include']['join'](','):String(_0x114704['include']);if(_0x1d0dc5)_0x10b5ef['set']('include',_0x1d0dc5);}const _0x48e765=await fetch(API_BASE+'/templates/'+_0x2addd7+'/'+_0x69b1f4+(_0x10b5ef['toString']()?'?'+_0x10b5ef['toString']():''));if(!_0x48e765['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x48e765['statusText']);return await _0x48e765['json']();},async 'getTaskLogs'(_0x307073,_0x8014c5={}){if(!_0x307073)throw new Error('Task\x20ID\x20is\x20required');const _0x595fab=new URLSearchParams();_0x8014c5['tail']&&_0x595fab['set']('tail',String(_0x8014c5['tail']));const _0x2adce1=await fetch(API_BASE+'/tasks/'+_0x307073+'/logs'+(_0x595fab['toString']()?'?'+_0x595fab['toString']():''));if(!_0x2adce1['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2adce1['statusText']);return await _0x2adce1['text']();},async 'getContainers'(){const _0x425dfd=await fetch(API_BASE+'/containers');if(!_0x425dfd['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x425dfd['statusText']);return await _0x425dfd['json']();},async 'getContainer'(_0x27f765){const _0x29c417=await fetch(API_BASE+'/containers/'+_0x27f765);if(!_0x29c417['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x29c417['statusText']);return await _0x29c417['json']();},async 'startInteractiveContainer'(_0x2e8f4b){const _0x252a2f=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e8f4b)});if(!_0x252a2f['ok']){const _0x1e569c=await _0x252a2f['json']()['catch'](()=>({}));throw new Error(_0x1e569c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x252a2f['statusText']);}return await _0x252a2f['json']();},async 'stopContainer'(_0x187f88){const _0x4f45ca=await fetch(API_BASE+'/containers/'+_0x187f88,{'method':'DELETE'});if(!_0x4f45ca['ok']){const _0x44b2cf=await _0x4f45ca['json']()['catch'](()=>({}));throw new Error(_0x44b2cf['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4f45ca['statusText']);}return await _0x4f45ca['json']();},async 'stopTask'(_0x306f69){if(!_0x306f69)throw new Error('Task\x20ID\x20is\x20required');const _0x363464=await fetch(API_BASE+'/tasks/'+_0x306f69+'/stop',{'method':'POST'});if(!_0x363464['ok']){const _0x184507=await _0x363464['json']()['catch'](()=>({}));throw new Error(_0x184507['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x363464['statusText']);}return await _0x363464['json']();},async 'interruptTask'(_0x1f7b46){if(!_0x1f7b46)throw new Error('Task\x20ID\x20is\x20required');const _0x26c7cb=await fetch(API_BASE+'/tasks/'+_0x1f7b46+'/interrupt',{'method':'POST'});if(!_0x26c7cb['ok']){const _0xb75f71=await _0x26c7cb['json']()['catch'](()=>({}));throw new Error(_0xb75f71['error']||_0xb75f71['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x26c7cb['statusText']);}return await _0x26c7cb['json']();},async 'startTask'(_0x290c9e){if(!_0x290c9e)throw new Error('Task\x20ID\x20is\x20required');const _0x28cda7=await fetch(API_BASE+'/tasks/'+_0x290c9e+'/start',{'method':'POST'});if(!_0x28cda7['ok']){const _0x8207dd=await _0x28cda7['json']()['catch'](()=>({}));throw new Error(_0x8207dd['error']||'Failed\x20to\x20start\x20task:\x20'+_0x28cda7['statusText']);}return await _0x28cda7['json']();},async 'deleteTask'(_0x113837){if(!_0x113837)throw new Error('Task\x20ID\x20is\x20required');const _0x33034f=await fetch(API_BASE+'/tasks/'+_0x113837,{'method':'DELETE'});if(!_0x33034f['ok']){const _0x1f93be=await _0x33034f['json']()['catch'](()=>({}));throw new Error(_0x1f93be['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x33034f['statusText']);}return await _0x33034f['json']();},async 'refreshTasksFromDisk'(){const _0x833d75=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x833d75['ok']){const _0xee47dc=await _0x833d75['json']()['catch'](()=>({}));throw new Error(_0xee47dc['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x833d75['statusText']);}return await _0x833d75['json']();},async 'approveTask'(_0x3b1eda,_0x209835={}){if(!_0x3b1eda)throw new Error('Task\x20ID\x20is\x20required');const _0x196537={'commit_message':_0x209835['commit_message']||'','pull':_0x209835['pull']??![],'push':_0x209835['push']??![]};_0x209835['new_branch']&&(_0x196537['new_branch']=_0x209835['new_branch']);const _0x1190cf=await fetch(API_BASE+'/tasks/'+_0x3b1eda+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x196537)});if(!_0x1190cf['ok']){const _0x5593c3=await _0x1190cf['json']()['catch'](()=>({}));let _0x171f17=_0x5593c3['error']||_0x5593c3['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1190cf['statusText'];if(_0x5593c3['results']&&Array['isArray'](_0x5593c3['results'])){const _0x5b08b3=_0x5593c3['results']['filter'](_0xb11eb5=>!_0xb11eb5['success']&&_0xb11eb5['error']);_0x5b08b3['length']>0x0&&(_0x171f17=_0x5b08b3[0x0]['error']);}throw new Error(_0x171f17);}return await _0x1190cf['json']();},async 'getPullRequestInfo'(_0xe0f7d9){if(!_0xe0f7d9)throw new Error('Task\x20ID\x20is\x20required');const _0x44af71=await fetch(API_BASE+'/tasks/'+_0xe0f7d9+'/pull-request-info');if(!_0x44af71['ok']){const _0x8f97e7=await _0x44af71['json']()['catch'](()=>({}));throw new Error(_0x8f97e7['error']||_0x8f97e7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x44af71['statusText']);}return await _0x44af71['json']();},async 'createPullRequests'(_0x3aef5c,_0x1b4247){if(!_0x3aef5c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b4247||!Array['isArray'](_0x1b4247))throw new Error('repos\x20array\x20is\x20required');const _0x5d3ec4=await fetch(API_BASE+'/tasks/'+_0x3aef5c+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1b4247})});if(!_0x5d3ec4['ok']){const _0x4d2a1d=await _0x5d3ec4['json']()['catch'](()=>({}));let _0x4f8b3d=_0x4d2a1d['error']||_0x4d2a1d['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5d3ec4['statusText'];if(_0x4d2a1d['results']&&Array['isArray'](_0x4d2a1d['results'])){const _0xab31a2=_0x4d2a1d['results']['filter'](_0x37ac37=>!_0x37ac37['success']&&_0x37ac37['error']);_0xab31a2['length']>0x0&&(_0x4f8b3d=_0xab31a2[0x0]['error']);}throw new Error(_0x4f8b3d);}return await _0x5d3ec4['json']();},async 'syncRepos'(_0x46d6c4){if(!_0x46d6c4)throw new Error('Task\x20ID\x20is\x20required');const _0x3c87d7=await fetch(API_BASE+'/tasks/'+_0x46d6c4+'/sync-repos',{'method':'POST'});if(!_0x3c87d7['ok']){const _0x1c3f2d=await _0x3c87d7['json']()['catch'](()=>({}));throw new Error(_0x1c3f2d['error']||_0x1c3f2d['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x3c87d7['statusText']);}return await _0x3c87d7['json']();},async 'getIbmiSyncInfo'(_0x5ac157){if(!_0x5ac157)throw new Error('Task\x20ID\x20is\x20required');const _0x2a757c=await fetch(API_BASE+'/tasks/'+_0x5ac157+'/ibmi-sync-info');if(!_0x2a757c['ok']){const _0xc67cf2=await _0x2a757c['json']()['catch'](()=>({}));throw new Error(_0xc67cf2['error']||_0xc67cf2['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x2a757c['json']();},async 'syncToIbmi'(_0x55e19d,_0x2c31c6){if(!_0x55e19d)throw new Error('Task\x20ID\x20is\x20required');const _0x131a49=await fetch(API_BASE+'/tasks/'+_0x55e19d+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x2c31c6})});if(!_0x131a49['ok']){const _0x2df42c=await _0x131a49['json']()['catch'](()=>({}));throw new Error(_0x2df42c['error']||_0x2df42c['message']||'Sync\x20failed');}return await _0x131a49['json']();},async 'getIbmiSyncLog'(_0x3c9322){if(!_0x3c9322)throw new Error('Task\x20ID\x20is\x20required');const _0x517558=await fetch(API_BASE+'/tasks/'+_0x3c9322+'/ibmi-sync-log');if(!_0x517558['ok']){const _0x110b22=await _0x517558['json']()['catch'](()=>({}));throw new Error(_0x110b22['error']||_0x110b22['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x517558['json']();},async 'pullChanges'(_0x34ee58){if(!_0x34ee58)throw new Error('Task\x20ID\x20is\x20required');const _0x2d15b4=await fetch(API_BASE+'/tasks/'+_0x34ee58+'/pull-changes',{'method':'POST'});if(!_0x2d15b4['ok']){const _0x19f7c7=await _0x2d15b4['json']()['catch'](()=>({}));throw new Error(_0x19f7c7['error']||_0x19f7c7['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2d15b4['statusText']);}return await _0x2d15b4['json']();},async 'readFile'(_0x5496b0,_0x2b8427){if(!_0x5496b0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2b8427)throw new Error('File\x20path\x20is\x20required');const _0x1ebe67=await fetch(API_BASE+'/tasks/'+_0x5496b0+'/files?path='+encodeURIComponent(_0x2b8427));if(!_0x1ebe67['ok']){const _0x4bd396=await _0x1ebe67['json']()['catch'](()=>({}));throw new Error(_0x4bd396['error']||_0x4bd396['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1ebe67['statusText']);}return await _0x1ebe67['json']();},async 'writeFile'(_0x156ea1,_0xd2aa7e,_0x283c8b){if(!_0x156ea1)throw new Error('Task\x20ID\x20is\x20required');if(!_0xd2aa7e)throw new Error('File\x20path\x20is\x20required');if(_0x283c8b===undefined)throw new Error('Content\x20is\x20required');const _0x212681=await fetch(API_BASE+'/tasks/'+_0x156ea1+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xd2aa7e,'content':_0x283c8b})});if(!_0x212681['ok']){const _0x564566=await _0x212681['json']()['catch'](()=>({}));throw new Error(_0x564566['error']||_0x564566['message']||'Failed\x20to\x20write\x20file:\x20'+_0x212681['statusText']);}return await _0x212681['json']();},async 'discardFile'(_0x50a6e0,_0x4123c4,_0x1aaf9b){if(!_0x50a6e0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4123c4)throw new Error('File\x20path\x20is\x20required');if(!_0x1aaf9b)throw new Error('Repository\x20path\x20is\x20required');const _0xe5cd90=await fetch(API_BASE+'/tasks/'+_0x50a6e0+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4123c4,'repoPath':_0x1aaf9b})});if(!_0xe5cd90['ok']){const _0x27579a=await _0xe5cd90['json']()['catch'](()=>({}));throw new Error(_0x27579a['error']||_0x27579a['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xe5cd90['statusText']);}return await _0xe5cd90['json']();},async 'followUpTask'(_0x8b8d6d,_0x579975={}){if(!_0x8b8d6d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x579975['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x576fdf,_0x338a44={};if(_0x579975['files']&&_0x579975['files']['length']>0x0){const _0x2421fd=new FormData();_0x2421fd['append']('instructions',_0x579975['instructions']);for(const _0x32a668 of _0x579975['files']){_0x2421fd['append']('attachments',_0x32a668);}_0x576fdf=_0x2421fd;}else _0x338a44['Content-Type']='application/json',_0x576fdf=JSON['stringify']({'instructions':_0x579975['instructions']});const _0xb7ed23=await fetch(API_BASE+'/tasks/'+_0x8b8d6d+'/follow-up',{'method':'POST','headers':_0x338a44,'body':_0x576fdf});if(!_0xb7ed23['ok']){const _0x401b88=await _0xb7ed23['json']()['catch'](()=>({}));throw new Error(_0x401b88['error']||_0x401b88['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xb7ed23['statusText']);}return await _0xb7ed23['json']();},async 'getTaskRewindPoints'(_0x261e65){if(!_0x261e65)throw new Error('Task\x20ID\x20is\x20required');const _0x177911=await fetch(API_BASE+'/tasks/'+_0x261e65+'/rewind-points');if(!_0x177911['ok']){const _0x771815=await _0x177911['json']()['catch'](()=>({}));throw new Error(_0x771815['error']||_0x771815['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x177911['statusText']);}return await _0x177911['json']();},async 'rewindTask'(_0x3e6582,_0x3a5756={}){if(!_0x3e6582)throw new Error('Task\x20ID\x20is\x20required');const _0x2a6e90=Number['isInteger'](_0x3a5756['targetFollowUpCount'])?_0x3a5756['targetFollowUpCount']:0x0,_0x188163={'targetFollowUpCount':_0x2a6e90};typeof _0x3a5756['instructions']==='string'&&_0x3a5756['instructions']['trim']()&&(_0x188163['instructions']=_0x3a5756['instructions']['trim']());typeof _0x3a5756['rewindFiles']==='boolean'&&(_0x188163['rewindFiles']=_0x3a5756['rewindFiles']);const _0x460ffd=await fetch(API_BASE+'/tasks/'+_0x3e6582+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x188163)});if(!_0x460ffd['ok']){const _0x10bf12=await _0x460ffd['json']()['catch'](()=>({}));throw new Error(_0x10bf12['error']||_0x10bf12['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x460ffd['statusText']);}return await _0x460ffd['json']();},async 'login'(_0x4465d7,_0x1fc215){const _0x5c59f9=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4465d7,'password':_0x1fc215})});if(!_0x5c59f9['ok']){const _0x3d607f=await _0x5c59f9['json']();throw new Error(_0x3d607f['message']||'Login\x20failed');}return await _0x5c59f9['json']();},async 'logout'(){const _0x3ef471=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x3ef471['ok']){const _0x21bd23=await _0x3ef471['json']();throw new Error(_0x21bd23['message']||'Logout\x20failed');}return await _0x3ef471['json']();},async 'getCurrentUser'(){const _0x41a2c2=await fetch(API_BASE+'/auth/me');if(!_0x41a2c2['ok'])throw new Error('Not\x20authenticated');const _0x435404=await _0x41a2c2['json']();return _0x435404['user'];},async 'getRolesInfo'(){const _0x499895=await fetch(API_BASE+'/users/roles');if(!_0x499895['ok']){const _0x3a6b15=await _0x499895['json']();throw new Error(_0x3a6b15['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x499895['json']();},async 'getUsers'(){const _0x45a0c6=await fetch(API_BASE+'/users');if(!_0x45a0c6['ok']){const _0x1ca5ee=await _0x45a0c6['json']();throw new Error(_0x1ca5ee['message']||'Failed\x20to\x20get\x20users');}return await _0x45a0c6['json']();},async 'getUser'(_0x58fb5f){const _0x160921=await fetch(API_BASE+'/users/'+_0x58fb5f);if(!_0x160921['ok']){const _0x547289=await _0x160921['json']();throw new Error(_0x547289['message']||'Failed\x20to\x20get\x20user');}return await _0x160921['json']();},async 'createUser'(_0x2b1dfb){const _0x51ac60=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b1dfb)});if(!_0x51ac60['ok']){const _0x46e0f4=await _0x51ac60['json']();throw new Error(_0x46e0f4['message']||'Failed\x20to\x20create\x20user');}return await _0x51ac60['json']();},async 'updateUser'(_0x496115,_0x143106){const _0x5e8727=await fetch(API_BASE+'/users/'+_0x496115,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x143106)});if(!_0x5e8727['ok']){const _0x55b5bc=await _0x5e8727['json']();throw new Error(_0x55b5bc['message']||'Failed\x20to\x20update\x20user');}return await _0x5e8727['json']();},async 'deleteUser'(_0x1e887a){const _0x6a92b7=await fetch(API_BASE+'/users/'+_0x1e887a,{'method':'DELETE'});if(!_0x6a92b7['ok']){const _0x4a0dd5=await _0x6a92b7['json']();throw new Error(_0x4a0dd5['message']||'Failed\x20to\x20delete\x20user');}return await _0x6a92b7['json']();},async 'stopAllContainers'(){const _0x1e07c1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x121433=await _0x1e07c1['json']()['catch'](()=>({}));if(!_0x1e07c1['ok'])throw new Error(_0x121433['message']||_0x121433['error']||'Failed\x20to\x20stop\x20containers');return _0x121433;},async 'removeStoppedContainers'(){const _0xa325f9=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x321ac7=await _0xa325f9['json']()['catch'](()=>({}));if(!_0xa325f9['ok'])throw new Error(_0x321ac7['message']||_0x321ac7['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x321ac7;},async 'pruneDockerResources'(){const _0x504b49=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x1e4e79=await _0x504b49['json']()['catch'](()=>({}));if(!_0x504b49['ok'])throw new Error(_0x1e4e79['message']||_0x1e4e79['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x1e4e79;},async 'createPasswordToken'(_0x34cdf9,_0x35f4b5='setup',_0xf9abee=![]){const _0x307d9a=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x34cdf9,'type':_0x35f4b5,'sendEmail':_0xf9abee})});if(!_0x307d9a['ok']){const _0x3b5e25=await _0x307d9a['json']();throw new Error(_0x3b5e25['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x307d9a['json']();},async 'getEmailConfig'(){const _0x556ef5=await fetch(API_BASE+'/password/email-config');if(!_0x556ef5['ok']){const _0x441288=await _0x556ef5['json']();throw new Error(_0x441288['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x556ef5['json']();},async 'updateTaskName'(_0x507fda,_0x1c8bbb){const _0xe92308=await fetch(API_BASE+'/tasks/'+_0x507fda,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1c8bbb})});if(!_0xe92308['ok']){const _0x531e37=await _0xe92308['json']();throw new Error(_0x531e37['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xe92308['json']();},async 'pinTask'(_0xe51b0b,_0x15cf32,_0xa1dd61=null){if(!_0xe51b0b)throw new Error('Task\x20ID\x20is\x20required');const _0x51767f={'pinned':_0x15cf32};_0xa1dd61&&_0xa1dd61['length']>0x0&&(_0x51767f['additionalTaskIds']=_0xa1dd61);const _0x5a0015=await fetch(API_BASE+'/tasks/'+_0xe51b0b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51767f)});if(!_0x5a0015['ok']){const _0x4b4b51=await _0x5a0015['json']();throw new Error(_0x4b4b51['error']||'Failed\x20to\x20pin\x20task');}return await _0x5a0015['json']();},async 'setTaskWinner'(_0x401361,_0x5dc3ff,_0x19519a=[]){if(!_0x401361)throw new Error('Task\x20ID\x20is\x20required');const _0x111da1=await fetch(API_BASE+'/tasks/'+_0x401361+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x5dc3ff,'siblings':_0x19519a})});if(!_0x111da1['ok']){const _0xa3254d=await _0x111da1['json']();throw new Error(_0xa3254d['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x111da1['json']();},async 'setTaskLoser'(_0x419753,_0x5d07c9){if(!_0x419753)throw new Error('Task\x20ID\x20is\x20required');const _0x50c0d0=await fetch(API_BASE+'/tasks/'+_0x419753+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5d07c9})});if(!_0x50c0d0['ok']){const _0x3fac94=await _0x50c0d0['json']();throw new Error(_0x3fac94['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x50c0d0['json']();},async 'createTaskGroup'(_0x574e81){const _0x58598d=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x574e81)});if(!_0x58598d['ok']){const _0x3fcb11=await _0x58598d['json']();throw new Error(_0x3fcb11['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x58598d['json']();},async 'getTaskGroups'(_0x43f44d={}){const _0x679e5d=new URLSearchParams();if(_0x43f44d['userId'])_0x679e5d['set']('userId',String(_0x43f44d['userId']));if(_0x43f44d['status'])_0x679e5d['set']('status',String(_0x43f44d['status']));if(_0x43f44d['limit'])_0x679e5d['set']('limit',String(_0x43f44d['limit']));const _0x1cdfd7=API_BASE+'/tasks/groups'+(_0x679e5d['toString']()?'?'+_0x679e5d['toString']():''),_0x163e65=await fetch(_0x1cdfd7);if(!_0x163e65['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x163e65['json']();},async 'getTaskGroup'(_0x1a405e){const _0x51e46b=await fetch(API_BASE+'/tasks/groups/'+_0x1a405e);if(!_0x51e46b['ok']){const _0x41169b=await _0x51e46b['json']();throw new Error(_0x41169b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x51e46b['json']();},async 'updateTaskGroup'(_0x30b788,_0x4f3062,_0x3e87ed){const _0x52fe91=await fetch(API_BASE+'/tasks/'+_0x30b788+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4f3062,'groupIndex':_0x3e87ed})});if(!_0x52fe91['ok']){const _0x1581f5=await _0x52fe91['json']();throw new Error(_0x1581f5['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x52fe91['json']();},async 'removeTaskFromGroup'(_0x1bf3cc){return this['updateTaskGroup'](_0x1bf3cc,null,null);},async 'deleteTaskGroup'(_0x409217,_0x46edd9=![]){const _0x404425=_0x46edd9?'?deleteTasks=true':'',_0x34bdeb=await fetch(API_BASE+'/tasks/groups/'+_0x409217+_0x404425,{'method':'DELETE'});if(!_0x34bdeb['ok']){const _0x24c940=await _0x34bdeb['json']();throw new Error(_0x24c940['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x1ace7c,_0x4a92c6){const _0x5ee3bb=await fetch(API_BASE+'/tasks/groups/'+_0x1ace7c+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4a92c6})});if(!_0x5ee3bb['ok']){const _0x47da47=await _0x5ee3bb['json']();throw new Error(_0x47da47['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x5ee3bb['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3f5090){if(!_0x3f5090)throw new Error('Task\x20ID\x20is\x20required');const _0x4827e7=await fetch(API_BASE+'/tasks/'+_0x3f5090+'/comments');if(!_0x4827e7['ok']){const _0x476f87=await _0x4827e7['json']()['catch'](()=>({}));throw new Error(_0x476f87['error']||'Failed\x20to\x20get\x20comments');}return await _0x4827e7['json']();},async 'addComment'(_0x54d1d8,_0x4ffabc){if(!_0x54d1d8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ffabc)throw new Error('Comment\x20content\x20is\x20required');const _0x111551=await fetch(API_BASE+'/tasks/'+_0x54d1d8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4ffabc})});if(!_0x111551['ok']){const _0x10dd06=await _0x111551['json']()['catch'](()=>({}));throw new Error(_0x10dd06['error']||'Failed\x20to\x20add\x20comment');}return await _0x111551['json']();},async 'updateComment'(_0x124739,_0x356c98,_0x4b8d63){if(!_0x124739)throw new Error('Task\x20ID\x20is\x20required');if(!_0x356c98)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4b8d63)throw new Error('Comment\x20content\x20is\x20required');const _0x367327=await fetch(API_BASE+'/tasks/'+_0x124739+'/comments/'+_0x356c98,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b8d63})});if(!_0x367327['ok']){const _0x3569ff=await _0x367327['json']()['catch'](()=>({}));throw new Error(_0x3569ff['error']||'Failed\x20to\x20update\x20comment');}return await _0x367327['json']();},async 'deleteComment'(_0x9f98b3,_0x2c9ef9){if(!_0x9f98b3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c9ef9)throw new Error('Comment\x20ID\x20is\x20required');const _0xb23cdf=await fetch(API_BASE+'/tasks/'+_0x9f98b3+'/comments/'+_0x2c9ef9,{'method':'DELETE'});if(!_0xb23cdf['ok']){const _0x3339e5=await _0xb23cdf['json']()['catch'](()=>({}));throw new Error(_0x3339e5['error']||'Failed\x20to\x20delete\x20comment');}return await _0xb23cdf['json']();},async 'createObjective'(_0x3168e7){const _0x18af8d={'objective':!![],'name':_0x3168e7['name']||'','environment':_0x3168e7['environment']||null,'agents':_0x3168e7['agents']||[],'branches':_0x3168e7['branches']||{},'isPinned':_0x3168e7['isPinned']||![],'parentObjectiveId':_0x3168e7['parentObjectiveId']||null,'env_vars':_0x3168e7['envVars']||{},'parameters':{'instructions':_0x3168e7['instructions']||''},'files':_0x3168e7['files']||[],'jira':_0x3168e7['jira']||null};return this['createTask'](_0x18af8d);},async 'updateObjective'(_0x64978d,_0x160e6d,_0x2c8f4f=[],_0x3d7cc9=[]){let _0x2e4ee7,_0x390736={};const _0x5698b8={..._0x160e6d};_0x3d7cc9&&_0x3d7cc9['length']>0x0&&(_0x5698b8['removeAttachments']=_0x3d7cc9);if(_0x2c8f4f&&_0x2c8f4f['length']>0x0){const _0x2cceec=new FormData();for(const [_0x151822,_0x5c3058]of Object['entries'](_0x5698b8)){if(_0x5c3058==null)continue;typeof _0x5c3058==='object'?_0x2cceec['append'](_0x151822,JSON['stringify'](_0x5c3058)):_0x2cceec['append'](_0x151822,String(_0x5c3058));}for(const _0x2b2679 of _0x2c8f4f){_0x2cceec['append']('attachments',_0x2b2679);}_0x2e4ee7=_0x2cceec;}else _0x390736['Content-Type']='application/json',_0x2e4ee7=JSON['stringify'](_0x5698b8);const _0x57dcef=await fetch(API_BASE+'/tasks/'+_0x64978d,{'method':'PATCH','headers':_0x390736,'body':_0x2e4ee7});if(!_0x57dcef['ok']){const _0x20102b=await _0x57dcef['json']();throw new Error(_0x20102b['error']||'Failed\x20to\x20update\x20objective');}return await _0x57dcef['json']();},async 'deleteObjective'(_0x3ad508){return this['deleteTask'](_0x3ad508);},async 'launchObjective'(_0x181319,_0xad8c6b={}){const _0x582886=await fetch(API_BASE+'/tasks/'+_0x181319+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xad8c6b)});if(!_0x582886['ok']){const _0x4cb814=await _0x582886['json']();throw new Error(_0x4cb814['error']||'Failed\x20to\x20launch\x20objective');}return await _0x582886['json']();},async 'getObjectiveAttachments'(_0x3d705d){return this['getTaskAttachments'](_0x3d705d);},async 'createJudgeTask'({environment:_0x59e9aa,judgeAgent:_0x7533b3,groupId:_0x1098a3,taskIds:_0x177fb4,judgeCustomInstructions:_0x19902c,isPinned:_0x9424ca}){const _0x27ecf0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x59e9aa,'judgeAgent':_0x7533b3,'groupId':_0x1098a3,'taskIds':_0x177fb4,'judgeCustomInstructions':_0x19902c,'isPinned':_0x9424ca})});if(!_0x27ecf0['ok']){const _0x14930a=await _0x27ecf0['json']();throw new Error(_0x14930a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x27ecf0['json']();},async 'getJudgeTasks'(_0x30c894){const _0x373500=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x30c894));if(!_0x373500['ok']){const _0x341675=await _0x373500['json']();throw new Error(_0x341675['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x373500['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x170e83,_0x2356ae,_0xf380ff=''){const _0x227405=await fetch(API_BASE+'/tasks/'+_0x170e83+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2356ae,'customPreamble':_0xf380ff})});if(!_0x227405['ok']){const _0x1f4cef=await _0x227405['json']();throw new Error(_0x1f4cef['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x227405['json']();},async 'getJiraConfig'(){const _0x2f0262=await fetch(API_BASE+'/jira/config');if(!_0x2f0262['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2f0262['json']();},async 'getJiraIssue'(_0x2a45f5){const _0x1f36f6=await fetch(API_BASE+'/jira/issues/'+_0x2a45f5);if(!_0x1f36f6['ok']){const _0x39e31a=await _0x1f36f6['json']()['catch'](()=>({}));throw new Error(_0x39e31a['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1f36f6['statusText']);}return await _0x1f36f6['json']();},async 'searchJiraIssues'(_0x4f6cb2,_0x160144=0x14){const _0x2026b3=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x4f6cb2,'maxResults':_0x160144})});if(!_0x2026b3['ok']){const _0x51438f=await _0x2026b3['json']()['catch'](()=>({}));throw new Error(_0x51438f['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x2026b3['statusText']);}return await _0x2026b3['json']();},async 'postJiraComment'(_0x4f069d,_0x5e3ce5){const _0x134443=await fetch(API_BASE+'/jira/issues/'+_0x4f069d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5e3ce5})});if(!_0x134443['ok']){const _0x19d8d7=await _0x134443['json']()['catch'](()=>({}));throw new Error(_0x19d8d7['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x134443['statusText']);}return await _0x134443['json']();},async 'getJiraComments'(_0x30070e){const _0x1f78e6=await fetch(API_BASE+'/jira/issues/'+_0x30070e+'/comments');if(!_0x1f78e6['ok']){const _0x4bc2e3=await _0x1f78e6['json']()['catch'](()=>({}));throw new Error(_0x4bc2e3['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f78e6['statusText']);}return await _0x1f78e6['json']();},async 'promptParameter'({environment:_0x1acf72,command:_0x2b12d8,parser:parser='json'}){const _0x179922=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1acf72,'command':_0x2b12d8,'parser':parser})});if(!_0x179922['ok']){const _0x12bab5=await _0x179922['json']()['catch'](()=>({}));throw new Error(_0x12bab5['message']||_0x12bab5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x179922['statusText']);}return await _0x179922['json']();},async 'promptParameterStream'(_0x40e558,_0x1a9e59){const _0x492c35=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40e558)});if(!_0x492c35['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x492c35['statusText']);const _0x2fd8ea=_0x492c35['body']['getReader'](),_0x44fa66=new TextDecoder();let _0x2f1464='';return new Promise((_0x25a7f5,_0x16a7c4)=>{const _0x4ba1ea=async()=>{try{const {done:_0xcbcadd,value:_0x52f231}=await _0x2fd8ea['read']();if(_0xcbcadd)return;_0x2f1464+=_0x44fa66['decode'](_0x52f231,{'stream':!![]});const _0x2f7552=_0x2f1464['split']('\x0a\x0a');_0x2f1464=_0x2f7552['pop']()||'';for(const _0x246e11 of _0x2f7552){if(!_0x246e11['trim']())continue;const _0x55fda2=_0x246e11['split']('\x0a');let _0x259870='message',_0x5afc4f='';for(const _0x5d86d7 of _0x55fda2){if(_0x5d86d7['startsWith']('event:'))_0x259870=_0x5d86d7['substring'](0x6)['trim']();else _0x5d86d7['startsWith']('data:')&&(_0x5afc4f=_0x5d86d7['substring'](0x5)['trim']());}if(!_0x5afc4f)continue;try{const _0x2f4edb=JSON['parse'](_0x5afc4f);if(_0x259870==='progress'&&_0x1a9e59)_0x1a9e59(_0x2f4edb['stage'],_0x2f4edb['message']);else{if(_0x259870==='result'){_0x25a7f5(_0x2f4edb);return;}else{if(_0x259870==='error'){let _0x11d662=_0x2f4edb['message']||_0x2f4edb['error']||'Prompt\x20command\x20failed';_0x2f4edb['rawOutput']&&(_0x11d662+='\x0a\x0aRaw\x20output:\x0a'+_0x2f4edb['rawOutput']);_0x16a7c4(new Error(_0x11d662));return;}}}}catch(_0x81aaf7){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x81aaf7),console['error']('Event\x20type:',_0x259870),console['error']('Event\x20data:',_0x5afc4f),console['error']('First\x20200\x20chars:',_0x5afc4f['substring'](0x0,0xc8)),_0x16a7c4(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x81aaf7['message']+'\x0a\x0aData:\x20'+_0x5afc4f['substring'](0x0,0x1f4)));return;}}_0x4ba1ea();}catch(_0x46bd6d){_0x16a7c4(_0x46bd6d);}};_0x4ba1ea();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xe14c4e){const _0x3186f9=await fetch(''+API_BASE+_0xe14c4e);if(!_0x3186f9['ok']){const _0x7bf539=await _0x3186f9['json']()['catch'](()=>({'error':_0x3186f9['statusText']})),_0x39e05b=new Error(_0x7bf539['error']||_0x7bf539['message']||_0x3186f9['statusText']);if(_0x7bf539['detail']!==undefined)_0x39e05b['detail']=_0x7bf539['detail'];throw _0x39e05b;}return await _0x3186f9['json']();},async 'post'(_0x15d96e,_0xb5a306){const _0x55f00f=await fetch(''+API_BASE+_0x15d96e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb5a306)});if(!_0x55f00f['ok']){const _0x1c5735=await _0x55f00f['json']()['catch'](()=>({'error':_0x55f00f['statusText']})),_0x3672f1=new Error(_0x1c5735['error']||_0x1c5735['message']||_0x55f00f['statusText']);if(_0x1c5735['detail']!==undefined)_0x3672f1['detail']=_0x1c5735['detail'];throw _0x3672f1;}return await _0x55f00f['json']();},async 'put'(_0x30fb8e,_0x3cf1ab){const _0x229f6a=await fetch(''+API_BASE+_0x30fb8e,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3cf1ab)});if(!_0x229f6a['ok']){const _0x3da4ff=await _0x229f6a['json']()['catch'](()=>({'error':_0x229f6a['statusText']})),_0x1f5b38=new Error(_0x3da4ff['error']||_0x3da4ff['message']||_0x229f6a['statusText']);if(_0x3da4ff['detail']!==undefined)_0x1f5b38['detail']=_0x3da4ff['detail'];throw _0x1f5b38;}return await _0x229f6a['json']();},async 'delete'(_0x20bf8c,_0x463a07){const _0x4a23ba={'method':'DELETE'};_0x463a07&&(_0x4a23ba['headers']={'Content-Type':'application/json'},_0x4a23ba['body']=JSON['stringify'](_0x463a07));const _0x5141dc=await fetch(''+API_BASE+_0x20bf8c,_0x4a23ba);if(!_0x5141dc['ok']){const _0x499311=await _0x5141dc['json']()['catch'](()=>({'error':_0x5141dc['statusText']})),_0x149d09=new Error(_0x499311['error']||_0x499311['message']||_0x5141dc['statusText']);if(_0x499311['detail']!==undefined)_0x149d09['detail']=_0x499311['detail'];throw _0x149d09;}return await _0x5141dc['json']();},async 'getSkills'(){const _0x36156=await fetch(API_BASE+'/skills');if(!_0x36156['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x36156['statusText']);return await _0x36156['json']();},async 'getSkill'(_0x4fdd84){const _0x152aea=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4fdd84));if(!_0x152aea['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x152aea['statusText']);return await _0x152aea['json']();},async 'createSkill'(_0x2317be){const _0x3d0a42=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2317be)});if(!_0x3d0a42['ok']){const _0xfaaefb=await _0x3d0a42['json']()['catch'](()=>({'error':_0x3d0a42['statusText']})),_0x2b6d28=new Error(_0xfaaefb['error']||_0xfaaefb['message']||_0x3d0a42['statusText']);if(_0xfaaefb['detail']!==undefined)_0x2b6d28['detail']=_0xfaaefb['detail'];throw _0x2b6d28;}return await _0x3d0a42['json']();},async 'updateSkill'(_0x115d64,_0x24d9b0){const _0x18b6b9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x115d64),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24d9b0)});if(!_0x18b6b9['ok']){const _0x2fdd40=await _0x18b6b9['json']()['catch'](()=>({'error':_0x18b6b9['statusText']})),_0xbabca3=new Error(_0x2fdd40['error']||_0x2fdd40['message']||_0x18b6b9['statusText']);if(_0x2fdd40['detail']!==undefined)_0xbabca3['detail']=_0x2fdd40['detail'];throw _0xbabca3;}return await _0x18b6b9['json']();},async 'deleteSkill'(_0x208d96){const _0x58b7cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x208d96),{'method':'DELETE'});if(!_0x58b7cc['ok']){const _0x4edb97=await _0x58b7cc['json']()['catch'](()=>({'error':_0x58b7cc['statusText']})),_0x4f6730=new Error(_0x4edb97['error']||_0x4edb97['message']||_0x58b7cc['statusText']);if(_0x4edb97['detail']!==undefined)_0x4f6730['detail']=_0x4edb97['detail'];throw _0x4f6730;}return await _0x58b7cc['json']();},async 'getSkillFile'(_0x438f12,_0x4210c3){const _0x33877a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x438f12)+'/files/'+_0x4210c3);if(!_0x33877a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x33877a['statusText']);return await _0x33877a['json']();},async 'saveSkillFile'(_0x384262,_0xbd5330,_0x5b38be){const _0x3d64d2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x384262)+'/files/'+_0xbd5330,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x5b38be})});if(!_0x3d64d2['ok']){const _0x52d5e5=await _0x3d64d2['json']()['catch'](()=>({'error':_0x3d64d2['statusText']})),_0x1e9953=new Error(_0x52d5e5['error']||_0x52d5e5['message']||_0x3d64d2['statusText']);if(_0x52d5e5['detail']!==undefined)_0x1e9953['detail']=_0x52d5e5['detail'];throw _0x1e9953;}return await _0x3d64d2['json']();},async 'deleteSkillFile'(_0x214043,_0x27932d){const _0x4e1168=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x214043)+'/files/'+_0x27932d,{'method':'DELETE'});if(!_0x4e1168['ok']){const _0x9b7116=await _0x4e1168['json']()['catch'](()=>({'error':_0x4e1168['statusText']})),_0x19d9c7=new Error(_0x9b7116['error']||_0x9b7116['message']||_0x4e1168['statusText']);if(_0x9b7116['detail']!==undefined)_0x19d9c7['detail']=_0x9b7116['detail'];throw _0x19d9c7;}return await _0x4e1168['json']();},async 'pullSkills'(){const _0x55c229=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x55c229['ok']){const _0x199265=await _0x55c229['json']()['catch'](()=>({'error':_0x55c229['statusText']})),_0x254f5d=new Error(_0x199265['error']||_0x199265['message']||_0x55c229['statusText']);if(_0x199265['detail']!==undefined)_0x254f5d['detail']=_0x199265['detail'];throw _0x254f5d;}return await _0x55c229['json']();},async 'commitSkills'(_0x2a65f0,_0x5abd5a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x5abd5a,_0x2ff51b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x2a65f0,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2ff51b['ok']){const _0x400cef=await _0x2ff51b['json']()['catch'](()=>({'error':_0x2ff51b['statusText']})),_0x3617b1=new Error(_0x400cef['error']||_0x400cef['message']||_0x2ff51b['statusText']);if(_0x400cef['detail']!==undefined)_0x3617b1['detail']=_0x400cef['detail'];throw _0x3617b1;}return await _0x2ff51b['json']();},async 'discardSkillsChanges'(){const _0x2cb581=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x2cb581['ok']){const _0x15fe10=await _0x2cb581['json']()['catch'](()=>({'error':_0x2cb581['statusText']})),_0x2e0336=new Error(_0x15fe10['error']||_0x15fe10['message']||_0x2cb581['statusText']);if(_0x15fe10['detail']!==undefined)_0x2e0336['detail']=_0x15fe10['detail'];throw _0x2e0336;}return await _0x2cb581['json']();},async 'getSkillCatalog'(){const _0x2ae89d=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ae89d['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ae89d['statusText']);return await _0x2ae89d['json']();},async 'getImportedSkillsRegistry'(){const _0x408d64=await fetch(API_BASE+'/external-skills/registry');if(!_0x408d64['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x408d64['statusText']);return await _0x408d64['json']();},async 'importCatalogSkill'(_0x3bb913){const _0x187f2e=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x3bb913})});if(!_0x187f2e['ok']){const _0x1f8d86=await _0x187f2e['json']()['catch'](()=>({'error':_0x187f2e['statusText']})),_0x1db6ae=new Error(_0x1f8d86['error']||_0x1f8d86['message']||_0x187f2e['statusText']);if(_0x1f8d86['detail']!==undefined)_0x1db6ae['detail']=_0x1f8d86['detail'];throw _0x1db6ae;}return await _0x187f2e['json']();},async 'importSkillFromGit'(_0x31f80e,_0x356de5,_0x491d8b='main',_0x5a34ca=null){const _0x3f5941=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x31f80e,'skillPath':_0x356de5,'branch':_0x491d8b,'skillId':_0x5a34ca})});if(!_0x3f5941['ok']){const _0x664a78=await _0x3f5941['json']()['catch'](()=>({'error':_0x3f5941['statusText']})),_0x62c0a8=new Error(_0x664a78['error']||_0x664a78['message']||_0x3f5941['statusText']);if(_0x664a78['detail']!==undefined)_0x62c0a8['detail']=_0x664a78['detail'];throw _0x62c0a8;}return await _0x3f5941['json']();},async 'probeMarketplace'(_0x395495,_0x111ce2='main'){const _0xab5641=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x395495,'branch':_0x111ce2})});if(!_0xab5641['ok']){const _0x3a96c8=await _0xab5641['json']()['catch'](()=>({'error':_0xab5641['statusText']})),_0x53ceb5=new Error(_0x3a96c8['error']||_0x3a96c8['message']||_0xab5641['statusText']);if(_0x3a96c8['detail']!==undefined)_0x53ceb5['detail']=_0x3a96c8['detail'];throw _0x53ceb5;}return await _0xab5641['json']();},async 'importMarketplaceBundle'(_0x24b3ad,_0xddae8d,_0x321700,_0x28d0d0=null){const _0x5422d7=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x24b3ad,'branch':_0xddae8d,'bundleId':_0x321700,'selectedSkills':_0x28d0d0})});if(!_0x5422d7['ok']){const _0x4dea6a=await _0x5422d7['json']()['catch'](()=>({'error':_0x5422d7['statusText']})),_0x2f88db=new Error(_0x4dea6a['error']||_0x4dea6a['message']||_0x5422d7['statusText']);if(_0x4dea6a['detail']!==undefined)_0x2f88db['detail']=_0x4dea6a['detail'];throw _0x2f88db;}return await _0x5422d7['json']();},async 'importSkillFromFolder'(_0x15f66e,_0x43cda5=null){const _0x4d4968=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x15f66e,'skillId':_0x43cda5})});if(!_0x4d4968['ok']){const _0x9035fe=await _0x4d4968['json']()['catch'](()=>({'error':_0x4d4968['statusText']})),_0x3a5b46=new Error(_0x9035fe['error']||_0x9035fe['message']||_0x4d4968['statusText']);if(_0x9035fe['detail']!==undefined)_0x3a5b46['detail']=_0x9035fe['detail'];throw _0x3a5b46;}return await _0x4d4968['json']();},async 'importSkillFromNpm'(_0x3713d6,_0x5c93cb='latest',_0x510a69=null,_0x39a3cb=null){const _0x37edc1=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3713d6,'version':_0x5c93cb,'skillId':_0x510a69,'registry':_0x39a3cb})});if(!_0x37edc1['ok']){const _0x53e47d=await _0x37edc1['json']()['catch'](()=>({'error':_0x37edc1['statusText']})),_0x13c3ba=new Error(_0x53e47d['error']||_0x53e47d['message']||_0x37edc1['statusText']);if(_0x53e47d['detail']!==undefined)_0x13c3ba['detail']=_0x53e47d['detail'];throw _0x13c3ba;}return await _0x37edc1['json']();},async 'checkSkillUpdates'(_0x57c361){const _0xa4a8fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x57c361)+'/check-updates',{'method':'POST'});if(!_0xa4a8fd['ok']){const _0x55d25d=await _0xa4a8fd['json']()['catch'](()=>({'error':_0xa4a8fd['statusText']})),_0x19aff3=new Error(_0x55d25d['error']||_0x55d25d['message']||_0xa4a8fd['statusText']);if(_0x55d25d['detail']!==undefined)_0x19aff3['detail']=_0x55d25d['detail'];throw _0x19aff3;}return await _0xa4a8fd['json']();},async 'updateExternalSkill'(_0x48dd58){const _0x4661b9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48dd58)+'/update',{'method':'POST'});if(!_0x4661b9['ok']){const _0x1936d1=await _0x4661b9['json']()['catch'](()=>({'error':_0x4661b9['statusText']})),_0x141879=new Error(_0x1936d1['error']||_0x1936d1['message']||_0x4661b9['statusText']);if(_0x1936d1['detail']!==undefined)_0x141879['detail']=_0x1936d1['detail'];throw _0x141879;}return await _0x4661b9['json']();},async 'updateSkillFlags'(_0x2e3ed1,_0x32cbb9){const _0xe9958f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2e3ed1)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x32cbb9})});if(!_0xe9958f['ok']){const _0x31c781=await _0xe9958f['json']()['catch'](()=>({'error':_0xe9958f['statusText']})),_0x10d234=new Error(_0x31c781['error']||_0x31c781['message']||_0xe9958f['statusText']);if(_0x31c781['detail']!==undefined)_0x10d234['detail']=_0x31c781['detail'];throw _0x10d234;}return await _0xe9958f['json']();},async 'removeFromImportedRegistry'(_0x45646e){const _0x10ad1e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x45646e)+'/registry',{'method':'DELETE'});if(!_0x10ad1e['ok']){const _0xf36b26=await _0x10ad1e['json']()['catch'](()=>({'error':_0x10ad1e['statusText']})),_0x38cd5a=new Error(_0xf36b26['error']||_0xf36b26['message']||_0x10ad1e['statusText']);if(_0xf36b26['detail']!==undefined)_0x38cd5a['detail']=_0xf36b26['detail'];throw _0x38cd5a;}return await _0x10ad1e['json']();},async 'getTeams'(){const _0x17227d=await fetch(API_BASE+'/teams');if(!_0x17227d['ok']){const _0x114b97=await _0x17227d['json']()['catch'](()=>({'message':_0x17227d['statusText']}));throw new Error(_0x114b97['message']||'Failed\x20to\x20get\x20teams');}return await _0x17227d['json']();},async 'getTeam'(_0x55c3f9){const _0x4448f7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55c3f9));if(!_0x4448f7['ok']){const _0x7c5293=await _0x4448f7['json']()['catch'](()=>({'message':_0x4448f7['statusText']}));throw new Error(_0x7c5293['message']||'Failed\x20to\x20get\x20team');}return await _0x4448f7['json']();},async 'createTeam'(_0x4d5cd1){const _0x2c1ce3=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4d5cd1)});if(!_0x2c1ce3['ok']){const _0x84e0f0=await _0x2c1ce3['json']()['catch'](()=>({'message':_0x2c1ce3['statusText']}));throw new Error(_0x84e0f0['message']||'Failed\x20to\x20create\x20team');}return await _0x2c1ce3['json']();},async 'updateTeam'(_0x6c8258,_0x59dc0b){const _0x36c4d4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x6c8258),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59dc0b)});if(!_0x36c4d4['ok']){const _0x9b1602=await _0x36c4d4['json']()['catch'](()=>({'message':_0x36c4d4['statusText']}));throw new Error(_0x9b1602['message']||'Failed\x20to\x20update\x20team');}return await _0x36c4d4['json']();},async 'deleteTeam'(_0x4f4e34){const _0x3d0b65=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4f4e34),{'method':'DELETE'});if(!_0x3d0b65['ok']){const _0x13a412=await _0x3d0b65['json']()['catch'](()=>({'message':_0x3d0b65['statusText']}));throw new Error(_0x13a412['message']||'Failed\x20to\x20delete\x20team');}return await _0x3d0b65['json']();},async 'addTeamMember'(_0x46fd88,_0x15e4d9){const _0xd4316=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x46fd88)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x15e4d9})});if(!_0xd4316['ok']){const _0x56dec8=await _0xd4316['json']()['catch'](()=>({'message':_0xd4316['statusText']}));throw new Error(_0x56dec8['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xd4316['json']();},async 'removeTeamMember'(_0x5a4859,_0xc79b6c){const _0x4d1bd7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5a4859)+'/members/'+encodeURIComponent(_0xc79b6c),{'method':'DELETE'});if(!_0x4d1bd7['ok']){const _0x50ac20=await _0x4d1bd7['json']()['catch'](()=>({'message':_0x4d1bd7['statusText']}));throw new Error(_0x50ac20['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4d1bd7['json']();},async 'getBindings'(_0x1c6a8b={}){const _0x1ebed8=new URLSearchParams();if(_0x1c6a8b['resource_type'])_0x1ebed8['set']('resource_type',_0x1c6a8b['resource_type']);if(_0x1c6a8b['resource_id'])_0x1ebed8['set']('resource_id',_0x1c6a8b['resource_id']);if(_0x1c6a8b['subject_type'])_0x1ebed8['set']('subject_type',_0x1c6a8b['subject_type']);if(_0x1c6a8b['subject_id'])_0x1ebed8['set']('subject_id',_0x1c6a8b['subject_id']);const _0x30f54d=_0x1ebed8['toString'](),_0x31b597=await fetch(API_BASE+'/bindings'+(_0x30f54d?'?'+_0x30f54d:''));if(!_0x31b597['ok']){const _0x3c96c6=await _0x31b597['json']()['catch'](()=>({'message':_0x31b597['statusText']}));throw new Error(_0x3c96c6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x31b597['json']();},async 'createBinding'(_0x2ed525){const _0x425364=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ed525)});if(!_0x425364['ok']){const _0x40936a=await _0x425364['json']()['catch'](()=>({'message':_0x425364['statusText']}));throw new Error(_0x40936a['message']||'Failed\x20to\x20create\x20binding');}return await _0x425364['json']();},async 'updateBinding'(_0xe712dd,_0xd8d5cf){const _0x19f15e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xe712dd),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd8d5cf)});if(!_0x19f15e['ok']){const _0x5196d2=await _0x19f15e['json']()['catch'](()=>({'message':_0x19f15e['statusText']}));throw new Error(_0x5196d2['message']||'Failed\x20to\x20update\x20binding');}return await _0x19f15e['json']();},async 'deleteBinding'(_0x1131a9){const _0xdae682=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1131a9),{'method':'DELETE'});if(!_0xdae682['ok']){const _0x414292=await _0xdae682['json']()['catch'](()=>({'message':_0xdae682['statusText']}));throw new Error(_0x414292['message']||'Failed\x20to\x20delete\x20binding');}return await _0xdae682['json']();},async 'getRoleDefinitions'(){const _0x4266bc=await fetch(API_BASE+'/roles');if(!_0x4266bc['ok']){const _0x1140bd=await _0x4266bc['json']()['catch'](()=>({'message':_0x4266bc['statusText']}));throw new Error(_0x1140bd['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x4266bc['json']();},async 'getRoleDefinition'(_0x4d8e0a){const _0x232f9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4d8e0a));if(!_0x232f9a['ok']){const _0x51fd4b=await _0x232f9a['json']()['catch'](()=>({'message':_0x232f9a['statusText']}));throw new Error(_0x51fd4b['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x232f9a['json']();},async 'createRoleDefinition'(_0xca8078){const _0x2de0f7=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xca8078)});if(!_0x2de0f7['ok']){const _0x26df8e=await _0x2de0f7['json']()['catch'](()=>({'message':_0x2de0f7['statusText']}));throw new Error(_0x26df8e['message']||_0x26df8e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x2de0f7['json']();},async 'updateRoleDefinition'(_0x1b6b14,_0x11e0db){const _0x552739=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1b6b14),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11e0db)});if(!_0x552739['ok']){const _0x2d466d=await _0x552739['json']()['catch'](()=>({'message':_0x552739['statusText']}));throw new Error(_0x2d466d['message']||_0x2d466d['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x552739['json']();},async 'deleteRoleDefinition'(_0x160638){const _0x47bc1d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x160638),{'method':'DELETE'});if(!_0x47bc1d['ok']){const _0x1e7541=await _0x47bc1d['json']()['catch'](()=>({'message':_0x47bc1d['statusText']}));throw new Error(_0x1e7541['message']||_0x1e7541['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x47bc1d['json']();},async 'getAvailablePermissions'(){const _0x6d7b7d=await fetch(API_BASE+'/roles/available-permissions');if(!_0x6d7b7d['ok']){const _0x49f1ff=await _0x6d7b7d['json']()['catch'](()=>({'message':_0x6d7b7d['statusText']}));throw new Error(_0x49f1ff['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x6d7b7d['json']();},async 'getGitProviderAllowedTeams'(_0x394952){const _0x4816e7=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x394952)+'/allowed-teams');if(!_0x4816e7['ok']){const _0x37b8c8=await _0x4816e7['json']()['catch'](()=>({'message':_0x4816e7['statusText']}));throw new Error(_0x37b8c8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x4816e7['json']();},async 'setGitProviderAllowedTeams'(_0x207871,_0x340aff){const _0x33c986=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x207871)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x340aff})});if(!_0x33c986['ok']){const _0x11795f=await _0x33c986['json']()['catch'](()=>({'message':_0x33c986['statusText']}));throw new Error(_0x11795f['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x33c986['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 _0x56806a=toastState['baseBottom'];toastState['toasts']['forEach'](_0x315cd9=>{_0x315cd9['el']['style']['bottom']=_0x56806a+'px';const _0x18ba1e=_0x315cd9['el']['offsetHeight']||toastState['defaultHeight'];_0x56806a+=_0x18ba1e+toastState['gap'];});});}function removeToastById(_0x267e84){const _0x2be903=toastState['toasts']['findIndex'](_0x5d7823=>_0x5d7823['id']===_0x267e84);if(_0x2be903===-0x1)return;const _0x473603=toastState['toasts'][_0x2be903];if(_0x473603['timeoutId'])clearTimeout(_0x473603['timeoutId']);_0x473603['el']['classList']['remove']('show'),setTimeout(()=>_0x473603['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2be903,0x1),repositionAllToasts();}function registerToast(_0x4b0b4e){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4b0b4e),repositionAllToasts(),_0x4b0b4e['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'(_0x4fbf5a){const _0x1d4f31=new Date(_0x4fbf5a),_0x3b9608=new Date(),_0x32511b=_0x3b9608-_0x1d4f31,_0x293b80=Math['floor'](_0x32511b/0x3e8),_0x20548a=Math['floor'](_0x293b80/0x3c),_0x4f5ea7=Math['floor'](_0x20548a/0x3c),_0x2c154a=Math['floor'](_0x4f5ea7/0x18);if(_0x293b80<0x3c)return'now';if(_0x20548a<0x3c)return _0x20548a+'m\x20ago';if(_0x4f5ea7<0x18)return _0x4f5ea7+'h\x20ago';return _0x2c154a+'d\x20ago';},'getStatusIcon'(_0x152fba){switch(_0x152fba){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3d0b04){switch(_0x3d0b04){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'(_0x1a5f16,_0x560015=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x336c99={};_0x336c99['text/plain']=new Blob([_0x1a5f16],{'type':'text/plain'});_0x560015&&(_0x336c99['text/html']=new Blob([_0x560015],{'type':'text/html'}));const _0x5a8b49=new ClipboardItem(_0x336c99);return await navigator['clipboard']['write']([_0x5a8b49]),!![];}catch(_0x1470e5){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1470e5);}try{const _0x1f7741=_0x360b25=>{_0x360b25['preventDefault'](),_0x360b25['clipboardData']['setData']('text/plain',_0x1a5f16),_0x560015&&_0x360b25['clipboardData']['setData']('text/html',_0x560015);};document['addEventListener']('copy',_0x1f7741);const _0x51a1e4=document['execCommand']('copy');document['removeEventListener']('copy',_0x1f7741);if(_0x51a1e4)return!![];}catch(_0x66c571){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x66c571);}try{const _0x372f90=document['createElement']('textarea');_0x372f90['value']=_0x1a5f16,_0x372f90['style']['position']='fixed',_0x372f90['style']['opacity']='0',_0x372f90['style']['pointerEvents']='none',document['body']['appendChild'](_0x372f90),_0x372f90['select']();const _0x27652d=document['execCommand']('copy');return document['body']['removeChild'](_0x372f90),_0x27652d;}catch(_0x4c80ce){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4c80ce),![];}},'showToast'(_0x3f0aad,_0x53c9ab='info'){const _0x393bdb=getNextToastId(),_0x330286=document['createElement']('div');_0x330286['className']='toast\x20toast-'+_0x53c9ab,_0x330286['textContent']=_0x3f0aad,_0x330286['dataset']['toastId']=_0x393bdb,document['body']['appendChild'](_0x330286);const _0x535c27=_0x53c9ab==='error'?0x2710:0xbb8,_0x4b64eb=setTimeout(()=>{removeToastById(_0x393bdb);},_0x535c27),_0x118026={'id':_0x393bdb,'el':_0x330286,'timeoutId':_0x4b64eb};return registerToast(_0x118026),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x330286['classList']['add']('show');});}),_0x393bdb;},'showError'(_0x50b0b6){console['error'](_0x50b0b6);const _0x1ffc41=typeof _0x50b0b6==='string'?_0x50b0b6:_0x50b0b6['message']||'An\x20error\x20occurred';this['showToast'](_0x1ffc41,'error');},'showSuccess'(_0x8686a1){this['showToast'](_0x8686a1,'success');},'capitalize'(_0x1704b3){if(!_0x1704b3)return'';return _0x1704b3['charAt'](0x0)['toUpperCase']()+_0x1704b3['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x19712b){if(_0x19712b===null||_0x19712b===undefined)return'';return String(_0x19712b)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');},'ansiToHtml'(_0x21f4d9){if(_0x21f4d9===null||_0x21f4d9===undefined)return'';let _0x360f67=this['escapeHtml'](_0x21f4d9);const _0x47c334={'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'},_0x12114c={'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 _0x4de110=0x0;return _0x360f67=_0x360f67['replace'](/\x1b\[([0-9;]*)m/g,(_0x149d14,_0x17236c)=>{if(!_0x17236c||_0x17236c==='0'){const _0x2426d9='</span>'['repeat'](_0x4de110);return _0x4de110=0x0,_0x2426d9;}const _0x40ddf3=_0x17236c['split'](';'),_0x481710=[];for(const _0x361367 of _0x40ddf3){if(_0x361367==='1')_0x481710['push']('font-weight:bold');else{if(_0x361367==='2')_0x481710['push']('opacity:0.7');else{if(_0x361367==='3')_0x481710['push']('font-style:italic');else{if(_0x361367==='4')_0x481710['push']('text-decoration:underline');else{if(_0x361367==='9')_0x481710['push']('text-decoration:line-through');else{if(_0x47c334[_0x361367])_0x481710['push']('color:'+_0x47c334[_0x361367]);else{if(_0x12114c[_0x361367])_0x481710['push']('background-color:'+_0x12114c[_0x361367]);}}}}}}}if(_0x481710['length']>0x0)return _0x4de110++,'<span\x20style=\x22'+_0x481710['join'](';')+'\x22>';return'';}),_0x360f67+='</span>'['repeat'](_0x4de110),_0x360f67=_0x360f67['replace'](/\\u001b\[([0-9;]*)m/g,(_0x36230e,_0x47e479)=>{if(!_0x47e479||_0x47e479==='0')return'';const _0x16f11c=_0x47e479['split'](';'),_0x309922=[];for(const _0x151287 of _0x16f11c){if(_0x151287==='1')_0x309922['push']('font-weight:bold');else{if(_0x47c334[_0x151287])_0x309922['push']('color:'+_0x47c334[_0x151287]);else{if(_0x12114c[_0x151287])_0x309922['push']('background-color:'+_0x12114c[_0x151287]);}}}if(_0x309922['length']>0x0)return'<span\x20style=\x22'+_0x309922['join'](';')+'\x22>';return'';}),_0x360f67;},'showModal'({title:_0x568150,content:_0x2c6eb2,buttons:buttons=[]}){const _0x279f30='\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'](_0x568150)+'</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'+_0x2c6eb2+'\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']((_0x592d6b,_0x2bdbb4)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x592d6b['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x2bdbb4+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x592d6b['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',_0x5f015a=document['createElement']('div');_0x5f015a['id']='utils-modal',_0x5f015a['className']='modal',_0x5f015a['innerHTML']=_0x279f30,document['body']['appendChild'](_0x5f015a);const _0x124b7c=document['getElementById']('utils-modal-close');_0x124b7c&&_0x124b7c['addEventListener']('click',()=>this['hideModal']());const _0x8452e=_0x5f015a['querySelectorAll']('[data-btn-index]');_0x8452e['forEach'](_0x4bb66b=>{const _0xe4cec3=parseInt(_0x4bb66b['dataset']['btnIndex']);buttons[_0xe4cec3]?.['onClick']&&_0x4bb66b['addEventListener']('click',buttons[_0xe4cec3]['onClick']);});const _0x17cfca=document['getElementById']('utils-modal-overlay');_0x17cfca&&_0x17cfca['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x539eed=document['getElementById']('utils-modal');_0x539eed&&_0x539eed['remove']();},'parseKeyValuePairs'(_0x4b74cc){const _0x3cc075={};if(!_0x4b74cc)return _0x3cc075;return _0x4b74cc['split'](/\r?\n/)['map'](_0x3dc8aa=>_0x3dc8aa['trim']())['filter'](Boolean)['forEach'](_0x21b32d=>{const _0x539e27=_0x21b32d['indexOf']('=');if(_0x539e27>0x0){const _0x256993=_0x21b32d['slice'](0x0,_0x539e27)['trim'](),_0x24346f=_0x21b32d['slice'](_0x539e27+0x1)['trim']();if(_0x256993)_0x3cc075[_0x256993]=_0x24346f;}}),_0x3cc075;},'debounce'(_0x3dcf01,_0x46a059=0xfa){let _0x32d49a=null;return(..._0x26fd03)=>{clearTimeout(_0x32d49a),_0x32d49a=setTimeout(()=>_0x3dcf01['apply'](this,_0x26fd03),_0x46a059);};},'formatTimestamp'(_0x12a772){if(!_0x12a772)return'N/A';const _0x32fc19=new Date(_0x12a772);return _0x32fc19['toLocaleDateString']()+'\x20'+_0x32fc19['toLocaleTimeString']();},'getQueryParams'(){const _0x3de2e7=new URLSearchParams(window['location']['search']),_0x4efa00={};for(const [_0x5597d4,_0x477073]of _0x3de2e7){_0x4efa00[_0x5597d4]=_0x477073;}return _0x4efa00;},'formatDuration'(_0x5b5a3d,_0x1105bb){if(!_0x5b5a3d)return'N/A';const _0x4ac1bd=new Date(_0x5b5a3d),_0x7cf79b=_0x1105bb?new Date(_0x1105bb):new Date(),_0x3a5998=_0x7cf79b-_0x4ac1bd;if(_0x3a5998<0x0)return'0s';const _0x43214e=Math['floor'](_0x3a5998/0x3e8),_0x470112=Math['floor'](_0x43214e/0x3c),_0x2d1af2=Math['floor'](_0x470112/0x3c),_0x2bf7b=Math['floor'](_0x2d1af2/0x18);if(_0x43214e<0x3c)return _0x43214e+'s';if(_0x470112<0x3c)return _0x470112+'m\x20'+_0x43214e%0x3c+'s';if(_0x2d1af2<0x18)return _0x2d1af2+'h\x20'+_0x470112%0x3c+'m\x20'+_0x43214e%0x3c+'s';return _0x2bf7b+'d\x20'+_0x2d1af2%0x18+'h\x20'+_0x470112%0x3c+'m';},'renderMarkdown'(_0x32c545,_0x1d2d01={}){if(!_0x32c545)return'';_0x32c545=this['rewriteAttachmentLinks'](_0x32c545,_0x1d2d01),_0x32c545=this['rewriteColorSyntax'](_0x32c545);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x32c545,_0x1d2d01);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x51dcee=new marked['Renderer'](),_0x5e6d2f=_0x51dcee['code']['bind'](_0x51dcee);_0x51dcee['code']=function(_0x399052,_0x53eff8){const _0x184a25=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x184a25&&_0x53eff8)try{const _0xac39e8=_0x184a25['getLanguage'](_0x53eff8)?_0x53eff8:'plaintext',_0x41fe12=_0x184a25['highlight'](_0x399052,{'language':_0xac39e8})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x53eff8+'\x22>'+_0x41fe12+'</code></pre>';}catch(_0x56ac6d){console['error']('Syntax\x20highlighting\x20error:',_0x56ac6d);}return _0x5e6d2f(_0x399052,_0x53eff8);};try{return marked['parse'](_0x32c545,{'renderer':_0x51dcee});}catch(_0x36d323){return console['error']('Markdown\x20parsing\x20error:',_0x36d323),this['renderMarkdownFallback'](_0x32c545,_0x1d2d01);}},'rewriteAttachmentLinks'(_0x22b8b9,_0x38091b={}){const _0x242a7a=typeof _0x38091b['resolveAttachmentUrl']==='function'?_0x38091b['resolveAttachmentUrl']:_0x38091b['taskId']?_0x15f8e5=>API_BASE+'/tasks/'+_0x38091b['taskId']+'/attachments/'+encodeURIComponent(_0x15f8e5):null;if(!_0x242a7a)return _0x22b8b9;return String(_0x22b8b9)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3fc4a2,_0x3f62e4)=>{const _0x54815c=String(_0x3f62e4||'')['trim']();if(!_0x54815c)return _0x3fc4a2;let _0x291e4f=_0x54815c;try{_0x291e4f=decodeURIComponent(_0x54815c);}catch{}const _0x38a44b=_0x242a7a(_0x291e4f);if(!_0x38a44b)return _0x3fc4a2;return']('+_0x38a44b+')';});},'rewriteColorSyntax'(_0x15d645){if(!_0x15d645)return _0x15d645;return String(_0x15d645)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x1299fa,_0x40ae4e,_0x13cbb1)=>{const _0x423990=this['rewriteColorSyntax'](_0x13cbb1);return'<span\x20style=\x22color:\x20'+_0x40ae4e+'\x22>'+_0x423990+'</span>';});},'renderMarkdownFallback'(_0x2673d7,_0x5f37cb={}){if(!_0x2673d7)return'';_0x2673d7=_0x2673d7['replace'](/\r\n/g,'\x0a'),_0x2673d7=_0x2673d7['replace'](/\r/g,'\x0a'),_0x2673d7=this['rewriteAttachmentLinks'](_0x2673d7,_0x5f37cb);let _0x50549d=this['escapeHtml'](_0x2673d7);return _0x50549d=_0x50549d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x50549d=_0x50549d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x50549d=_0x50549d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x50549d=_0x50549d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x50549d=_0x50549d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x50549d=_0x50549d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x50549d=_0x50549d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x50549d=_0x50549d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x50549d=_0x50549d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x50549d=_0x50549d['replace'](/\n\n/g,'</p><p>'),_0x50549d=_0x50549d['replace'](/\n/g,'<br>'),'<p>'+_0x50549d+'</p>';}};export class CustomSelect{constructor(_0x48ee6c,_0x59f10e={}){this['nativeSelect']=_0x48ee6c,this['options']=_0x59f10e,this['isOpen']=![],this['selectedValue']=_0x48ee6c['value']||'',this['searchable']=_0x59f10e['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x619a1c=document['createElement']('div');_0x619a1c['className']='custom-select';const _0x22328a=document['createElement']('div');_0x22328a['className']='custom-select-trigger',_0x22328a['setAttribute']('tabindex','0'),_0x22328a['setAttribute']('role','button'),_0x22328a['setAttribute']('aria-haspopup','listbox');const _0xecde51=document['createElement']('span');_0xecde51['className']='custom-select-trigger-text';const _0x8c454f=document['createElement']('span');_0x8c454f['className']='custom-select-arrow',_0x8c454f['textContent']='▼',_0x22328a['appendChild'](_0xecde51),_0x22328a['appendChild'](_0x8c454f);const _0x296b51=document['createElement']('div');_0x296b51['className']='custom-select-dropdown',_0x296b51['setAttribute']('role','listbox');if(this['searchable']){const _0x3c6b61=document['createElement']('div');_0x3c6b61['className']='custom-select-search';const _0x5ccaff=document['createElement']('input');_0x5ccaff['type']='text',_0x5ccaff['className']='custom-select-search-input',_0x5ccaff['placeholder']='Type\x20to\x20search...',_0x5ccaff['setAttribute']('aria-label','Search\x20options'),_0x5ccaff['addEventListener']('input',_0x1ba500=>{this['searchQuery']=_0x1ba500['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x5ccaff['addEventListener']('keydown',_0x3fa750=>{if(_0x3fa750['key']==='Escape')_0x3fa750['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3fa750['key']==='Enter'){_0x3fa750['preventDefault'](),_0x3fa750['stopPropagation']();const _0xe4dd64=_0x296b51['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0xe4dd64){const _0x29e27f=_0xe4dd64['getAttribute']('data-value');this['select'](_0x29e27f);}}}}),_0x3c6b61['appendChild'](_0x5ccaff),_0x296b51['appendChild'](_0x3c6b61),this['searchInput']=_0x5ccaff;}const _0x45c560=document['createElement']('div');_0x45c560['className']='custom-select-options',_0x296b51['appendChild'](_0x45c560),_0x619a1c['appendChild'](_0x22328a),_0x619a1c['appendChild'](_0x296b51),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x619a1c,this['nativeSelect']),this['wrapper']=_0x619a1c,this['trigger']=_0x22328a,this['triggerText']=_0xecde51,this['dropdown']=_0x296b51,this['optionsContainer']=_0x45c560,_0x22328a['addEventListener']('click',()=>this['toggle']()),_0x22328a['addEventListener']('keydown',_0x35958b=>this['handleKeydown'](_0x35958b)),document['addEventListener']('click',_0x48ebcb=>{!_0x619a1c['contains'](_0x48ebcb['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x447fce=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x447fce['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x40f978=new MutationObserver(()=>{this['updateDisabledState']();});_0x40f978['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5efd8a=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5efd8a['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x17e506=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x17e506),this['trigger']['setAttribute']('aria-disabled',_0x17e506?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x17e506?'-1':'0'),_0x17e506&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x405981=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x506713=_0x405981['filter'](_0x4eed54=>!_0x4eed54['disabled']&&!_0x4eed54['hidden']);_0x405981['forEach']((_0x1571fc,_0x287dfb)=>{const _0x2ff793=document['createElement']('div');_0x2ff793['className']='custom-select-option',_0x2ff793['textContent']=_0x1571fc['textContent'],_0x2ff793['setAttribute']('data-value',_0x1571fc['value']),_0x2ff793['setAttribute']('data-index',_0x287dfb),_0x2ff793['setAttribute']('role','option'),_0x1571fc['disabled']?_0x2ff793['classList']['add']('disabled'):_0x2ff793['addEventListener']('click',()=>this['select'](_0x1571fc['value'])),_0x1571fc['value']===this['selectedValue']&&_0x2ff793['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2ff793),this['allOptions']['push']({'element':_0x2ff793,'text':_0x1571fc['textContent']['toLowerCase'](),'value':_0x1571fc['value'],'disabled':_0x1571fc['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4bdd7f=this['searchInput']['parentElement'];_0x506713['length']>0x3?_0x4bdd7f['style']['display']='':_0x4bdd7f['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4c2ccd=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x1341cc=>{if(!_0x4c2ccd||_0x1341cc['disabled'])_0x1341cc['element']['style']['display']='';else{const _0x269041=_0x1341cc['text']['includes'](_0x4c2ccd);_0x1341cc['element']['style']['display']=_0x269041?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x18142b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x18142b,this['nativeSelect']['value']=_0x18142b;const _0x3cbde6=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x3cbde6),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x56b3f8=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x56b3f8&&(this['triggerText']['textContent']=_0x56b3f8['textContent'],_0x56b3f8['disabled']||_0x56b3f8['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3449f3=>{_0x3449f3['getAttribute']('data-value')===this['selectedValue']?_0x3449f3['classList']['add']('selected'):_0x3449f3['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 _0x15ee6f=window['getComputedStyle'](this['dropdown']);if(_0x15ee6f['position']==='fixed'){const _0x298d81=this['trigger']['getBoundingClientRect'](),_0x990ba6=parseInt(_0x15ee6f['maxHeight'])||0xc8,_0x1b3c32=window['innerHeight'],_0x2c4960=_0x1b3c32-_0x298d81['bottom'],_0x3cd32f=_0x298d81['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0xa167e0;_0x2c4960<_0x990ba6&&_0x3cd32f>_0x2c4960?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x1b3c32-_0x298d81['top']+'px',_0xa167e0=Math['min'](_0x990ba6,_0x3cd32f-0xa),this['dropdown']['style']['maxHeight']=_0xa167e0+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x298d81['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0xa167e0=Math['min'](_0x990ba6,_0x2c4960-0xa),this['dropdown']['style']['maxHeight']=_0xa167e0+'px');if(this['optionsContainer']){let _0x3854bd=_0xa167e0;if(this['searchInput']){const _0x3faf4e=this['searchInput']['parentElement'];_0x3faf4e&&(_0x3854bd-=_0x3faf4e['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x3854bd)+'px';}this['dropdown']['style']['left']=_0x298d81['left']+'px',this['dropdown']['style']['width']=_0x298d81['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x30145b=this['searchInput']['parentElement'];_0x30145b&&_0x30145b['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'](_0x5545c9){if(this['nativeSelect']['disabled'])return;if(_0x5545c9['key']==='Enter'||_0x5545c9['key']==='\x20')_0x5545c9['preventDefault'](),this['toggle']();else _0x5545c9['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x521455='\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',_0x521455),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x1e7dc3=document['getElementById']('confirm-dialog-close'),_0x5e3baa=document['getElementById']('confirm-dialog-cancel'),_0x7dd75b=document['getElementById']('confirm-dialog-confirm'),_0x3340c1=this['_modal']['querySelector']('.modal-overlay');_0x1e7dc3['addEventListener']('click',()=>this['_resolve'](![])),_0x5e3baa['addEventListener']('click',()=>this['_resolve'](![])),_0x7dd75b['addEventListener']('click',()=>this['_resolve'](!![])),_0x3340c1['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x480088=>{if(_0x480088['key']==='Escape')_0x480088['preventDefault'](),this['_resolve'](![]);else _0x480088['key']==='Enter'&&(_0x480088['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x24d78f,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x95ca6=>{this['_resolvePromise']=_0x95ca6,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x24d78f;const _0x31bb7b=document['getElementById']('confirm-dialog-cancel'),_0x57a6ad=document['getElementById']('confirm-dialog-confirm');_0x31bb7b['textContent']=cancelText,_0x57a6ad['textContent']=confirmText,_0x57a6ad['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x57a6ad['focus']();});},'_resolve'(_0x84acfe){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x84acfe),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x5b96be,_0x4fb385={}){this['container']=_0x5b96be,this['options']={'placeholder':_0x4fb385['placeholder']||'Type\x20to\x20search...','maxItems':_0x4fb385['maxItems']||0x64,'loadItems':_0x4fb385['loadItems']||(async()=>[]),'renderItem':_0x4fb385['renderItem']||(_0x1cfd17=>({'primary':String(_0x1cfd17),'secondary':''})),'onSelect':_0x4fb385['onSelect']||(()=>{}),'filterItems':_0x4fb385['filterItems']||null,'getItemValue':_0x4fb385['getItemValue']||(_0x17c371=>_0x17c371),'sortItems':_0x4fb385['sortItems']||null,'debounceMs':_0x4fb385['debounceMs']||0xc8,'minCharsForSearch':_0x4fb385['minCharsForSearch']||0x0,'emptyMessage':_0x4fb385['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4fb385['loadingMessage']||'Loading...','preload':_0x4fb385['preload']!==![],'searchMode':_0x4fb385['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',_0x23d698=>this['onBlur'](_0x23d698)),this['input']['addEventListener']('input',_0x41ec6e=>this['onInput'](_0x41ec6e)),this['input']['addEventListener']('keydown',_0x4d79e8=>this['onKeydown'](_0x4d79e8)),this['clearBtn']['addEventListener']('mousedown',_0x3c7e01=>{_0x3c7e01['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x237302=>{_0x237302['preventDefault']();}),document['addEventListener']('click',_0x5e5784=>{!this['wrapper']['contains'](_0x5e5784['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(_0x329e49){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x329e49);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x1c8f36){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x163037){const _0x275aee=_0x163037['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x275aee);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x275aee):this['loadAndShow'](_0x275aee);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x3019e0){switch(_0x3019e0['key']){case'ArrowDown':_0x3019e0['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x3019e0['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x3019e0['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x3019e0['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x58b974){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x39e16b=this['selectedIndex']+_0x58b974;if(_0x39e16b>=0x0&&_0x39e16b<this['filteredItems']['length']){this['selectedIndex']=_0x39e16b,this['updateSelectionHighlight']();const _0x5afc56=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5afc56[this['selectedIndex']]&&_0x5afc56[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4fc5ce=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4fc5ce['forEach']((_0x434062,_0x2a615d)=>{_0x434062['classList']['toggle']('keyboard-selected',_0x2a615d===this['selectedIndex']);});}async['loadAndShow'](_0x1a7185){this['showLoading']();try{const _0x5585a8=await this['options']['loadItems'](_0x1a7185);if(this['options']['searchMode']==='server'){let _0x1be257=_0x5585a8;this['options']['sortItems']&&(_0x1be257=this['options']['sortItems']([..._0x5585a8]));this['filteredItems']=_0x1be257;const _0x52734c=this['filteredItems']['length']>=this['options']['maxItems'];_0x52734c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x52734c),this['open']();}else this['allItems']=_0x5585a8,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x1a7185);}catch(_0x59550a){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x59550a),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x29af52){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x29af52):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2d41a8=this['filteredItems']['length']>=this['options']['maxItems'];_0x2d41a8&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2d41a8),this['open']();}['renderItems'](_0x577eec){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']((_0x4e32ce,_0x257fee)=>{const _0x32dae5=document['createElement']('div');_0x32dae5['className']='autocomplete-select-item',_0x32dae5['setAttribute']('role','option'),_0x32dae5['setAttribute']('data-index',_0x257fee);const _0x5e374c=this['options']['renderItem'](_0x4e32ce);let _0x340316='';_0x5e374c['icon']&&(_0x340316='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5e374c['iconClass']||'')+'\x22>'+_0x5e374c['icon']+'</span>'),_0x32dae5['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x340316+'\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'](_0x5e374c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5e374c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5e374c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x32dae5['addEventListener']('click',()=>{this['selectItem'](_0x4e32ce);}),_0x32dae5['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x257fee,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x32dae5);}),_0x577eec?(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'](_0x232760){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x232760)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4a0e89){this['selectedItem']=_0x4a0e89;const _0x3d59e8=this['options']['renderItem'](_0x4a0e89);this['input']['value']=_0x3d59e8['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4a0e89);}['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'](_0x156c33){if(_0x156c33){this['selectedItem']=_0x156c33;const _0xbb7821=this['options']['renderItem'](_0x156c33);this['input']['value']=_0xbb7821['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x313e54){this['allItems']=_0x313e54,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'](_0x35ff8f){this['input']['placeholder']=_0x35ff8f;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x2f6543=null){const _0x5e62b8=document['getElementById']('admin-menu-container'),_0x37422a=document['getElementById']('admin-menu-btn'),_0x2509ee=document['getElementById']('admin-menu');if(!_0x5e62b8||!_0x37422a||!_0x2509ee)return;try{!_0x2f6543&&(_0x2f6543=await API['getCurrentUser']());if(_0x2f6543){const _0x7538f2=_0x2f6543['hasAllPermissions']||_0x2f6543['hasEnvironmentsManage']||_0x2f6543['canCreateUsers']||_0x2f6543['canManageTeams']||_0x2f6543['hasEnvironmentBindings'];if(!_0x7538f2)return;_0x5e62b8['hidden']=![];if(!_0x2f6543['hasAllPermissions']){const _0xde7f8=_0x2509ee['querySelectorAll']('.admin-menu-item');_0xde7f8['forEach'](_0xebdb54=>{const _0x3ad07b=_0xebdb54['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3ad07b==='Users'&&!_0x2f6543['canCreateUsers']&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Skills'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Server\x20Settings'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Server\x20Health'&&(_0xebdb54['hidden']=!![]),_0x3ad07b==='Git\x20History'&&(_0xebdb54['hidden']=!![]);});}_0x37422a['addEventListener']('click',_0x529fd7=>{_0x529fd7['stopPropagation']();const _0x4b3214=document['getElementById']('actions-menu');if(_0x4b3214)_0x4b3214['hidden']=!![];_0x2509ee['hidden']=!_0x2509ee['hidden'];}),document['addEventListener']('click',_0x481c19=>{!_0x2509ee['hidden']&&!_0x37422a['contains'](_0x481c19['target'])&&!_0x2509ee['contains'](_0x481c19['target'])&&(_0x2509ee['hidden']=!![]);}),document['addEventListener']('keydown',_0x6e5145=>{_0x6e5145['key']==='Escape'&&!_0x2509ee['hidden']&&(_0x2509ee['hidden']=!![]);});const _0x53fac5=document['getElementById']('server-health-btn');_0x53fac5&&_0x53fac5['addEventListener']('click',async()=>{_0x2509ee['hidden']=!![];const {openServerHealthModal:_0x103323}=await import('./server-health.js');_0x103323();});}}catch(_0x3275ca){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x3275ca['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
1
+ function detectApiBase(){const _0x22d0b5=window['location']['pathname'],_0x49277c=_0x22d0b5['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x49277c)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x49277c[0x1]),_0x49277c[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x53d9ab={}){const _0x261d18=new URLSearchParams();_0x53d9ab['userId']&&_0x261d18['set']('userId',String(_0x53d9ab['userId']));_0x53d9ab['automation']&&_0x261d18['set']('automation',String(_0x53d9ab['automation']));const _0x212f27=API_BASE+'/tasks/stats'+(_0x261d18['toString']()?'?'+_0x261d18['toString']():''),_0x380737=await fetch(_0x212f27);if(!_0x380737['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x380737['statusText']);return await _0x380737['json']();},async 'getTasks'(_0x574b5e={}){const _0x48fd23=new URLSearchParams();_0x574b5e['status']&&_0x48fd23['set']('status',String(_0x574b5e['status']));_0x574b5e['environment']&&_0x48fd23['set']('environment',String(_0x574b5e['environment']));_0x574b5e['automation']&&_0x48fd23['set']('automation',String(_0x574b5e['automation']));if(_0x574b5e['include']){const _0x33f5b2=Array['isArray'](_0x574b5e['include'])?_0x574b5e['include']['join'](','):String(_0x574b5e['include']);_0x33f5b2&&_0x48fd23['set']('include',_0x33f5b2);}_0x574b5e['filter']&&_0x48fd23['set']('filter',String(_0x574b5e['filter']));_0x574b5e['page']&&_0x48fd23['set']('page',String(_0x574b5e['page']));_0x574b5e['limit']&&_0x48fd23['set']('limit',String(_0x574b5e['limit']));_0x574b5e['userId']&&_0x48fd23['set']('userId',String(_0x574b5e['userId']));_0x574b5e['search']&&_0x48fd23['set']('search',String(_0x574b5e['search']));_0x574b5e['includeChildTasks']&&_0x48fd23['set']('includeChildTasks','true');const _0xe3883b=API_BASE+'/tasks'+(_0x48fd23['toString']()?'?'+_0x48fd23['toString']():''),_0x9980c1=await fetch(_0xe3883b);if(!_0x9980c1['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x9980c1['statusText']);return await _0x9980c1['json']();},async 'getAutomations'(_0x14c30f={}){const _0x4880f8=new URLSearchParams();_0x14c30f['environment']&&_0x4880f8['set']('environment',String(_0x14c30f['environment']));const _0x45f59b=await fetch(API_BASE+'/api/automations'+(_0x4880f8['toString']()?'?'+_0x4880f8['toString']():''));if(!_0x45f59b['ok']){const _0x53bf7c=await _0x45f59b['json']()['catch'](()=>({}));throw new Error(_0x53bf7c['message']||_0x53bf7c['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x45f59b['statusText']);}return await _0x45f59b['json']();},async 'getAutomation'(_0x43c97d){const _0x58b9ab=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x43c97d));if(!_0x58b9ab['ok']){const _0x4cc6d7=await _0x58b9ab['json']()['catch'](()=>({}));throw new Error(_0x4cc6d7['message']||_0x4cc6d7['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x58b9ab['statusText']);}return await _0x58b9ab['json']();},async 'createAutomation'(_0x2d2c00){const _0x957c2c=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d2c00||{})});if(!_0x957c2c['ok']){const _0x5d6763=await _0x957c2c['json']()['catch'](()=>({}));throw new Error(_0x5d6763['message']||_0x5d6763['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x957c2c['statusText']);}return await _0x957c2c['json']();},async 'updateAutomation'(_0x2d22b6,_0x35b652){const _0x4e1d54=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2d22b6),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x35b652||{})});if(!_0x4e1d54['ok']){const _0x3a5478=await _0x4e1d54['json']()['catch'](()=>({}));throw new Error(_0x3a5478['message']||_0x3a5478['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4e1d54['statusText']);}return await _0x4e1d54['json']();},async 'deleteAutomation'(_0x3317e3){const _0x560f6c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3317e3),{'method':'DELETE'});if(!_0x560f6c['ok']){const _0x3ee3c0=await _0x560f6c['json']()['catch'](()=>({}));throw new Error(_0x3ee3c0['message']||_0x3ee3c0['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x560f6c['statusText']);}return await _0x560f6c['json']();},async 'triggerAutomation'(_0x50fa0c){const _0x528adf=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x50fa0c)+'/trigger',{'method':'POST'});if(!_0x528adf['ok']){const _0x28f672=await _0x528adf['json']()['catch'](()=>({}));throw new Error(_0x28f672['message']||_0x28f672['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x528adf['statusText']);}return await _0x528adf['json']();},async 'setAutomationEnabled'(_0x52bd78,_0x2ab1b2){const _0x237f1f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x52bd78)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x2ab1b2})});if(!_0x237f1f['ok']){const _0x5a3f47=await _0x237f1f['json']()['catch'](()=>({}));throw new Error(_0x5a3f47['message']||_0x5a3f47['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x237f1f['statusText']);}return await _0x237f1f['json']();},async 'getAutomationHistory'(_0x1a7af1,_0x528182=0x32){const _0x43873e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1a7af1)+'/history?limit='+encodeURIComponent(String(_0x528182)));if(!_0x43873e['ok']){const _0x2ce39a=await _0x43873e['json']()['catch'](()=>({}));throw new Error(_0x2ce39a['message']||_0x2ce39a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x43873e['statusText']);}return await _0x43873e['json']();},async 'getTask'(_0x2c199d,_0x737118={}){const _0x816159=new URLSearchParams();if(_0x737118['include']){const _0x5053af=Array['isArray'](_0x737118['include'])?_0x737118['include']['join'](','):String(_0x737118['include']);if(_0x5053af)_0x816159['set']('include',_0x5053af);}const _0x56cee2=await fetch(API_BASE+'/tasks/'+_0x2c199d+(_0x816159['toString']()?'?'+_0x816159['toString']():''));if(!_0x56cee2['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x56cee2['statusText']);return await _0x56cee2['json']();},async 'getTaskResults'(_0x46535e){const _0x45b027=await fetch(API_BASE+'/tasks/'+_0x46535e+'/results');if(!_0x45b027['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x45b027['statusText']);return await _0x45b027['json']();},async 'getTaskPatches'(_0x172441){const _0x1a8005=await fetch(API_BASE+'/tasks/'+_0x172441+'/patches');if(!_0x1a8005['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1a8005['statusText']);return await _0x1a8005['json']();},async 'getTaskAttachments'(_0xe0c9ab){const _0x458dc2=await fetch(API_BASE+'/tasks/'+_0xe0c9ab+'/attachments');if(!_0x458dc2['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x458dc2['statusText']);return await _0x458dc2['json']();},async 'uploadAttachments'(_0x5bd735,_0x3682c6){const _0x366605=new FormData();for(const _0x432480 of _0x3682c6){_0x366605['append']('attachments',_0x432480);}const _0x3b27be=await fetch(API_BASE+'/tasks/'+_0x5bd735+'/attachments',{'method':'POST','body':_0x366605});if(!_0x3b27be['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3b27be['statusText']);return await _0x3b27be['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3bd9f1=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3bd9f1['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3bd9f1['json']();}catch(_0x5acec8){return{'available':![],'reason':_0x5acec8['message']};}},async 'generateTaskName'(_0x2fac83){try{const _0x14f3ed=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2fac83})});return await _0x14f3ed['json']();}catch(_0x208e1e){return{'success':![],'error':_0x208e1e['message']};}},async 'createTask'(_0x5669f6){let _0x30be55,_0xeea803={};if(_0x5669f6['files']&&_0x5669f6['files']['length']>0x0){const _0x1b865f=new FormData();for(const [_0xf28d91,_0x24b40f]of Object['entries'](_0x5669f6)){if(_0xf28d91!=='files'){if(_0x24b40f==null)continue;typeof _0x24b40f==='object'?_0x1b865f['append'](_0xf28d91,JSON['stringify'](_0x24b40f)):_0x1b865f['append'](_0xf28d91,String(_0x24b40f));}}for(const _0x23d367 of _0x5669f6['files']){_0x1b865f['append']('attachments',_0x23d367);}_0x30be55=_0x1b865f;}else _0xeea803['Content-Type']='application/json',_0x30be55=JSON['stringify'](_0x5669f6);const _0x17b4ca=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0xeea803,'body':_0x30be55});if(!_0x17b4ca['ok']){const _0x4da397=await _0x17b4ca['json'](),_0x3964c6=new Error(_0x4da397['error']||'Failed\x20to\x20create\x20task:\x20'+_0x17b4ca['statusText']),{message:_0x2e0c5f,..._0x30ece7}=_0x4da397;Object['assign'](_0x3964c6,_0x30ece7);throw _0x3964c6;}return await _0x17b4ca['json']();},async 'createTestTask'(_0x70074c){const _0x23ba5e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x70074c)});if(!_0x23ba5e['ok']){const _0x10fbf4=await _0x23ba5e['json']();throw new Error(_0x10fbf4['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x23ba5e['statusText']);}return await _0x23ba5e['json']();},async 'createEphemeralTest'(_0x29f337){const _0x42575e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29f337)});if(!_0x42575e['ok']){const _0x2da270=await _0x42575e['json']();throw new Error(_0x2da270['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x42575e['statusText']);}return await _0x42575e['json']();},async 'createDeployTask'(_0x1ebb70){const _0x1fb004=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ebb70)});if(!_0x1fb004['ok']){const _0x47b5e2=await _0x1fb004['json']();throw new Error(_0x47b5e2['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x1fb004['statusText']);}return await _0x1fb004['json']();},async 'getEnvironments'(){const _0x460414=await fetch(API_BASE+'/environments');if(!_0x460414['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x460414['statusText']);return await _0x460414['json']();},async 'getEnvironment'(_0x55325c){const _0x1e2c68=await fetch(API_BASE+'/environments/'+_0x55325c);if(!_0x1e2c68['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x1e2c68['statusText']);return await _0x1e2c68['json']();},async 'getEnvironmentRepoHistory'(_0x2b5ed2,_0x645006,_0x175a4e={}){if(!_0x2b5ed2||!_0x645006)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2a665b=new URLSearchParams();if(_0x175a4e['limit'])_0x2a665b['set']('limit',String(_0x175a4e['limit']));if(_0x175a4e['offset'])_0x2a665b['set']('offset',String(_0x175a4e['offset']));if(_0x175a4e['search'])_0x2a665b['set']('search',String(_0x175a4e['search']));if(_0x175a4e['branch'])_0x2a665b['set']('branch',String(_0x175a4e['branch']));const _0x1c4b75=API_BASE+'/environments/'+encodeURIComponent(_0x2b5ed2)+'/repos/'+encodeURIComponent(_0x645006)+'/git/history',_0x267709=await fetch(''+_0x1c4b75+(_0x2a665b['toString']()?'?'+_0x2a665b['toString']():''));if(!_0x267709['ok']){const _0x8b8cad=await _0x267709['json']()['catch'](()=>({}));throw new Error(_0x8b8cad['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x267709['statusText']);}return await _0x267709['json']();},async 'getEnvironmentRepoCommit'(_0x83c03a,_0x3ba032,_0x20e461){if(!_0x83c03a||!_0x3ba032||!_0x20e461)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x839cce=API_BASE+'/environments/'+encodeURIComponent(_0x83c03a)+'/repos/'+encodeURIComponent(_0x3ba032)+'/git/commits/'+encodeURIComponent(_0x20e461),_0x3e5435=await fetch(_0x839cce);if(!_0x3e5435['ok']){const _0x387f51=await _0x3e5435['json']()['catch'](()=>({}));throw new Error(_0x387f51['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3e5435['statusText']);}return await _0x3e5435['json']();},async 'getEnvironmentRepoBranches'(_0x117568,_0x24e188){if(!_0x117568||!_0x24e188)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1b2856=API_BASE+'/environments/'+encodeURIComponent(_0x117568)+'/repos/'+encodeURIComponent(_0x24e188)+'/git/branches',_0x1b1c69=await fetch(_0x1b2856);if(!_0x1b1c69['ok']){const _0x4e7e33=await _0x1b1c69['json']()['catch'](()=>({}));throw new Error(_0x4e7e33['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x1b1c69['statusText']);}return await _0x1b1c69['json']();},async 'revertEnvironmentRepoCommit'(_0x79e4e0,_0x2d0af3,_0x3dde45,_0x11310f={}){if(!_0x79e4e0||!_0x2d0af3||!_0x3dde45)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x116b07=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x79e4e0)+'/repos/'+encodeURIComponent(_0x2d0af3)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3dde45,..._0x11310f})});if(!_0x116b07['ok']){const _0xd63741=await _0x116b07['json']()['catch'](()=>({}));throw new Error(_0xd63741['message']||_0xd63741['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x116b07['statusText']);}return await _0x116b07['json']();},async 'getTemplates'(_0x227c7d={}){const _0x2e6dc6=new URLSearchParams();if(_0x227c7d['include']){const _0x1b5b13=Array['isArray'](_0x227c7d['include'])?_0x227c7d['include']['join'](','):String(_0x227c7d['include']);if(_0x1b5b13)_0x2e6dc6['set']('include',_0x1b5b13);}const _0x5e65b4=await fetch(API_BASE+'/templates'+(_0x2e6dc6['toString']()?'?'+_0x2e6dc6['toString']():''));if(!_0x5e65b4['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x5e65b4['statusText']);return await _0x5e65b4['json']();},async 'getTemplatesForEnvironment'(_0x3ee1f7,_0x2cb487={}){if(!_0x3ee1f7)throw new Error('Environment\x20name\x20is\x20required');const _0x35dd5a=new URLSearchParams();if(_0x2cb487['include']){const _0x4c1add=Array['isArray'](_0x2cb487['include'])?_0x2cb487['include']['join'](','):String(_0x2cb487['include']);if(_0x4c1add)_0x35dd5a['set']('include',_0x4c1add);}const _0x5269dd=await fetch(API_BASE+'/templates/'+_0x3ee1f7+(_0x35dd5a['toString']()?'?'+_0x35dd5a['toString']():''));if(!_0x5269dd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3ee1f7+':\x20'+_0x5269dd['statusText']);return await _0x5269dd['json']();},async 'getTemplate'(_0x500977,_0x4ed0e3,_0x4255d4={}){if(!_0x500977||!_0x4ed0e3)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x357507=new URLSearchParams();if(_0x4255d4['include']){const _0x260ae6=Array['isArray'](_0x4255d4['include'])?_0x4255d4['include']['join'](','):String(_0x4255d4['include']);if(_0x260ae6)_0x357507['set']('include',_0x260ae6);}const _0x413217=await fetch(API_BASE+'/templates/'+_0x500977+'/'+_0x4ed0e3+(_0x357507['toString']()?'?'+_0x357507['toString']():''));if(!_0x413217['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x413217['statusText']);return await _0x413217['json']();},async 'getTaskLogs'(_0x127322,_0x435814={}){if(!_0x127322)throw new Error('Task\x20ID\x20is\x20required');const _0x57a0aa=new URLSearchParams();_0x435814['tail']&&_0x57a0aa['set']('tail',String(_0x435814['tail']));const _0x36a0e4=await fetch(API_BASE+'/tasks/'+_0x127322+'/logs'+(_0x57a0aa['toString']()?'?'+_0x57a0aa['toString']():''));if(!_0x36a0e4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x36a0e4['statusText']);return await _0x36a0e4['text']();},async 'getContainers'(){const _0xa18acf=await fetch(API_BASE+'/containers');if(!_0xa18acf['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xa18acf['statusText']);return await _0xa18acf['json']();},async 'getContainer'(_0x51b912){const _0x892444=await fetch(API_BASE+'/containers/'+_0x51b912);if(!_0x892444['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x892444['statusText']);return await _0x892444['json']();},async 'startInteractiveContainer'(_0x40dd54){const _0xffe24b=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40dd54)});if(!_0xffe24b['ok']){const _0x44f448=await _0xffe24b['json']()['catch'](()=>({}));throw new Error(_0x44f448['message']||'Failed\x20to\x20start\x20container:\x20'+_0xffe24b['statusText']);}return await _0xffe24b['json']();},async 'stopContainer'(_0x586a6a){const _0x12be08=await fetch(API_BASE+'/containers/'+_0x586a6a,{'method':'DELETE'});if(!_0x12be08['ok']){const _0x427dfb=await _0x12be08['json']()['catch'](()=>({}));throw new Error(_0x427dfb['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x12be08['statusText']);}return await _0x12be08['json']();},async 'stopTask'(_0x1238bb){if(!_0x1238bb)throw new Error('Task\x20ID\x20is\x20required');const _0x2f0da9=await fetch(API_BASE+'/tasks/'+_0x1238bb+'/stop',{'method':'POST'});if(!_0x2f0da9['ok']){const _0x117914=await _0x2f0da9['json']()['catch'](()=>({}));throw new Error(_0x117914['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2f0da9['statusText']);}return await _0x2f0da9['json']();},async 'interruptTask'(_0x5abf7e){if(!_0x5abf7e)throw new Error('Task\x20ID\x20is\x20required');const _0x36cd48=await fetch(API_BASE+'/tasks/'+_0x5abf7e+'/interrupt',{'method':'POST'});if(!_0x36cd48['ok']){const _0x21d53c=await _0x36cd48['json']()['catch'](()=>({}));throw new Error(_0x21d53c['error']||_0x21d53c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x36cd48['statusText']);}return await _0x36cd48['json']();},async 'startTask'(_0x3a484e){if(!_0x3a484e)throw new Error('Task\x20ID\x20is\x20required');const _0x520920=await fetch(API_BASE+'/tasks/'+_0x3a484e+'/start',{'method':'POST'});if(!_0x520920['ok']){const _0x4637d8=await _0x520920['json']()['catch'](()=>({}));throw new Error(_0x4637d8['error']||'Failed\x20to\x20start\x20task:\x20'+_0x520920['statusText']);}return await _0x520920['json']();},async 'deleteTask'(_0x5b20ec){if(!_0x5b20ec)throw new Error('Task\x20ID\x20is\x20required');const _0x189c60=await fetch(API_BASE+'/tasks/'+_0x5b20ec,{'method':'DELETE'});if(!_0x189c60['ok']){const _0x5191c5=await _0x189c60['json']()['catch'](()=>({}));throw new Error(_0x5191c5['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x189c60['statusText']);}return await _0x189c60['json']();},async 'refreshTasksFromDisk'(){const _0x21bb56=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x21bb56['ok']){const _0x23ee22=await _0x21bb56['json']()['catch'](()=>({}));throw new Error(_0x23ee22['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x21bb56['statusText']);}return await _0x21bb56['json']();},async 'approveTask'(_0x3cabc2,_0x5dacf8={}){if(!_0x3cabc2)throw new Error('Task\x20ID\x20is\x20required');const _0x51a417={'commit_message':_0x5dacf8['commit_message']||'','pull':_0x5dacf8['pull']??![],'push':_0x5dacf8['push']??![]};_0x5dacf8['new_branch']&&(_0x51a417['new_branch']=_0x5dacf8['new_branch']);const _0xafe19d=await fetch(API_BASE+'/tasks/'+_0x3cabc2+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51a417)});if(!_0xafe19d['ok']){const _0x5646c2=await _0xafe19d['json']()['catch'](()=>({}));let _0x4dec01=_0x5646c2['error']||_0x5646c2['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xafe19d['statusText'];if(_0x5646c2['results']&&Array['isArray'](_0x5646c2['results'])){const _0x527321=_0x5646c2['results']['filter'](_0x10716a=>!_0x10716a['success']&&_0x10716a['error']);_0x527321['length']>0x0&&(_0x4dec01=_0x527321[0x0]['error']);}throw new Error(_0x4dec01);}return await _0xafe19d['json']();},async 'getPullRequestInfo'(_0x189cf0){if(!_0x189cf0)throw new Error('Task\x20ID\x20is\x20required');const _0x111992=await fetch(API_BASE+'/tasks/'+_0x189cf0+'/pull-request-info');if(!_0x111992['ok']){const _0x25fea0=await _0x111992['json']()['catch'](()=>({}));throw new Error(_0x25fea0['error']||_0x25fea0['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x111992['statusText']);}return await _0x111992['json']();},async 'createPullRequests'(_0x5afc8e,_0x3698cf){if(!_0x5afc8e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3698cf||!Array['isArray'](_0x3698cf))throw new Error('repos\x20array\x20is\x20required');const _0x51bbb9=await fetch(API_BASE+'/tasks/'+_0x5afc8e+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3698cf})});if(!_0x51bbb9['ok']){const _0x1df656=await _0x51bbb9['json']()['catch'](()=>({}));let _0x25847d=_0x1df656['error']||_0x1df656['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x51bbb9['statusText'];if(_0x1df656['results']&&Array['isArray'](_0x1df656['results'])){const _0x2e294b=_0x1df656['results']['filter'](_0x2e6360=>!_0x2e6360['success']&&_0x2e6360['error']);_0x2e294b['length']>0x0&&(_0x25847d=_0x2e294b[0x0]['error']);}throw new Error(_0x25847d);}return await _0x51bbb9['json']();},async 'syncRepos'(_0x54a20e){if(!_0x54a20e)throw new Error('Task\x20ID\x20is\x20required');const _0x35870e=await fetch(API_BASE+'/tasks/'+_0x54a20e+'/sync-repos',{'method':'POST'});if(!_0x35870e['ok']){const _0x29a815=await _0x35870e['json']()['catch'](()=>({}));throw new Error(_0x29a815['error']||_0x29a815['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x35870e['statusText']);}return await _0x35870e['json']();},async 'getIbmiSyncInfo'(_0x3f9a07){if(!_0x3f9a07)throw new Error('Task\x20ID\x20is\x20required');const _0x480579=await fetch(API_BASE+'/tasks/'+_0x3f9a07+'/ibmi-sync-info');if(!_0x480579['ok']){const _0x5447da=await _0x480579['json']()['catch'](()=>({}));throw new Error(_0x5447da['error']||_0x5447da['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x480579['json']();},async 'syncToIbmi'(_0x34c46e,_0x4d0e36){if(!_0x34c46e)throw new Error('Task\x20ID\x20is\x20required');const _0x2df91e=await fetch(API_BASE+'/tasks/'+_0x34c46e+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'library':_0x4d0e36})});if(!_0x2df91e['ok']){const _0x1627f0=await _0x2df91e['json']()['catch'](()=>({}));throw new Error(_0x1627f0['error']||_0x1627f0['message']||'Sync\x20failed');}return await _0x2df91e['json']();},async 'getIbmiSyncLog'(_0x1bc973){if(!_0x1bc973)throw new Error('Task\x20ID\x20is\x20required');const _0x5166da=await fetch(API_BASE+'/tasks/'+_0x1bc973+'/ibmi-sync-log');if(!_0x5166da['ok']){const _0x2a82dd=await _0x5166da['json']()['catch'](()=>({}));throw new Error(_0x2a82dd['error']||_0x2a82dd['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5166da['json']();},async 'pullChanges'(_0x18b00c){if(!_0x18b00c)throw new Error('Task\x20ID\x20is\x20required');const _0x59965e=await fetch(API_BASE+'/tasks/'+_0x18b00c+'/pull-changes',{'method':'POST'});if(!_0x59965e['ok']){const _0x208dee=await _0x59965e['json']()['catch'](()=>({}));throw new Error(_0x208dee['error']||_0x208dee['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x59965e['statusText']);}return await _0x59965e['json']();},async 'readFile'(_0x4615f5,_0x3c60d8){if(!_0x4615f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3c60d8)throw new Error('File\x20path\x20is\x20required');const _0x4adc65=await fetch(API_BASE+'/tasks/'+_0x4615f5+'/files?path='+encodeURIComponent(_0x3c60d8));if(!_0x4adc65['ok']){const _0x97aa9e=await _0x4adc65['json']()['catch'](()=>({}));throw new Error(_0x97aa9e['error']||_0x97aa9e['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4adc65['statusText']);}return await _0x4adc65['json']();},async 'writeFile'(_0x1064ac,_0x16fac4,_0x1db5c8){if(!_0x1064ac)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16fac4)throw new Error('File\x20path\x20is\x20required');if(_0x1db5c8===undefined)throw new Error('Content\x20is\x20required');const _0x760924=await fetch(API_BASE+'/tasks/'+_0x1064ac+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x16fac4,'content':_0x1db5c8})});if(!_0x760924['ok']){const _0x47aeae=await _0x760924['json']()['catch'](()=>({}));throw new Error(_0x47aeae['error']||_0x47aeae['message']||'Failed\x20to\x20write\x20file:\x20'+_0x760924['statusText']);}return await _0x760924['json']();},async 'deleteFile'(_0x15f2fb,_0x88fdf6){if(!_0x15f2fb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x88fdf6)throw new Error('File\x20path\x20is\x20required');const _0x30e974=await fetch(API_BASE+'/tasks/'+_0x15f2fb+'/files?path='+encodeURIComponent(_0x88fdf6),{'method':'DELETE'});if(!_0x30e974['ok']){const _0x169ac8=await _0x30e974['json']()['catch'](()=>({}));throw new Error(_0x169ac8['error']||_0x169ac8['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x30e974['statusText']);}return await _0x30e974['json']();},async 'discardFile'(_0x14194c,_0x1e3b3b,_0x59fb22){if(!_0x14194c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e3b3b)throw new Error('File\x20path\x20is\x20required');if(!_0x59fb22)throw new Error('Repository\x20path\x20is\x20required');const _0x448955=await fetch(API_BASE+'/tasks/'+_0x14194c+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1e3b3b,'repoPath':_0x59fb22})});if(!_0x448955['ok']){const _0x5010cc=await _0x448955['json']()['catch'](()=>({}));throw new Error(_0x5010cc['error']||_0x5010cc['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x448955['statusText']);}return await _0x448955['json']();},async 'followUpTask'(_0x3efe77,_0x154c7c={}){if(!_0x3efe77)throw new Error('Task\x20ID\x20is\x20required');if(!_0x154c7c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x557e34,_0x51d72a={};if(_0x154c7c['files']&&_0x154c7c['files']['length']>0x0){const _0x263a22=new FormData();_0x263a22['append']('instructions',_0x154c7c['instructions']);for(const _0x128b3c of _0x154c7c['files']){_0x263a22['append']('attachments',_0x128b3c);}_0x557e34=_0x263a22;}else _0x51d72a['Content-Type']='application/json',_0x557e34=JSON['stringify']({'instructions':_0x154c7c['instructions']});const _0x196f03=await fetch(API_BASE+'/tasks/'+_0x3efe77+'/follow-up',{'method':'POST','headers':_0x51d72a,'body':_0x557e34});if(!_0x196f03['ok']){const _0x5eeefa=await _0x196f03['json']()['catch'](()=>({}));throw new Error(_0x5eeefa['error']||_0x5eeefa['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x196f03['statusText']);}return await _0x196f03['json']();},async 'getTaskRewindPoints'(_0x4b1c8f){if(!_0x4b1c8f)throw new Error('Task\x20ID\x20is\x20required');const _0x6c6439=await fetch(API_BASE+'/tasks/'+_0x4b1c8f+'/rewind-points');if(!_0x6c6439['ok']){const _0x34fce7=await _0x6c6439['json']()['catch'](()=>({}));throw new Error(_0x34fce7['error']||_0x34fce7['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x6c6439['statusText']);}return await _0x6c6439['json']();},async 'rewindTask'(_0x253278,_0x18e4b2={}){if(!_0x253278)throw new Error('Task\x20ID\x20is\x20required');const _0x367b4a=Number['isInteger'](_0x18e4b2['targetFollowUpCount'])?_0x18e4b2['targetFollowUpCount']:0x0,_0x38d7f3={'targetFollowUpCount':_0x367b4a};typeof _0x18e4b2['instructions']==='string'&&_0x18e4b2['instructions']['trim']()&&(_0x38d7f3['instructions']=_0x18e4b2['instructions']['trim']());typeof _0x18e4b2['rewindFiles']==='boolean'&&(_0x38d7f3['rewindFiles']=_0x18e4b2['rewindFiles']);const _0x3d2ce3=await fetch(API_BASE+'/tasks/'+_0x253278+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38d7f3)});if(!_0x3d2ce3['ok']){const _0x2dbd83=await _0x3d2ce3['json']()['catch'](()=>({}));throw new Error(_0x2dbd83['error']||_0x2dbd83['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3d2ce3['statusText']);}return await _0x3d2ce3['json']();},async 'login'(_0x58f23d,_0x349ca9){const _0x3be184=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x58f23d,'password':_0x349ca9})});if(!_0x3be184['ok']){const _0xb4ece2=await _0x3be184['json']();throw new Error(_0xb4ece2['message']||'Login\x20failed');}return await _0x3be184['json']();},async 'logout'(){const _0x971e9f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x971e9f['ok']){const _0x228c70=await _0x971e9f['json']();throw new Error(_0x228c70['message']||'Logout\x20failed');}return await _0x971e9f['json']();},async 'getCurrentUser'(){const _0x5124ae=await fetch(API_BASE+'/auth/me');if(!_0x5124ae['ok'])throw new Error('Not\x20authenticated');const _0x322bca=await _0x5124ae['json']();return _0x322bca['user'];},async 'getRolesInfo'(){const _0x411139=await fetch(API_BASE+'/users/roles');if(!_0x411139['ok']){const _0x47f5e9=await _0x411139['json']();throw new Error(_0x47f5e9['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x411139['json']();},async 'getUsers'(){const _0x38246f=await fetch(API_BASE+'/users');if(!_0x38246f['ok']){const _0x2fb357=await _0x38246f['json']();throw new Error(_0x2fb357['message']||'Failed\x20to\x20get\x20users');}return await _0x38246f['json']();},async 'getUser'(_0x36f403){const _0x55f686=await fetch(API_BASE+'/users/'+_0x36f403);if(!_0x55f686['ok']){const _0x596ddf=await _0x55f686['json']();throw new Error(_0x596ddf['message']||'Failed\x20to\x20get\x20user');}return await _0x55f686['json']();},async 'createUser'(_0x767695){const _0x2226a3=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x767695)});if(!_0x2226a3['ok']){const _0x167bd5=await _0x2226a3['json']();throw new Error(_0x167bd5['message']||'Failed\x20to\x20create\x20user');}return await _0x2226a3['json']();},async 'updateUser'(_0xb013ac,_0x88c1fa){const _0x356076=await fetch(API_BASE+'/users/'+_0xb013ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x88c1fa)});if(!_0x356076['ok']){const _0x2c7b98=await _0x356076['json']();throw new Error(_0x2c7b98['message']||'Failed\x20to\x20update\x20user');}return await _0x356076['json']();},async 'deleteUser'(_0x10e3ae){const _0x29bc31=await fetch(API_BASE+'/users/'+_0x10e3ae,{'method':'DELETE'});if(!_0x29bc31['ok']){const _0x39e447=await _0x29bc31['json']();throw new Error(_0x39e447['message']||'Failed\x20to\x20delete\x20user');}return await _0x29bc31['json']();},async 'stopAllContainers'(){const _0x19b243=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x2c0f22=await _0x19b243['json']()['catch'](()=>({}));if(!_0x19b243['ok'])throw new Error(_0x2c0f22['message']||_0x2c0f22['error']||'Failed\x20to\x20stop\x20containers');return _0x2c0f22;},async 'removeStoppedContainers'(){const _0xdf14bb=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x59a6df=await _0xdf14bb['json']()['catch'](()=>({}));if(!_0xdf14bb['ok'])throw new Error(_0x59a6df['message']||_0x59a6df['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x59a6df;},async 'pruneDockerResources'(){const _0x122290=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x51f2f6=await _0x122290['json']()['catch'](()=>({}));if(!_0x122290['ok'])throw new Error(_0x51f2f6['message']||_0x51f2f6['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x51f2f6;},async 'createPasswordToken'(_0x23fde9,_0x34e61e='setup',_0x3e26db=![]){const _0x205779=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x23fde9,'type':_0x34e61e,'sendEmail':_0x3e26db})});if(!_0x205779['ok']){const _0x6c1d7f=await _0x205779['json']();throw new Error(_0x6c1d7f['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x205779['json']();},async 'getEmailConfig'(){const _0x1ef3da=await fetch(API_BASE+'/password/email-config');if(!_0x1ef3da['ok']){const _0x26461b=await _0x1ef3da['json']();throw new Error(_0x26461b['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x1ef3da['json']();},async 'updateTaskName'(_0x1ba7c4,_0x27f7e0){const _0x30f594=await fetch(API_BASE+'/tasks/'+_0x1ba7c4,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x27f7e0})});if(!_0x30f594['ok']){const _0x31387d=await _0x30f594['json']();throw new Error(_0x31387d['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x30f594['json']();},async 'pinTask'(_0x51d780,_0x5e2d07,_0x3c4f57=null){if(!_0x51d780)throw new Error('Task\x20ID\x20is\x20required');const _0x4e69b2={'pinned':_0x5e2d07};_0x3c4f57&&_0x3c4f57['length']>0x0&&(_0x4e69b2['additionalTaskIds']=_0x3c4f57);const _0xd76895=await fetch(API_BASE+'/tasks/'+_0x51d780+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e69b2)});if(!_0xd76895['ok']){const _0x776a55=await _0xd76895['json']();throw new Error(_0x776a55['error']||'Failed\x20to\x20pin\x20task');}return await _0xd76895['json']();},async 'setTaskWinner'(_0x2dfc50,_0x7b9f9,_0x3d861c=[]){if(!_0x2dfc50)throw new Error('Task\x20ID\x20is\x20required');const _0x86092f=await fetch(API_BASE+'/tasks/'+_0x2dfc50+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x7b9f9,'siblings':_0x3d861c})});if(!_0x86092f['ok']){const _0x1461d9=await _0x86092f['json']();throw new Error(_0x1461d9['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x86092f['json']();},async 'setTaskLoser'(_0x5e4595,_0x2266ee){if(!_0x5e4595)throw new Error('Task\x20ID\x20is\x20required');const _0x2e9b5a=await fetch(API_BASE+'/tasks/'+_0x5e4595+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2266ee})});if(!_0x2e9b5a['ok']){const _0x3c7415=await _0x2e9b5a['json']();throw new Error(_0x3c7415['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2e9b5a['json']();},async 'createTaskGroup'(_0x1ec8ae){const _0x27be4a=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1ec8ae)});if(!_0x27be4a['ok']){const _0x5ebad6=await _0x27be4a['json']();throw new Error(_0x5ebad6['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x27be4a['json']();},async 'getTaskGroups'(_0x106c7f={}){const _0x171469=new URLSearchParams();if(_0x106c7f['userId'])_0x171469['set']('userId',String(_0x106c7f['userId']));if(_0x106c7f['status'])_0x171469['set']('status',String(_0x106c7f['status']));if(_0x106c7f['limit'])_0x171469['set']('limit',String(_0x106c7f['limit']));const _0xfff19a=API_BASE+'/tasks/groups'+(_0x171469['toString']()?'?'+_0x171469['toString']():''),_0x4c8865=await fetch(_0xfff19a);if(!_0x4c8865['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4c8865['json']();},async 'getTaskGroup'(_0x583e79){const _0x44cf03=await fetch(API_BASE+'/tasks/groups/'+_0x583e79);if(!_0x44cf03['ok']){const _0x7c066d=await _0x44cf03['json']();throw new Error(_0x7c066d['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x44cf03['json']();},async 'updateTaskGroup'(_0x3b56b6,_0x3c14dc,_0x53486d){const _0x227ffb=await fetch(API_BASE+'/tasks/'+_0x3b56b6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3c14dc,'groupIndex':_0x53486d})});if(!_0x227ffb['ok']){const _0x9ab8e2=await _0x227ffb['json']();throw new Error(_0x9ab8e2['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x227ffb['json']();},async 'removeTaskFromGroup'(_0x508db5){return this['updateTaskGroup'](_0x508db5,null,null);},async 'deleteTaskGroup'(_0x40cb99,_0x54f411=![]){const _0x559abc=_0x54f411?'?deleteTasks=true':'',_0x401018=await fetch(API_BASE+'/tasks/groups/'+_0x40cb99+_0x559abc,{'method':'DELETE'});if(!_0x401018['ok']){const _0x48575f=await _0x401018['json']();throw new Error(_0x48575f['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x422106,_0x24093a){const _0x49ea93=await fetch(API_BASE+'/tasks/groups/'+_0x422106+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x24093a})});if(!_0x49ea93['ok']){const _0x247483=await _0x49ea93['json']();throw new Error(_0x247483['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x49ea93['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x1a0da1){if(!_0x1a0da1)throw new Error('Task\x20ID\x20is\x20required');const _0x4f4f54=await fetch(API_BASE+'/tasks/'+_0x1a0da1+'/comments');if(!_0x4f4f54['ok']){const _0x2260b5=await _0x4f4f54['json']()['catch'](()=>({}));throw new Error(_0x2260b5['error']||'Failed\x20to\x20get\x20comments');}return await _0x4f4f54['json']();},async 'addComment'(_0x584e09,_0x1b6db4){if(!_0x584e09)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1b6db4)throw new Error('Comment\x20content\x20is\x20required');const _0x5968b2=await fetch(API_BASE+'/tasks/'+_0x584e09+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1b6db4})});if(!_0x5968b2['ok']){const _0x5d4977=await _0x5968b2['json']()['catch'](()=>({}));throw new Error(_0x5d4977['error']||'Failed\x20to\x20add\x20comment');}return await _0x5968b2['json']();},async 'updateComment'(_0x42b38f,_0x498c8d,_0x3dea9f){if(!_0x42b38f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x498c8d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3dea9f)throw new Error('Comment\x20content\x20is\x20required');const _0x25dc65=await fetch(API_BASE+'/tasks/'+_0x42b38f+'/comments/'+_0x498c8d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3dea9f})});if(!_0x25dc65['ok']){const _0x489e82=await _0x25dc65['json']()['catch'](()=>({}));throw new Error(_0x489e82['error']||'Failed\x20to\x20update\x20comment');}return await _0x25dc65['json']();},async 'deleteComment'(_0x47cdb0,_0x32e0fe){if(!_0x47cdb0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x32e0fe)throw new Error('Comment\x20ID\x20is\x20required');const _0x1b46aa=await fetch(API_BASE+'/tasks/'+_0x47cdb0+'/comments/'+_0x32e0fe,{'method':'DELETE'});if(!_0x1b46aa['ok']){const _0x57671a=await _0x1b46aa['json']()['catch'](()=>({}));throw new Error(_0x57671a['error']||'Failed\x20to\x20delete\x20comment');}return await _0x1b46aa['json']();},async 'createObjective'(_0x599500){const _0x11610b={'objective':!![],'name':_0x599500['name']||'','environment':_0x599500['environment']||null,'agents':_0x599500['agents']||[],'branches':_0x599500['branches']||{},'isPinned':_0x599500['isPinned']||![],'parentObjectiveId':_0x599500['parentObjectiveId']||null,'env_vars':_0x599500['envVars']||{},'parameters':{'instructions':_0x599500['instructions']||''},'files':_0x599500['files']||[],'jira':_0x599500['jira']||null};return this['createTask'](_0x11610b);},async 'updateObjective'(_0x42c56d,_0x52fbb7,_0xf799b1=[],_0x41da19=[]){let _0x1406bb,_0x5c3596={};const _0x175431={..._0x52fbb7};_0x41da19&&_0x41da19['length']>0x0&&(_0x175431['removeAttachments']=_0x41da19);if(_0xf799b1&&_0xf799b1['length']>0x0){const _0x16c6c1=new FormData();for(const [_0x157f13,_0x3fc782]of Object['entries'](_0x175431)){if(_0x3fc782==null)continue;typeof _0x3fc782==='object'?_0x16c6c1['append'](_0x157f13,JSON['stringify'](_0x3fc782)):_0x16c6c1['append'](_0x157f13,String(_0x3fc782));}for(const _0x3b0b8b of _0xf799b1){_0x16c6c1['append']('attachments',_0x3b0b8b);}_0x1406bb=_0x16c6c1;}else _0x5c3596['Content-Type']='application/json',_0x1406bb=JSON['stringify'](_0x175431);const _0x5aa64d=await fetch(API_BASE+'/tasks/'+_0x42c56d,{'method':'PATCH','headers':_0x5c3596,'body':_0x1406bb});if(!_0x5aa64d['ok']){const _0x1527f3=await _0x5aa64d['json']();throw new Error(_0x1527f3['error']||'Failed\x20to\x20update\x20objective');}return await _0x5aa64d['json']();},async 'deleteObjective'(_0x4ad2aa){return this['deleteTask'](_0x4ad2aa);},async 'launchObjective'(_0x5b999,_0x24207d={}){const _0x1bab3a=await fetch(API_BASE+'/tasks/'+_0x5b999+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24207d)});if(!_0x1bab3a['ok']){const _0x54be60=await _0x1bab3a['json']();throw new Error(_0x54be60['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1bab3a['json']();},async 'getObjectiveAttachments'(_0x371f90){return this['getTaskAttachments'](_0x371f90);},async 'createJudgeTask'({environment:_0x3f321a,judgeAgent:_0x5d651b,groupId:_0x12e43b,taskIds:_0x276113,judgeCustomInstructions:_0xbd33b6,isPinned:_0x542e93}){const _0xf39a7=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3f321a,'judgeAgent':_0x5d651b,'groupId':_0x12e43b,'taskIds':_0x276113,'judgeCustomInstructions':_0xbd33b6,'isPinned':_0x542e93})});if(!_0xf39a7['ok']){const _0x29dbef=await _0xf39a7['json']();throw new Error(_0x29dbef['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0xf39a7['json']();},async 'getJudgeTasks'(_0x3d27c9){const _0x23d583=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3d27c9));if(!_0x23d583['ok']){const _0x4671f4=await _0x23d583['json']();throw new Error(_0x4671f4['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x23d583['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x32f7b1,_0x319c76,_0xaa00c9=''){const _0x3fcf7a=await fetch(API_BASE+'/tasks/'+_0x32f7b1+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x319c76,'customPreamble':_0xaa00c9})});if(!_0x3fcf7a['ok']){const _0x2ab308=await _0x3fcf7a['json']();throw new Error(_0x2ab308['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x3fcf7a['json']();},async 'getJiraConfig'(){const _0x15f174=await fetch(API_BASE+'/jira/config');if(!_0x15f174['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x15f174['json']();},async 'getJiraIssue'(_0x1a8059){const _0x3d820c=await fetch(API_BASE+'/jira/issues/'+_0x1a8059);if(!_0x3d820c['ok']){const _0x47c365=await _0x3d820c['json']()['catch'](()=>({}));throw new Error(_0x47c365['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x3d820c['statusText']);}return await _0x3d820c['json']();},async 'searchJiraIssues'(_0x283400,_0x9dbd25=0x14){const _0x2d6986=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x283400,'maxResults':_0x9dbd25})});if(!_0x2d6986['ok']){const _0x242f07=await _0x2d6986['json']()['catch'](()=>({}));throw new Error(_0x242f07['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x2d6986['statusText']);}return await _0x2d6986['json']();},async 'postJiraComment'(_0x2a40a5,_0x17a9ae){const _0x4e3564=await fetch(API_BASE+'/jira/issues/'+_0x2a40a5+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x17a9ae})});if(!_0x4e3564['ok']){const _0x7f51a3=await _0x4e3564['json']()['catch'](()=>({}));throw new Error(_0x7f51a3['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4e3564['statusText']);}return await _0x4e3564['json']();},async 'getJiraComments'(_0x16891d){const _0x1e31f6=await fetch(API_BASE+'/jira/issues/'+_0x16891d+'/comments');if(!_0x1e31f6['ok']){const _0x2d0378=await _0x1e31f6['json']()['catch'](()=>({}));throw new Error(_0x2d0378['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1e31f6['statusText']);}return await _0x1e31f6['json']();},async 'promptParameter'({environment:_0x4ddb47,command:_0x5899bf,parser:parser='json'}){const _0xe34122=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4ddb47,'command':_0x5899bf,'parser':parser})});if(!_0xe34122['ok']){const _0x58ab2b=await _0xe34122['json']()['catch'](()=>({}));throw new Error(_0x58ab2b['message']||_0x58ab2b['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xe34122['statusText']);}return await _0xe34122['json']();},async 'promptParameterStream'(_0x42dd0d,_0x3b7555){const _0x2d5927=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42dd0d)});if(!_0x2d5927['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2d5927['statusText']);const _0x4ae719=_0x2d5927['body']['getReader'](),_0x57c5cc=new TextDecoder();let _0x5d6399='';return new Promise((_0x4e1573,_0x12828d)=>{const _0x3a2ddd=async()=>{try{const {done:_0x49c7c7,value:_0x57f075}=await _0x4ae719['read']();if(_0x49c7c7)return;_0x5d6399+=_0x57c5cc['decode'](_0x57f075,{'stream':!![]});const _0xfb1f75=_0x5d6399['split']('\x0a\x0a');_0x5d6399=_0xfb1f75['pop']()||'';for(const _0x339742 of _0xfb1f75){if(!_0x339742['trim']())continue;const _0x23e156=_0x339742['split']('\x0a');let _0x388eb8='message',_0x100687='';for(const _0x164d1f of _0x23e156){if(_0x164d1f['startsWith']('event:'))_0x388eb8=_0x164d1f['substring'](0x6)['trim']();else _0x164d1f['startsWith']('data:')&&(_0x100687=_0x164d1f['substring'](0x5)['trim']());}if(!_0x100687)continue;try{const _0x2f0d36=JSON['parse'](_0x100687);if(_0x388eb8==='progress'&&_0x3b7555)_0x3b7555(_0x2f0d36['stage'],_0x2f0d36['message']);else{if(_0x388eb8==='result'){_0x4e1573(_0x2f0d36);return;}else{if(_0x388eb8==='error'){let _0x37f542=_0x2f0d36['message']||_0x2f0d36['error']||'Prompt\x20command\x20failed';_0x2f0d36['rawOutput']&&(_0x37f542+='\x0a\x0aRaw\x20output:\x0a'+_0x2f0d36['rawOutput']);_0x12828d(new Error(_0x37f542));return;}}}}catch(_0x3ca1dd){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3ca1dd),console['error']('Event\x20type:',_0x388eb8),console['error']('Event\x20data:',_0x100687),console['error']('First\x20200\x20chars:',_0x100687['substring'](0x0,0xc8)),_0x12828d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3ca1dd['message']+'\x0a\x0aData:\x20'+_0x100687['substring'](0x0,0x1f4)));return;}}_0x3a2ddd();}catch(_0xb11f98){_0x12828d(_0xb11f98);}};_0x3a2ddd();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x228a57){const _0x27aebd=await fetch(''+API_BASE+_0x228a57);if(!_0x27aebd['ok']){const _0x31235e=await _0x27aebd['json']()['catch'](()=>({'error':_0x27aebd['statusText']})),_0x198d66=new Error(_0x31235e['error']||_0x31235e['message']||_0x27aebd['statusText']);if(_0x31235e['detail']!==undefined)_0x198d66['detail']=_0x31235e['detail'];throw _0x198d66;}return await _0x27aebd['json']();},async 'post'(_0x2e47a0,_0x5d4f75){const _0xac1655=await fetch(''+API_BASE+_0x2e47a0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d4f75)});if(!_0xac1655['ok']){const _0x1cd886=await _0xac1655['json']()['catch'](()=>({'error':_0xac1655['statusText']})),_0xdfc0de=new Error(_0x1cd886['error']||_0x1cd886['message']||_0xac1655['statusText']);if(_0x1cd886['detail']!==undefined)_0xdfc0de['detail']=_0x1cd886['detail'];throw _0xdfc0de;}return await _0xac1655['json']();},async 'put'(_0x45c291,_0x363503){const _0x12049e=await fetch(''+API_BASE+_0x45c291,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x363503)});if(!_0x12049e['ok']){const _0x378b3e=await _0x12049e['json']()['catch'](()=>({'error':_0x12049e['statusText']})),_0x5e4c5=new Error(_0x378b3e['error']||_0x378b3e['message']||_0x12049e['statusText']);if(_0x378b3e['detail']!==undefined)_0x5e4c5['detail']=_0x378b3e['detail'];throw _0x5e4c5;}return await _0x12049e['json']();},async 'delete'(_0x33f346,_0x5c399a){const _0x49f777={'method':'DELETE'};_0x5c399a&&(_0x49f777['headers']={'Content-Type':'application/json'},_0x49f777['body']=JSON['stringify'](_0x5c399a));const _0x3a43cd=await fetch(''+API_BASE+_0x33f346,_0x49f777);if(!_0x3a43cd['ok']){const _0x39ab94=await _0x3a43cd['json']()['catch'](()=>({'error':_0x3a43cd['statusText']})),_0x4596b7=new Error(_0x39ab94['error']||_0x39ab94['message']||_0x3a43cd['statusText']);if(_0x39ab94['detail']!==undefined)_0x4596b7['detail']=_0x39ab94['detail'];throw _0x4596b7;}return await _0x3a43cd['json']();},async 'getSkills'(){const _0x583aad=await fetch(API_BASE+'/skills');if(!_0x583aad['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x583aad['statusText']);return await _0x583aad['json']();},async 'getSkill'(_0x61cb57){const _0x5e60cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x61cb57));if(!_0x5e60cc['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5e60cc['statusText']);return await _0x5e60cc['json']();},async 'createSkill'(_0x503280){const _0x17ae51=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x503280)});if(!_0x17ae51['ok']){const _0xa7eda8=await _0x17ae51['json']()['catch'](()=>({'error':_0x17ae51['statusText']})),_0x1183c2=new Error(_0xa7eda8['error']||_0xa7eda8['message']||_0x17ae51['statusText']);if(_0xa7eda8['detail']!==undefined)_0x1183c2['detail']=_0xa7eda8['detail'];throw _0x1183c2;}return await _0x17ae51['json']();},async 'updateSkill'(_0x12ac6c,_0x564f3e){const _0x3c60fa=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x12ac6c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x564f3e)});if(!_0x3c60fa['ok']){const _0x31f5cc=await _0x3c60fa['json']()['catch'](()=>({'error':_0x3c60fa['statusText']})),_0x3829d0=new Error(_0x31f5cc['error']||_0x31f5cc['message']||_0x3c60fa['statusText']);if(_0x31f5cc['detail']!==undefined)_0x3829d0['detail']=_0x31f5cc['detail'];throw _0x3829d0;}return await _0x3c60fa['json']();},async 'deleteSkill'(_0x2fa002){const _0x32f45e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2fa002),{'method':'DELETE'});if(!_0x32f45e['ok']){const _0x5dbcf2=await _0x32f45e['json']()['catch'](()=>({'error':_0x32f45e['statusText']})),_0x2305a8=new Error(_0x5dbcf2['error']||_0x5dbcf2['message']||_0x32f45e['statusText']);if(_0x5dbcf2['detail']!==undefined)_0x2305a8['detail']=_0x5dbcf2['detail'];throw _0x2305a8;}return await _0x32f45e['json']();},async 'getSkillFile'(_0x1dfe2c,_0x230c77){const _0x37fc1f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1dfe2c)+'/files/'+_0x230c77);if(!_0x37fc1f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x37fc1f['statusText']);return await _0x37fc1f['json']();},async 'saveSkillFile'(_0x2bceac,_0x55b4d4,_0x1d4ca3){const _0x167da4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2bceac)+'/files/'+_0x55b4d4,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d4ca3})});if(!_0x167da4['ok']){const _0x21839f=await _0x167da4['json']()['catch'](()=>({'error':_0x167da4['statusText']})),_0x562abb=new Error(_0x21839f['error']||_0x21839f['message']||_0x167da4['statusText']);if(_0x21839f['detail']!==undefined)_0x562abb['detail']=_0x21839f['detail'];throw _0x562abb;}return await _0x167da4['json']();},async 'deleteSkillFile'(_0x2aa230,_0x11b1a){const _0x29bb31=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2aa230)+'/files/'+_0x11b1a,{'method':'DELETE'});if(!_0x29bb31['ok']){const _0x3ae048=await _0x29bb31['json']()['catch'](()=>({'error':_0x29bb31['statusText']})),_0x434002=new Error(_0x3ae048['error']||_0x3ae048['message']||_0x29bb31['statusText']);if(_0x3ae048['detail']!==undefined)_0x434002['detail']=_0x3ae048['detail'];throw _0x434002;}return await _0x29bb31['json']();},async 'pullSkills'(){const _0x175661=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x175661['ok']){const _0x1848b8=await _0x175661['json']()['catch'](()=>({'error':_0x175661['statusText']})),_0x232780=new Error(_0x1848b8['error']||_0x1848b8['message']||_0x175661['statusText']);if(_0x1848b8['detail']!==undefined)_0x232780['detail']=_0x1848b8['detail'];throw _0x232780;}return await _0x175661['json']();},async 'commitSkills'(_0x1e4478,_0x3a574e={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3a574e,_0x111c54=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1e4478,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x111c54['ok']){const _0xd04d39=await _0x111c54['json']()['catch'](()=>({'error':_0x111c54['statusText']})),_0x15e851=new Error(_0xd04d39['error']||_0xd04d39['message']||_0x111c54['statusText']);if(_0xd04d39['detail']!==undefined)_0x15e851['detail']=_0xd04d39['detail'];throw _0x15e851;}return await _0x111c54['json']();},async 'discardSkillsChanges'(){const _0x1a22bd=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1a22bd['ok']){const _0x217e6d=await _0x1a22bd['json']()['catch'](()=>({'error':_0x1a22bd['statusText']})),_0x53f22c=new Error(_0x217e6d['error']||_0x217e6d['message']||_0x1a22bd['statusText']);if(_0x217e6d['detail']!==undefined)_0x53f22c['detail']=_0x217e6d['detail'];throw _0x53f22c;}return await _0x1a22bd['json']();},async 'getSkillCatalog'(){const _0x10934b=await fetch(API_BASE+'/external-skills/catalog');if(!_0x10934b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x10934b['statusText']);return await _0x10934b['json']();},async 'getImportedSkillsRegistry'(){const _0x3d5c2c=await fetch(API_BASE+'/external-skills/registry');if(!_0x3d5c2c['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3d5c2c['statusText']);return await _0x3d5c2c['json']();},async 'importCatalogSkill'(_0xc79c1d){const _0x37b83b=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0xc79c1d})});if(!_0x37b83b['ok']){const _0x155496=await _0x37b83b['json']()['catch'](()=>({'error':_0x37b83b['statusText']})),_0x379dce=new Error(_0x155496['error']||_0x155496['message']||_0x37b83b['statusText']);if(_0x155496['detail']!==undefined)_0x379dce['detail']=_0x155496['detail'];throw _0x379dce;}return await _0x37b83b['json']();},async 'importSkillFromGit'(_0x340512,_0x291480,_0xdb219b='main',_0x44cd40=null){const _0x423358=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x340512,'skillPath':_0x291480,'branch':_0xdb219b,'skillId':_0x44cd40})});if(!_0x423358['ok']){const _0x4405e5=await _0x423358['json']()['catch'](()=>({'error':_0x423358['statusText']})),_0x5b26c3=new Error(_0x4405e5['error']||_0x4405e5['message']||_0x423358['statusText']);if(_0x4405e5['detail']!==undefined)_0x5b26c3['detail']=_0x4405e5['detail'];throw _0x5b26c3;}return await _0x423358['json']();},async 'probeMarketplace'(_0x3b0bda,_0x365c79='main'){const _0xe3ab2e=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3b0bda,'branch':_0x365c79})});if(!_0xe3ab2e['ok']){const _0x3a7a03=await _0xe3ab2e['json']()['catch'](()=>({'error':_0xe3ab2e['statusText']})),_0xf70b5b=new Error(_0x3a7a03['error']||_0x3a7a03['message']||_0xe3ab2e['statusText']);if(_0x3a7a03['detail']!==undefined)_0xf70b5b['detail']=_0x3a7a03['detail'];throw _0xf70b5b;}return await _0xe3ab2e['json']();},async 'importMarketplaceBundle'(_0x42d48d,_0x14cce7,_0x4b126d,_0x550af9=null){const _0x546695=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x42d48d,'branch':_0x14cce7,'bundleId':_0x4b126d,'selectedSkills':_0x550af9})});if(!_0x546695['ok']){const _0x36e089=await _0x546695['json']()['catch'](()=>({'error':_0x546695['statusText']})),_0x2dee83=new Error(_0x36e089['error']||_0x36e089['message']||_0x546695['statusText']);if(_0x36e089['detail']!==undefined)_0x2dee83['detail']=_0x36e089['detail'];throw _0x2dee83;}return await _0x546695['json']();},async 'importSkillFromFolder'(_0x42b112,_0x4bc7af=null){const _0x5c0448=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x42b112,'skillId':_0x4bc7af})});if(!_0x5c0448['ok']){const _0x7076f2=await _0x5c0448['json']()['catch'](()=>({'error':_0x5c0448['statusText']})),_0x3652a1=new Error(_0x7076f2['error']||_0x7076f2['message']||_0x5c0448['statusText']);if(_0x7076f2['detail']!==undefined)_0x3652a1['detail']=_0x7076f2['detail'];throw _0x3652a1;}return await _0x5c0448['json']();},async 'importSkillFromNpm'(_0x23d541,_0x3c8320='latest',_0x1676bc=null,_0x18c096=null){const _0x45398b=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x23d541,'version':_0x3c8320,'skillId':_0x1676bc,'registry':_0x18c096})});if(!_0x45398b['ok']){const _0x593a12=await _0x45398b['json']()['catch'](()=>({'error':_0x45398b['statusText']})),_0xc6a97e=new Error(_0x593a12['error']||_0x593a12['message']||_0x45398b['statusText']);if(_0x593a12['detail']!==undefined)_0xc6a97e['detail']=_0x593a12['detail'];throw _0xc6a97e;}return await _0x45398b['json']();},async 'checkSkillUpdates'(_0x15d3dc){const _0x2c1113=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x15d3dc)+'/check-updates',{'method':'POST'});if(!_0x2c1113['ok']){const _0x6c2e3=await _0x2c1113['json']()['catch'](()=>({'error':_0x2c1113['statusText']})),_0x58dd15=new Error(_0x6c2e3['error']||_0x6c2e3['message']||_0x2c1113['statusText']);if(_0x6c2e3['detail']!==undefined)_0x58dd15['detail']=_0x6c2e3['detail'];throw _0x58dd15;}return await _0x2c1113['json']();},async 'updateExternalSkill'(_0x354591){const _0xd990b7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x354591)+'/update',{'method':'POST'});if(!_0xd990b7['ok']){const _0x36cb90=await _0xd990b7['json']()['catch'](()=>({'error':_0xd990b7['statusText']})),_0xff76cc=new Error(_0x36cb90['error']||_0x36cb90['message']||_0xd990b7['statusText']);if(_0x36cb90['detail']!==undefined)_0xff76cc['detail']=_0x36cb90['detail'];throw _0xff76cc;}return await _0xd990b7['json']();},async 'updateSkillFlags'(_0x5076cc,_0x4c2456){const _0x5015fd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5076cc)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4c2456})});if(!_0x5015fd['ok']){const _0x57081b=await _0x5015fd['json']()['catch'](()=>({'error':_0x5015fd['statusText']})),_0x21b5ef=new Error(_0x57081b['error']||_0x57081b['message']||_0x5015fd['statusText']);if(_0x57081b['detail']!==undefined)_0x21b5ef['detail']=_0x57081b['detail'];throw _0x21b5ef;}return await _0x5015fd['json']();},async 'removeFromImportedRegistry'(_0x38a80c){const _0x463a22=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x38a80c)+'/registry',{'method':'DELETE'});if(!_0x463a22['ok']){const _0x55aa42=await _0x463a22['json']()['catch'](()=>({'error':_0x463a22['statusText']})),_0x1c71d2=new Error(_0x55aa42['error']||_0x55aa42['message']||_0x463a22['statusText']);if(_0x55aa42['detail']!==undefined)_0x1c71d2['detail']=_0x55aa42['detail'];throw _0x1c71d2;}return await _0x463a22['json']();},async 'getTeams'(){const _0x180f26=await fetch(API_BASE+'/teams');if(!_0x180f26['ok']){const _0x2ddc37=await _0x180f26['json']()['catch'](()=>({'message':_0x180f26['statusText']}));throw new Error(_0x2ddc37['message']||'Failed\x20to\x20get\x20teams');}return await _0x180f26['json']();},async 'getTeam'(_0x5a4303){const _0x4f474d=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5a4303));if(!_0x4f474d['ok']){const _0x323210=await _0x4f474d['json']()['catch'](()=>({'message':_0x4f474d['statusText']}));throw new Error(_0x323210['message']||'Failed\x20to\x20get\x20team');}return await _0x4f474d['json']();},async 'createTeam'(_0x1d3e6d){const _0x10ab13=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d3e6d)});if(!_0x10ab13['ok']){const _0x2d30b0=await _0x10ab13['json']()['catch'](()=>({'message':_0x10ab13['statusText']}));throw new Error(_0x2d30b0['message']||'Failed\x20to\x20create\x20team');}return await _0x10ab13['json']();},async 'updateTeam'(_0x397200,_0x43325){const _0x1223a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x397200),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43325)});if(!_0x1223a2['ok']){const _0x49cb8e=await _0x1223a2['json']()['catch'](()=>({'message':_0x1223a2['statusText']}));throw new Error(_0x49cb8e['message']||'Failed\x20to\x20update\x20team');}return await _0x1223a2['json']();},async 'deleteTeam'(_0x5c5fb3){const _0x15c494=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5c5fb3),{'method':'DELETE'});if(!_0x15c494['ok']){const _0x248363=await _0x15c494['json']()['catch'](()=>({'message':_0x15c494['statusText']}));throw new Error(_0x248363['message']||'Failed\x20to\x20delete\x20team');}return await _0x15c494['json']();},async 'addTeamMember'(_0x216296,_0x3593e9){const _0x115550=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x216296)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3593e9})});if(!_0x115550['ok']){const _0x2184f4=await _0x115550['json']()['catch'](()=>({'message':_0x115550['statusText']}));throw new Error(_0x2184f4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x115550['json']();},async 'removeTeamMember'(_0x3ef945,_0x140824){const _0x4171d6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3ef945)+'/members/'+encodeURIComponent(_0x140824),{'method':'DELETE'});if(!_0x4171d6['ok']){const _0x5c8ac0=await _0x4171d6['json']()['catch'](()=>({'message':_0x4171d6['statusText']}));throw new Error(_0x5c8ac0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4171d6['json']();},async 'getBindings'(_0xefdd4f={}){const _0x477a9f=new URLSearchParams();if(_0xefdd4f['resource_type'])_0x477a9f['set']('resource_type',_0xefdd4f['resource_type']);if(_0xefdd4f['resource_id'])_0x477a9f['set']('resource_id',_0xefdd4f['resource_id']);if(_0xefdd4f['subject_type'])_0x477a9f['set']('subject_type',_0xefdd4f['subject_type']);if(_0xefdd4f['subject_id'])_0x477a9f['set']('subject_id',_0xefdd4f['subject_id']);const _0x438447=_0x477a9f['toString'](),_0x4ce436=await fetch(API_BASE+'/bindings'+(_0x438447?'?'+_0x438447:''));if(!_0x4ce436['ok']){const _0x3723ed=await _0x4ce436['json']()['catch'](()=>({'message':_0x4ce436['statusText']}));throw new Error(_0x3723ed['message']||'Failed\x20to\x20get\x20bindings');}return await _0x4ce436['json']();},async 'createBinding'(_0x3afb6b){const _0x5d6455=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3afb6b)});if(!_0x5d6455['ok']){const _0x1622c1=await _0x5d6455['json']()['catch'](()=>({'message':_0x5d6455['statusText']}));throw new Error(_0x1622c1['message']||'Failed\x20to\x20create\x20binding');}return await _0x5d6455['json']();},async 'updateBinding'(_0x1e73e2,_0x59ddcb){const _0x48287b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1e73e2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59ddcb)});if(!_0x48287b['ok']){const _0x1890cd=await _0x48287b['json']()['catch'](()=>({'message':_0x48287b['statusText']}));throw new Error(_0x1890cd['message']||'Failed\x20to\x20update\x20binding');}return await _0x48287b['json']();},async 'deleteBinding'(_0x22de82){const _0x46dd19=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x22de82),{'method':'DELETE'});if(!_0x46dd19['ok']){const _0x5b06ac=await _0x46dd19['json']()['catch'](()=>({'message':_0x46dd19['statusText']}));throw new Error(_0x5b06ac['message']||'Failed\x20to\x20delete\x20binding');}return await _0x46dd19['json']();},async 'getRoleDefinitions'(){const _0x38768b=await fetch(API_BASE+'/roles');if(!_0x38768b['ok']){const _0x57d5b3=await _0x38768b['json']()['catch'](()=>({'message':_0x38768b['statusText']}));throw new Error(_0x57d5b3['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x38768b['json']();},async 'getRoleDefinition'(_0x31d11b){const _0x23ee38=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31d11b));if(!_0x23ee38['ok']){const _0x5e017f=await _0x23ee38['json']()['catch'](()=>({'message':_0x23ee38['statusText']}));throw new Error(_0x5e017f['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x23ee38['json']();},async 'createRoleDefinition'(_0x2ec901){const _0x55d52d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ec901)});if(!_0x55d52d['ok']){const _0x4462db=await _0x55d52d['json']()['catch'](()=>({'message':_0x55d52d['statusText']}));throw new Error(_0x4462db['message']||_0x4462db['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x55d52d['json']();},async 'updateRoleDefinition'(_0x28beac,_0x105096){const _0x281ce3=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x28beac),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x105096)});if(!_0x281ce3['ok']){const _0x3b7214=await _0x281ce3['json']()['catch'](()=>({'message':_0x281ce3['statusText']}));throw new Error(_0x3b7214['message']||_0x3b7214['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x281ce3['json']();},async 'deleteRoleDefinition'(_0x4be677){const _0x53e99c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4be677),{'method':'DELETE'});if(!_0x53e99c['ok']){const _0x5c84ee=await _0x53e99c['json']()['catch'](()=>({'message':_0x53e99c['statusText']}));throw new Error(_0x5c84ee['message']||_0x5c84ee['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x53e99c['json']();},async 'getAvailablePermissions'(){const _0x12ceb3=await fetch(API_BASE+'/roles/available-permissions');if(!_0x12ceb3['ok']){const _0x266d4f=await _0x12ceb3['json']()['catch'](()=>({'message':_0x12ceb3['statusText']}));throw new Error(_0x266d4f['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x12ceb3['json']();},async 'getGitProviderAllowedTeams'(_0x15b1a0){const _0x28676c=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x15b1a0)+'/allowed-teams');if(!_0x28676c['ok']){const _0x28dcc2=await _0x28676c['json']()['catch'](()=>({'message':_0x28676c['statusText']}));throw new Error(_0x28dcc2['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x28676c['json']();},async 'setGitProviderAllowedTeams'(_0x433703,_0x4ab385){const _0x478329=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x433703)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x4ab385})});if(!_0x478329['ok']){const _0x1af74f=await _0x478329['json']()['catch'](()=>({'message':_0x478329['statusText']}));throw new Error(_0x1af74f['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x478329['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x473eff=toastState['baseBottom'];toastState['toasts']['forEach'](_0xc8b511=>{_0xc8b511['el']['style']['bottom']=_0x473eff+'px';const _0x4b9091=_0xc8b511['el']['offsetHeight']||toastState['defaultHeight'];_0x473eff+=_0x4b9091+toastState['gap'];});});}function removeToastById(_0x257adf){const _0x4b171e=toastState['toasts']['findIndex'](_0x1bc1a2=>_0x1bc1a2['id']===_0x257adf);if(_0x4b171e===-0x1)return;const _0x12e253=toastState['toasts'][_0x4b171e];if(_0x12e253['timeoutId'])clearTimeout(_0x12e253['timeoutId']);_0x12e253['el']['classList']['remove']('show'),setTimeout(()=>_0x12e253['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4b171e,0x1),repositionAllToasts();}function registerToast(_0x52f7e7){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x52f7e7),repositionAllToasts(),_0x52f7e7['id'];}function getNextToastId(){return toastState['nextId']++;}export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x360b23){const _0x48deea=new Date(_0x360b23),_0x4b3552=new Date(),_0x5dfb7d=_0x4b3552-_0x48deea,_0x511432=Math['floor'](_0x5dfb7d/0x3e8),_0xeeb92d=Math['floor'](_0x511432/0x3c),_0x2286f0=Math['floor'](_0xeeb92d/0x3c),_0x1ed5b4=Math['floor'](_0x2286f0/0x18);if(_0x511432<0x3c)return'now';if(_0xeeb92d<0x3c)return _0xeeb92d+'m\x20ago';if(_0x2286f0<0x18)return _0x2286f0+'h\x20ago';return _0x1ed5b4+'d\x20ago';},'getStatusIcon'(_0x27d8d3){switch(_0x27d8d3){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x227730){switch(_0x227730){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x4edc0b,_0x3efa44=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x266155={};_0x266155['text/plain']=new Blob([_0x4edc0b],{'type':'text/plain'});_0x3efa44&&(_0x266155['text/html']=new Blob([_0x3efa44],{'type':'text/html'}));const _0x1d6af5=new ClipboardItem(_0x266155);return await navigator['clipboard']['write']([_0x1d6af5]),!![];}catch(_0x374618){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x374618);}try{const _0x19bc4f=_0x8d9de8=>{_0x8d9de8['preventDefault'](),_0x8d9de8['clipboardData']['setData']('text/plain',_0x4edc0b),_0x3efa44&&_0x8d9de8['clipboardData']['setData']('text/html',_0x3efa44);};document['addEventListener']('copy',_0x19bc4f);const _0x47909c=document['execCommand']('copy');document['removeEventListener']('copy',_0x19bc4f);if(_0x47909c)return!![];}catch(_0x5b8ff1){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x5b8ff1);}try{const _0x11f15c=document['createElement']('textarea');_0x11f15c['value']=_0x4edc0b,_0x11f15c['style']['position']='fixed',_0x11f15c['style']['opacity']='0',_0x11f15c['style']['pointerEvents']='none',document['body']['appendChild'](_0x11f15c),_0x11f15c['select']();const _0x439c26=document['execCommand']('copy');return document['body']['removeChild'](_0x11f15c),_0x439c26;}catch(_0x1de342){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1de342),![];}},'showToast'(_0x4d101d,_0x516447='info'){const _0x21b7ab=getNextToastId(),_0x282527=document['createElement']('div');_0x282527['className']='toast\x20toast-'+_0x516447,_0x282527['textContent']=_0x4d101d,_0x282527['dataset']['toastId']=_0x21b7ab,document['body']['appendChild'](_0x282527);const _0x1932e2=_0x516447==='error'?0x2710:0xbb8,_0x1b80c2=setTimeout(()=>{removeToastById(_0x21b7ab);},_0x1932e2),_0x3e1471={'id':_0x21b7ab,'el':_0x282527,'timeoutId':_0x1b80c2};return registerToast(_0x3e1471),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x282527['classList']['add']('show');});}),_0x21b7ab;},'showError'(_0x100aa0){console['error'](_0x100aa0);const _0x4770cf=typeof _0x100aa0==='string'?_0x100aa0:_0x100aa0['message']||'An\x20error\x20occurred';this['showToast'](_0x4770cf,'error');},'showSuccess'(_0x76384b){this['showToast'](_0x76384b,'success');},'capitalize'(_0x5653cd){if(!_0x5653cd)return'';return _0x5653cd['charAt'](0x0)['toUpperCase']()+_0x5653cd['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x146bcd){if(_0x146bcd===null||_0x146bcd===undefined)return'';return String(_0x146bcd)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');},'ansiToHtml'(_0x5b00bf){if(_0x5b00bf===null||_0x5b00bf===undefined)return'';let _0x3ac0b5=this['escapeHtml'](_0x5b00bf);const _0x45b046={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x1af33d={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x1370fb=0x0;return _0x3ac0b5=_0x3ac0b5['replace'](/\x1b\[([0-9;]*)m/g,(_0x3680d6,_0x36f69e)=>{if(!_0x36f69e||_0x36f69e==='0'){const _0x15aad9='</span>'['repeat'](_0x1370fb);return _0x1370fb=0x0,_0x15aad9;}const _0x213bc0=_0x36f69e['split'](';'),_0x3dbb40=[];for(const _0x8c7c72 of _0x213bc0){if(_0x8c7c72==='1')_0x3dbb40['push']('font-weight:bold');else{if(_0x8c7c72==='2')_0x3dbb40['push']('opacity:0.7');else{if(_0x8c7c72==='3')_0x3dbb40['push']('font-style:italic');else{if(_0x8c7c72==='4')_0x3dbb40['push']('text-decoration:underline');else{if(_0x8c7c72==='9')_0x3dbb40['push']('text-decoration:line-through');else{if(_0x45b046[_0x8c7c72])_0x3dbb40['push']('color:'+_0x45b046[_0x8c7c72]);else{if(_0x1af33d[_0x8c7c72])_0x3dbb40['push']('background-color:'+_0x1af33d[_0x8c7c72]);}}}}}}}if(_0x3dbb40['length']>0x0)return _0x1370fb++,'<span\x20style=\x22'+_0x3dbb40['join'](';')+'\x22>';return'';}),_0x3ac0b5+='</span>'['repeat'](_0x1370fb),_0x3ac0b5=_0x3ac0b5['replace'](/\\u001b\[([0-9;]*)m/g,(_0x6eb13c,_0x251a4a)=>{if(!_0x251a4a||_0x251a4a==='0')return'';const _0x43d945=_0x251a4a['split'](';'),_0x3d6435=[];for(const _0x5931a4 of _0x43d945){if(_0x5931a4==='1')_0x3d6435['push']('font-weight:bold');else{if(_0x45b046[_0x5931a4])_0x3d6435['push']('color:'+_0x45b046[_0x5931a4]);else{if(_0x1af33d[_0x5931a4])_0x3d6435['push']('background-color:'+_0x1af33d[_0x5931a4]);}}}if(_0x3d6435['length']>0x0)return'<span\x20style=\x22'+_0x3d6435['join'](';')+'\x22>';return'';}),_0x3ac0b5;},'showModal'({title:_0xb9fcd5,content:_0x46d4cf,buttons:buttons=[]}){const _0x196253='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0xb9fcd5)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x46d4cf+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x334ecb,_0x4320d0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x334ecb['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4320d0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x334ecb['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x45400c=document['createElement']('div');_0x45400c['id']='utils-modal',_0x45400c['className']='modal',_0x45400c['innerHTML']=_0x196253,document['body']['appendChild'](_0x45400c);const _0x3b916a=document['getElementById']('utils-modal-close');_0x3b916a&&_0x3b916a['addEventListener']('click',()=>this['hideModal']());const _0x2f15ca=_0x45400c['querySelectorAll']('[data-btn-index]');_0x2f15ca['forEach'](_0x161146=>{const _0x2dfa07=parseInt(_0x161146['dataset']['btnIndex']);buttons[_0x2dfa07]?.['onClick']&&_0x161146['addEventListener']('click',buttons[_0x2dfa07]['onClick']);});const _0x36e025=document['getElementById']('utils-modal-overlay');_0x36e025&&_0x36e025['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x3182a1=document['getElementById']('utils-modal');_0x3182a1&&_0x3182a1['remove']();},'parseKeyValuePairs'(_0x5bae83){const _0x5adf00={};if(!_0x5bae83)return _0x5adf00;return _0x5bae83['split'](/\r?\n/)['map'](_0x1d0e9a=>_0x1d0e9a['trim']())['filter'](Boolean)['forEach'](_0x8c5879=>{const _0x3a4075=_0x8c5879['indexOf']('=');if(_0x3a4075>0x0){const _0x1556bc=_0x8c5879['slice'](0x0,_0x3a4075)['trim'](),_0x4e7f6b=_0x8c5879['slice'](_0x3a4075+0x1)['trim']();if(_0x1556bc)_0x5adf00[_0x1556bc]=_0x4e7f6b;}}),_0x5adf00;},'debounce'(_0x319e30,_0x274262=0xfa){let _0x3f96db=null;return(..._0x810cc5)=>{clearTimeout(_0x3f96db),_0x3f96db=setTimeout(()=>_0x319e30['apply'](this,_0x810cc5),_0x274262);};},'formatTimestamp'(_0x1f0e4a){if(!_0x1f0e4a)return'N/A';const _0x5efcf0=new Date(_0x1f0e4a);return _0x5efcf0['toLocaleDateString']()+'\x20'+_0x5efcf0['toLocaleTimeString']();},'getQueryParams'(){const _0xdcbc5d=new URLSearchParams(window['location']['search']),_0x296a36={};for(const [_0x276459,_0x1e240d]of _0xdcbc5d){_0x296a36[_0x276459]=_0x1e240d;}return _0x296a36;},'formatDuration'(_0x78c5a,_0x42568e){if(!_0x78c5a)return'N/A';const _0xd4032b=new Date(_0x78c5a),_0x6ba020=_0x42568e?new Date(_0x42568e):new Date(),_0x5ac7ae=_0x6ba020-_0xd4032b;if(_0x5ac7ae<0x0)return'0s';const _0x79973c=Math['floor'](_0x5ac7ae/0x3e8),_0x18cf37=Math['floor'](_0x79973c/0x3c),_0x9ad4e4=Math['floor'](_0x18cf37/0x3c),_0xe46095=Math['floor'](_0x9ad4e4/0x18);if(_0x79973c<0x3c)return _0x79973c+'s';if(_0x18cf37<0x3c)return _0x18cf37+'m\x20'+_0x79973c%0x3c+'s';if(_0x9ad4e4<0x18)return _0x9ad4e4+'h\x20'+_0x18cf37%0x3c+'m\x20'+_0x79973c%0x3c+'s';return _0xe46095+'d\x20'+_0x9ad4e4%0x18+'h\x20'+_0x18cf37%0x3c+'m';},'renderMarkdown'(_0x4c34f4,_0x5ea4a0={}){if(!_0x4c34f4)return'';_0x4c34f4=this['rewriteAttachmentLinks'](_0x4c34f4,_0x5ea4a0),_0x4c34f4=this['rewriteColorSyntax'](_0x4c34f4);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x4c34f4,_0x5ea4a0);marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![]});const _0x59b1a6=new marked['Renderer'](),_0x345b18=_0x59b1a6['code']['bind'](_0x59b1a6);_0x59b1a6['code']=function(_0x485549,_0x3a7539){const _0x48587f=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x48587f&&_0x3a7539)try{const _0xef2e4f=_0x48587f['getLanguage'](_0x3a7539)?_0x3a7539:'plaintext',_0x289bc0=_0x48587f['highlight'](_0x485549,{'language':_0xef2e4f})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+_0x3a7539+'\x22>'+_0x289bc0+'</code></pre>';}catch(_0x3765b4){console['error']('Syntax\x20highlighting\x20error:',_0x3765b4);}return _0x345b18(_0x485549,_0x3a7539);};try{return marked['parse'](_0x4c34f4,{'renderer':_0x59b1a6});}catch(_0x296813){return console['error']('Markdown\x20parsing\x20error:',_0x296813),this['renderMarkdownFallback'](_0x4c34f4,_0x5ea4a0);}},'rewriteAttachmentLinks'(_0x67b6c1,_0xfa6fff={}){const _0xad4b60=typeof _0xfa6fff['resolveAttachmentUrl']==='function'?_0xfa6fff['resolveAttachmentUrl']:_0xfa6fff['taskId']?_0x22bbf0=>API_BASE+'/tasks/'+_0xfa6fff['taskId']+'/attachments/'+encodeURIComponent(_0x22bbf0):null;if(!_0xad4b60)return _0x67b6c1;return String(_0x67b6c1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x21d152,_0x2d9867)=>{const _0x2eabd4=String(_0x2d9867||'')['trim']();if(!_0x2eabd4)return _0x21d152;let _0x316e08=_0x2eabd4;try{_0x316e08=decodeURIComponent(_0x2eabd4);}catch{}const _0x157316=_0xad4b60(_0x316e08);if(!_0x157316)return _0x21d152;return']('+_0x157316+')';});},'rewriteColorSyntax'(_0x5ed622){if(!_0x5ed622)return _0x5ed622;return String(_0x5ed622)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x123e05,_0x5dbfe9,_0x11fb6a)=>{const _0x1b360c=this['rewriteColorSyntax'](_0x11fb6a);return'<span\x20style=\x22color:\x20'+_0x5dbfe9+'\x22>'+_0x1b360c+'</span>';});},'renderMarkdownFallback'(_0x3fba0a,_0x4b9b29={}){if(!_0x3fba0a)return'';_0x3fba0a=_0x3fba0a['replace'](/\r\n/g,'\x0a'),_0x3fba0a=_0x3fba0a['replace'](/\r/g,'\x0a'),_0x3fba0a=this['rewriteAttachmentLinks'](_0x3fba0a,_0x4b9b29);let _0xbd1488=this['escapeHtml'](_0x3fba0a);return _0xbd1488=_0xbd1488['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0xbd1488=_0xbd1488['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0xbd1488=_0xbd1488['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0xbd1488=_0xbd1488['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0xbd1488=_0xbd1488['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0xbd1488=_0xbd1488['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0xbd1488=_0xbd1488['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0xbd1488=_0xbd1488['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0xbd1488=_0xbd1488['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0xbd1488=_0xbd1488['replace'](/\n\n/g,'</p><p>'),_0xbd1488=_0xbd1488['replace'](/\n/g,'<br>'),'<p>'+_0xbd1488+'</p>';}};export class CustomSelect{constructor(_0x28aabb,_0xff32cd={}){this['nativeSelect']=_0x28aabb,this['options']=_0xff32cd,this['isOpen']=![],this['selectedValue']=_0x28aabb['value']||'',this['searchable']=_0xff32cd['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1c5050=document['createElement']('div');_0x1c5050['className']='custom-select';const _0x47bbdf=document['createElement']('div');_0x47bbdf['className']='custom-select-trigger',_0x47bbdf['setAttribute']('tabindex','0'),_0x47bbdf['setAttribute']('role','button'),_0x47bbdf['setAttribute']('aria-haspopup','listbox');const _0x5626ab=document['createElement']('span');_0x5626ab['className']='custom-select-trigger-text';const _0x4fc8cf=document['createElement']('span');_0x4fc8cf['className']='custom-select-arrow',_0x4fc8cf['textContent']='▼',_0x47bbdf['appendChild'](_0x5626ab),_0x47bbdf['appendChild'](_0x4fc8cf);const _0x449dc5=document['createElement']('div');_0x449dc5['className']='custom-select-dropdown',_0x449dc5['setAttribute']('role','listbox');if(this['searchable']){const _0xb4cbf7=document['createElement']('div');_0xb4cbf7['className']='custom-select-search';const _0x52719c=document['createElement']('input');_0x52719c['type']='text',_0x52719c['className']='custom-select-search-input',_0x52719c['placeholder']='Type\x20to\x20search...',_0x52719c['setAttribute']('aria-label','Search\x20options'),_0x52719c['addEventListener']('input',_0x2648e4=>{this['searchQuery']=_0x2648e4['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x52719c['addEventListener']('keydown',_0x3e729a=>{if(_0x3e729a['key']==='Escape')_0x3e729a['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3e729a['key']==='Enter'){_0x3e729a['preventDefault'](),_0x3e729a['stopPropagation']();const _0x47c1d1=_0x449dc5['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x47c1d1){const _0xf92499=_0x47c1d1['getAttribute']('data-value');this['select'](_0xf92499);}}}}),_0xb4cbf7['appendChild'](_0x52719c),_0x449dc5['appendChild'](_0xb4cbf7),this['searchInput']=_0x52719c;}const _0x1d347a=document['createElement']('div');_0x1d347a['className']='custom-select-options',_0x449dc5['appendChild'](_0x1d347a),_0x1c5050['appendChild'](_0x47bbdf),_0x1c5050['appendChild'](_0x449dc5),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1c5050,this['nativeSelect']),this['wrapper']=_0x1c5050,this['trigger']=_0x47bbdf,this['triggerText']=_0x5626ab,this['dropdown']=_0x449dc5,this['optionsContainer']=_0x1d347a,_0x47bbdf['addEventListener']('click',()=>this['toggle']()),_0x47bbdf['addEventListener']('keydown',_0x3842a4=>this['handleKeydown'](_0x3842a4)),document['addEventListener']('click',_0x380937=>{!_0x1c5050['contains'](_0x380937['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x18afdc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x18afdc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2965cb=new MutationObserver(()=>{this['updateDisabledState']();});_0x2965cb['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x42ae30=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x42ae30['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0xd71706=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0xd71706),this['trigger']['setAttribute']('aria-disabled',_0xd71706?'true':'false'),this['trigger']['setAttribute']('tabindex',_0xd71706?'-1':'0'),_0xd71706&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x577faa=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4c4eef=_0x577faa['filter'](_0x262d19=>!_0x262d19['disabled']&&!_0x262d19['hidden']);_0x577faa['forEach']((_0x5cfaab,_0x4a61e8)=>{const _0x22df6b=document['createElement']('div');_0x22df6b['className']='custom-select-option',_0x22df6b['textContent']=_0x5cfaab['textContent'],_0x22df6b['setAttribute']('data-value',_0x5cfaab['value']),_0x22df6b['setAttribute']('data-index',_0x4a61e8),_0x22df6b['setAttribute']('role','option'),_0x5cfaab['disabled']?_0x22df6b['classList']['add']('disabled'):_0x22df6b['addEventListener']('click',()=>this['select'](_0x5cfaab['value'])),_0x5cfaab['value']===this['selectedValue']&&_0x22df6b['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x22df6b),this['allOptions']['push']({'element':_0x22df6b,'text':_0x5cfaab['textContent']['toLowerCase'](),'value':_0x5cfaab['value'],'disabled':_0x5cfaab['disabled']});});if(this['searchable']&&this['searchInput']){const _0xe24938=this['searchInput']['parentElement'];_0x4c4eef['length']>0x3?_0xe24938['style']['display']='':_0xe24938['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4b0783=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x1d2f59=>{if(!_0x4b0783||_0x1d2f59['disabled'])_0x1d2f59['element']['style']['display']='';else{const _0x243d26=_0x1d2f59['text']['includes'](_0x4b0783);_0x1d2f59['element']['style']['display']=_0x243d26?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x275fa0){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x275fa0,this['nativeSelect']['value']=_0x275fa0;const _0x42b496=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x42b496),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x31876c=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x31876c&&(this['triggerText']['textContent']=_0x31876c['textContent'],_0x31876c['disabled']||_0x31876c['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2449f7=>{_0x2449f7['getAttribute']('data-value')===this['selectedValue']?_0x2449f7['classList']['add']('selected'):_0x2449f7['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x1908f3=window['getComputedStyle'](this['dropdown']);if(_0x1908f3['position']==='fixed'){const _0xe89b9e=this['trigger']['getBoundingClientRect'](),_0x2d9913=parseInt(_0x1908f3['maxHeight'])||0xc8,_0x25487e=window['innerHeight'],_0x4fafb1=_0x25487e-_0xe89b9e['bottom'],_0x21d78a=_0xe89b9e['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x514019;_0x4fafb1<_0x2d9913&&_0x21d78a>_0x4fafb1?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x25487e-_0xe89b9e['top']+'px',_0x514019=Math['min'](_0x2d9913,_0x21d78a-0xa),this['dropdown']['style']['maxHeight']=_0x514019+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xe89b9e['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x514019=Math['min'](_0x2d9913,_0x4fafb1-0xa),this['dropdown']['style']['maxHeight']=_0x514019+'px');if(this['optionsContainer']){let _0x2125a0=_0x514019;if(this['searchInput']){const _0x37cded=this['searchInput']['parentElement'];_0x37cded&&(_0x2125a0-=_0x37cded['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x2125a0)+'px';}this['dropdown']['style']['left']=_0xe89b9e['left']+'px',this['dropdown']['style']['width']=_0xe89b9e['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x2e4e2e=this['searchInput']['parentElement'];_0x2e4e2e&&_0x2e4e2e['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x487032){if(this['nativeSelect']['disabled'])return;if(_0x487032['key']==='Enter'||_0x487032['key']==='\x20')_0x487032['preventDefault'](),this['toggle']();else _0x487032['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0xf3718a='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0xf3718a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x91f5e8=document['getElementById']('confirm-dialog-close'),_0x200930=document['getElementById']('confirm-dialog-cancel'),_0x506bdc=document['getElementById']('confirm-dialog-confirm'),_0xb44cda=this['_modal']['querySelector']('.modal-overlay');_0x91f5e8['addEventListener']('click',()=>this['_resolve'](![])),_0x200930['addEventListener']('click',()=>this['_resolve'](![])),_0x506bdc['addEventListener']('click',()=>this['_resolve'](!![])),_0xb44cda['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x52987c=>{if(_0x52987c['key']==='Escape')_0x52987c['preventDefault'](),this['_resolve'](![]);else _0x52987c['key']==='Enter'&&(_0x52987c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x368192,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x1729f9=>{this['_resolvePromise']=_0x1729f9,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x368192;const _0x4b9e56=document['getElementById']('confirm-dialog-cancel'),_0x4625ce=document['getElementById']('confirm-dialog-confirm');_0x4b9e56['textContent']=cancelText,_0x4625ce['textContent']=confirmText,_0x4625ce['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x4625ce['focus']();});},'_resolve'(_0x4ae332){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4ae332),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x28e67a,_0x5e0648={}){this['container']=_0x28e67a,this['options']={'placeholder':_0x5e0648['placeholder']||'Type\x20to\x20search...','maxItems':_0x5e0648['maxItems']||0x64,'loadItems':_0x5e0648['loadItems']||(async()=>[]),'renderItem':_0x5e0648['renderItem']||(_0x45a881=>({'primary':String(_0x45a881),'secondary':''})),'onSelect':_0x5e0648['onSelect']||(()=>{}),'filterItems':_0x5e0648['filterItems']||null,'getItemValue':_0x5e0648['getItemValue']||(_0x61abdc=>_0x61abdc),'sortItems':_0x5e0648['sortItems']||null,'debounceMs':_0x5e0648['debounceMs']||0xc8,'minCharsForSearch':_0x5e0648['minCharsForSearch']||0x0,'emptyMessage':_0x5e0648['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5e0648['loadingMessage']||'Loading...','preload':_0x5e0648['preload']!==![],'searchMode':_0x5e0648['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='&times;',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x35e644=>this['onBlur'](_0x35e644)),this['input']['addEventListener']('input',_0x2235c3=>this['onInput'](_0x2235c3)),this['input']['addEventListener']('keydown',_0x365aeb=>this['onKeydown'](_0x365aeb)),this['clearBtn']['addEventListener']('mousedown',_0x2bbc92=>{_0x2bbc92['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x10398d=>{_0x10398d['preventDefault']();}),document['addEventListener']('click',_0x135f53=>{!this['wrapper']['contains'](_0x135f53['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x165086){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x165086);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x37c156){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x38ade1){const _0x592a50=_0x38ade1['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x592a50);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x592a50):this['loadAndShow'](_0x592a50);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x46478f){switch(_0x46478f['key']){case'ArrowDown':_0x46478f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x46478f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x46478f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x46478f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x203e3c){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x8f13d7=this['selectedIndex']+_0x203e3c;if(_0x8f13d7>=0x0&&_0x8f13d7<this['filteredItems']['length']){this['selectedIndex']=_0x8f13d7,this['updateSelectionHighlight']();const _0x5b7031=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5b7031[this['selectedIndex']]&&_0x5b7031[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1c93f6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1c93f6['forEach']((_0x5e7d6f,_0x5d5c62)=>{_0x5e7d6f['classList']['toggle']('keyboard-selected',_0x5d5c62===this['selectedIndex']);});}async['loadAndShow'](_0x5ad63f){this['showLoading']();try{const _0x287f2c=await this['options']['loadItems'](_0x5ad63f);if(this['options']['searchMode']==='server'){let _0xd38f32=_0x287f2c;this['options']['sortItems']&&(_0xd38f32=this['options']['sortItems']([..._0x287f2c]));this['filteredItems']=_0xd38f32;const _0x405ae7=this['filteredItems']['length']>=this['options']['maxItems'];_0x405ae7&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x405ae7),this['open']();}else this['allItems']=_0x287f2c,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5ad63f);}catch(_0x507a38){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x507a38),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x2df3d4){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x2df3d4):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x50eade=this['filteredItems']['length']>=this['options']['maxItems'];_0x50eade&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x50eade),this['open']();}['renderItems'](_0x46d50a){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x2edd4c,_0x3b88e1)=>{const _0x416347=document['createElement']('div');_0x416347['className']='autocomplete-select-item',_0x416347['setAttribute']('role','option'),_0x416347['setAttribute']('data-index',_0x3b88e1);const _0x409752=this['options']['renderItem'](_0x2edd4c);let _0x43c88a='';_0x409752['icon']&&(_0x43c88a='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x409752['iconClass']||'')+'\x22>'+_0x409752['icon']+'</span>'),_0x416347['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x43c88a+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x409752['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x409752['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x409752['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x416347['addEventListener']('click',()=>{this['selectItem'](_0x2edd4c);}),_0x416347['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3b88e1,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x416347);}),_0x46d50a?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x21f0d4){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x21f0d4)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2f4719){this['selectedItem']=_0x2f4719;const _0x2acc51=this['options']['renderItem'](_0x2f4719);this['input']['value']=_0x2acc51['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2f4719);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x509e98){if(_0x509e98){this['selectedItem']=_0x509e98;const _0x170560=this['options']['renderItem'](_0x509e98);this['input']['value']=_0x170560['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x594be3){this['allItems']=_0x594be3,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x4feec3){this['input']['placeholder']=_0x4feec3;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x391425=null){const _0x3145f5=document['getElementById']('admin-menu-container'),_0x3c1ba9=document['getElementById']('admin-menu-btn'),_0x7f005e=document['getElementById']('admin-menu');if(!_0x3145f5||!_0x3c1ba9||!_0x7f005e)return;try{!_0x391425&&(_0x391425=await API['getCurrentUser']());if(_0x391425){const _0x3c3602=_0x391425['hasAllPermissions']||_0x391425['hasEnvironmentsManage']||_0x391425['canCreateUsers']||_0x391425['canManageTeams']||_0x391425['hasEnvironmentBindings'];if(!_0x3c3602)return;_0x3145f5['hidden']=![];if(!_0x391425['hasAllPermissions']){const _0x5a6c0e=_0x7f005e['querySelectorAll']('.admin-menu-item');_0x5a6c0e['forEach'](_0x28be72=>{const _0x336cf2=_0x28be72['querySelector']('.option-text')?.['textContent']?.['trim']();_0x336cf2==='Users'&&!_0x391425['canCreateUsers']&&(_0x28be72['hidden']=!![]),_0x336cf2==='Skills'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Server\x20Settings'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Server\x20Health'&&(_0x28be72['hidden']=!![]),_0x336cf2==='Git\x20History'&&(_0x28be72['hidden']=!![]);});}_0x3c1ba9['addEventListener']('click',_0x5cb53c=>{_0x5cb53c['stopPropagation']();const _0x294f26=document['getElementById']('actions-menu');if(_0x294f26)_0x294f26['hidden']=!![];_0x7f005e['hidden']=!_0x7f005e['hidden'];}),document['addEventListener']('click',_0x27d667=>{!_0x7f005e['hidden']&&!_0x3c1ba9['contains'](_0x27d667['target'])&&!_0x7f005e['contains'](_0x27d667['target'])&&(_0x7f005e['hidden']=!![]);}),document['addEventListener']('keydown',_0x4b2867=>{_0x4b2867['key']==='Escape'&&!_0x7f005e['hidden']&&(_0x7f005e['hidden']=!![]);});const _0x333b24=document['getElementById']('server-health-btn');_0x333b24&&_0x333b24['addEventListener']('click',async()=>{_0x7f005e['hidden']=!![];const {openServerHealthModal:_0x542af9}=await import('./server-health.js');_0x542af9();});}}catch(_0x430960){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x430960['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};