@profoundlogic/coderflow-server 0.5.5 → 0.5.6

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