@profoundlogic/coderflow-server 0.7.4 → 0.7.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 (179) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/memory-utils.js +1 -1
  62. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  63. package/dist/lib/model-fetcher.js +1 -1
  64. package/dist/lib/notifications.js +1 -1
  65. package/dist/lib/objective-context.js +1 -1
  66. package/dist/lib/oidc-auth.js +1 -1
  67. package/dist/lib/oidc-device-flow.js +1 -1
  68. package/dist/lib/passwordTokens.js +1 -1
  69. package/dist/lib/permission-resolver.js +1 -1
  70. package/dist/lib/pin-cascade.js +1 -1
  71. package/dist/lib/provider-accounts.js +1 -1
  72. package/dist/lib/provider-oauth.js +1 -1
  73. package/dist/lib/provider-profile.js +1 -1
  74. package/dist/lib/provider-token-refresh.js +1 -1
  75. package/dist/lib/rbac-user-state.js +1 -1
  76. package/dist/lib/request-url.js +1 -1
  77. package/dist/lib/rewind.js +1 -1
  78. package/dist/lib/role-definitions.js +1 -1
  79. package/dist/lib/roles.js +1 -1
  80. package/dist/lib/secrets.js +1 -1
  81. package/dist/lib/setup-repo-git-auth.js +1 -1
  82. package/dist/lib/state-capture.js +1 -1
  83. package/dist/lib/static-files.js +1 -1
  84. package/dist/lib/task-aliases.js +1 -1
  85. package/dist/lib/task-name-format.js +1 -1
  86. package/dist/lib/task-name-generator.js +1 -1
  87. package/dist/lib/task-source-metadata.js +1 -1
  88. package/dist/lib/teams.js +1 -1
  89. package/dist/lib/user-git-oauth.js +1 -1
  90. package/dist/lib/user-git-tokens.js +1 -1
  91. package/dist/lib/users.js +1 -1
  92. package/dist/middleware/requireAuth.js +1 -1
  93. package/dist/middleware/requireInit.js +1 -1
  94. package/dist/middleware/requirePermission.js +1 -1
  95. package/dist/package.json +1 -1
  96. package/dist/playwright.config.js +1 -1
  97. package/dist/playwright.task-terminal.config.js +1 -1
  98. package/dist/routes/apiKeys.js +1 -1
  99. package/dist/routes/auth-oidc.js +1 -1
  100. package/dist/routes/auth.js +1 -1
  101. package/dist/routes/automations.js +1 -1
  102. package/dist/routes/bindings.js +1 -1
  103. package/dist/routes/build.js +1 -1
  104. package/dist/routes/containers.js +1 -1
  105. package/dist/routes/deploy-task.js +1 -1
  106. package/dist/routes/environment-management.js +1 -1
  107. package/dist/routes/environments.js +1 -1
  108. package/dist/routes/external-skills.js +1 -1
  109. package/dist/routes/git-credentials.js +1 -1
  110. package/dist/routes/git-oauth.js +1 -1
  111. package/dist/routes/git-provider-setup.js +1 -1
  112. package/dist/routes/health.js +1 -1
  113. package/dist/routes/jira.js +1 -1
  114. package/dist/routes/objective-management.js +1 -1
  115. package/dist/routes/password.js +1 -1
  116. package/dist/routes/prompt.js +1 -1
  117. package/dist/routes/provider-auth.js +1 -1
  118. package/dist/routes/qa.js +1 -1
  119. package/dist/routes/roles.js +1 -1
  120. package/dist/routes/settings.js +1 -1
  121. package/dist/routes/skill-management.js +1 -1
  122. package/dist/routes/skills.js +1 -1
  123. package/dist/routes/tasks.js +1 -1
  124. package/dist/routes/teams.js +1 -1
  125. package/dist/routes/templates.js +1 -1
  126. package/dist/routes/test-task.js +1 -1
  127. package/dist/routes/test.js +1 -1
  128. package/dist/routes/users.js +1 -1
  129. package/dist/routes/visualizations.js +1 -1
  130. package/dist/scripts/create-user.js +1 -1
  131. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  132. package/dist/shipped-skills/environment-templates/SKILL.md +152 -17
  133. package/dist/start.js +1 -1
  134. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  135. package/dist/web-ui/public/activity-feed.js +1 -1
  136. package/dist/web-ui/public/activity-formatters.js +1 -1
  137. package/dist/web-ui/public/agent-event-parser.js +1 -1
  138. package/dist/web-ui/public/app.js +1 -1
  139. package/dist/web-ui/public/approve-dialog.js +1 -1
  140. package/dist/web-ui/public/automation-links.js +1 -1
  141. package/dist/web-ui/public/automation-schedule.js +1 -1
  142. package/dist/web-ui/public/comments-widget.js +1 -1
  143. package/dist/web-ui/public/diff-utils.js +1 -1
  144. package/dist/web-ui/public/docs/admin/ai-providers.md +5 -5
  145. package/dist/web-ui/public/environments.js +1 -1
  146. package/dist/web-ui/public/feedback-widget.css +21 -5
  147. package/dist/web-ui/public/feedback-widget.js +1 -1
  148. package/dist/web-ui/public/file-selection-tree.js +1 -1
  149. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  150. package/dist/web-ui/public/git-history.js +1 -1
  151. package/dist/web-ui/public/git-status.js +1 -1
  152. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  153. package/dist/web-ui/public/index.html +20 -0
  154. package/dist/web-ui/public/index.js +1 -1
  155. package/dist/web-ui/public/login.js +1 -1
  156. package/dist/web-ui/public/markdown-editor.js +1 -1
  157. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  158. package/dist/web-ui/public/modal-maximize.js +1 -1
  159. package/dist/web-ui/public/notifications.js +1 -1
  160. package/dist/web-ui/public/permissions.js +1 -1
  161. package/dist/web-ui/public/pr-dialog.js +1 -1
  162. package/dist/web-ui/public/roles.js +1 -1
  163. package/dist/web-ui/public/server-health.js +1 -1
  164. package/dist/web-ui/public/settings.html +1 -1
  165. package/dist/web-ui/public/settings.js +1 -1
  166. package/dist/web-ui/public/setup-password.js +1 -1
  167. package/dist/web-ui/public/skills.js +1 -1
  168. package/dist/web-ui/public/sse-client.js +1 -1
  169. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  170. package/dist/web-ui/public/styles.css +25 -0
  171. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  172. package/dist/web-ui/public/task.html +15 -1
  173. package/dist/web-ui/public/task.js +1 -1
  174. package/dist/web-ui/public/teams.js +1 -1
  175. package/dist/web-ui/public/terminal.js +1 -1
  176. package/dist/web-ui/public/theme.js +1 -1
  177. package/dist/web-ui/public/users.js +1 -1
  178. package/dist/web-ui/public/variant-grouping.js +1 -1
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0xe75446=window['location']['pathname'],_0x242d87=_0xe75446['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x242d87)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x242d87[0x1]),_0x242d87[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x160712={}){const _0x504545=new URLSearchParams();_0x160712['userId']&&_0x504545['set']('userId',String(_0x160712['userId']));_0x160712['automation']&&_0x504545['set']('automation',String(_0x160712['automation']));const _0x3e2874=API_BASE+'/tasks/stats'+(_0x504545['toString']()?'?'+_0x504545['toString']():''),_0x26fdb8=await fetch(_0x3e2874);if(!_0x26fdb8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x26fdb8['statusText']);return await _0x26fdb8['json']();},async 'getTasks'(_0x2bdb84={}){const _0x3c361e=new URLSearchParams();_0x2bdb84['status']&&_0x3c361e['set']('status',String(_0x2bdb84['status']));_0x2bdb84['environment']&&_0x3c361e['set']('environment',String(_0x2bdb84['environment']));_0x2bdb84['automation']&&_0x3c361e['set']('automation',String(_0x2bdb84['automation']));if(_0x2bdb84['include']){const _0x2c051f=Array['isArray'](_0x2bdb84['include'])?_0x2bdb84['include']['join'](','):String(_0x2bdb84['include']);_0x2c051f&&_0x3c361e['set']('include',_0x2c051f);}_0x2bdb84['filter']&&_0x3c361e['set']('filter',String(_0x2bdb84['filter']));_0x2bdb84['page']&&_0x3c361e['set']('page',String(_0x2bdb84['page']));_0x2bdb84['limit']&&_0x3c361e['set']('limit',String(_0x2bdb84['limit']));_0x2bdb84['userId']&&_0x3c361e['set']('userId',String(_0x2bdb84['userId']));_0x2bdb84['search']&&_0x3c361e['set']('search',String(_0x2bdb84['search']));_0x2bdb84['includeChildTasks']&&_0x3c361e['set']('includeChildTasks','true');const _0xe2699c=API_BASE+'/tasks'+(_0x3c361e['toString']()?'?'+_0x3c361e['toString']():''),_0xfc479b=await fetch(_0xe2699c);if(!_0xfc479b['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xfc479b['statusText']);return await _0xfc479b['json']();},async 'getAutomations'(_0x1e8b63={}){const _0x49f636=new URLSearchParams();_0x1e8b63['environment']&&_0x49f636['set']('environment',String(_0x1e8b63['environment']));const _0x4d480e=await fetch(API_BASE+'/api/automations'+(_0x49f636['toString']()?'?'+_0x49f636['toString']():''));if(!_0x4d480e['ok']){const _0x1174e3=await _0x4d480e['json']()['catch'](()=>({}));throw new Error(_0x1174e3['message']||_0x1174e3['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4d480e['statusText']);}return await _0x4d480e['json']();},async 'getAutomation'(_0x47be6e){const _0x3fabeb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x47be6e));if(!_0x3fabeb['ok']){const _0x1c01f6=await _0x3fabeb['json']()['catch'](()=>({}));throw new Error(_0x1c01f6['message']||_0x1c01f6['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3fabeb['statusText']);}return await _0x3fabeb['json']();},async 'createAutomation'(_0x536834){const _0x21d6fe=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x536834||{})});if(!_0x21d6fe['ok']){const _0x278026=await _0x21d6fe['json']()['catch'](()=>({}));throw new Error(_0x278026['message']||_0x278026['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x21d6fe['statusText']);}return await _0x21d6fe['json']();},async 'updateAutomation'(_0x45b3f0,_0x42e21){const _0x38c6b7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x45b3f0),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42e21||{})});if(!_0x38c6b7['ok']){const _0x32be5e=await _0x38c6b7['json']()['catch'](()=>({}));throw new Error(_0x32be5e['message']||_0x32be5e['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x38c6b7['statusText']);}return await _0x38c6b7['json']();},async 'deleteAutomation'(_0x46b157){const _0x298c87=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x46b157),{'method':'DELETE'});if(!_0x298c87['ok']){const _0x2e506a=await _0x298c87['json']()['catch'](()=>({}));throw new Error(_0x2e506a['message']||_0x2e506a['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x298c87['statusText']);}return await _0x298c87['json']();},async 'triggerAutomation'(_0x4e2a42){const _0x350c4c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e2a42)+'/trigger',{'method':'POST'});if(!_0x350c4c['ok']){const _0x27a7e1=await _0x350c4c['json']()['catch'](()=>({}));throw new Error(_0x27a7e1['message']||_0x27a7e1['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x350c4c['statusText']);}return await _0x350c4c['json']();},async 'setAutomationEnabled'(_0x698066,_0x559ef0){const _0x36ace3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x698066)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x559ef0})});if(!_0x36ace3['ok']){const _0x350f6e=await _0x36ace3['json']()['catch'](()=>({}));throw new Error(_0x350f6e['message']||_0x350f6e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x36ace3['statusText']);}return await _0x36ace3['json']();},async 'getAutomationHistory'(_0x48024b,_0x204777=0x32){const _0x153cd4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x48024b)+'/history?limit='+encodeURIComponent(String(_0x204777)));if(!_0x153cd4['ok']){const _0x1388d2=await _0x153cd4['json']()['catch'](()=>({}));throw new Error(_0x1388d2['message']||_0x1388d2['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x153cd4['statusText']);}return await _0x153cd4['json']();},async 'getTask'(_0x35a820,_0x5a8818={}){const _0x38f146=new URLSearchParams();if(_0x5a8818['include']){const _0x45747=Array['isArray'](_0x5a8818['include'])?_0x5a8818['include']['join'](','):String(_0x5a8818['include']);if(_0x45747)_0x38f146['set']('include',_0x45747);}const _0x1d12d5=await fetch(API_BASE+'/tasks/'+_0x35a820+(_0x38f146['toString']()?'?'+_0x38f146['toString']():''));if(!_0x1d12d5['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1d12d5['statusText']);return await _0x1d12d5['json']();},async 'getTaskResults'(_0x5a6b1b){const _0xeaae28=await fetch(API_BASE+'/tasks/'+_0x5a6b1b+'/results');if(!_0xeaae28['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xeaae28['statusText']);return await _0xeaae28['json']();},async 'getTaskPatches'(_0x3dd7f5){const _0x28d359=await fetch(API_BASE+'/tasks/'+_0x3dd7f5+'/patches');if(!_0x28d359['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x28d359['statusText']);return await _0x28d359['json']();},async 'getTaskAttachments'(_0x5da68f){const _0x58bcd1=await fetch(API_BASE+'/tasks/'+_0x5da68f+'/attachments');if(!_0x58bcd1['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x58bcd1['statusText']);return await _0x58bcd1['json']();},async 'uploadAttachments'(_0x12fd2a,_0x5b05af){const _0x52a749=new FormData();for(const _0x85787d of _0x5b05af){_0x52a749['append']('attachments',_0x85787d);}const _0x3a0100=await fetch(API_BASE+'/tasks/'+_0x12fd2a+'/attachments',{'method':'POST','body':_0x52a749});if(!_0x3a0100['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3a0100['statusText']);return await _0x3a0100['json']();},async 'isAINameGenerationAvailable'(){try{const _0x40dcd9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x40dcd9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x40dcd9['json']();}catch(_0xa3333a){return{'available':![],'reason':_0xa3333a['message']};}},async 'generateTaskName'(_0x19ce25){try{const _0x57f323=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x19ce25})});return await _0x57f323['json']();}catch(_0xc482f4){return{'success':![],'error':_0xc482f4['message']};}},async 'createTask'(_0x4e3fdc){let _0x10263f,_0x255f4b={};if(_0x4e3fdc['files']&&_0x4e3fdc['files']['length']>0x0){const _0x3f1684=new FormData();for(const [_0x3673a6,_0xb8086e]of Object['entries'](_0x4e3fdc)){if(_0x3673a6!=='files'){if(_0xb8086e==null)continue;typeof _0xb8086e==='object'?_0x3f1684['append'](_0x3673a6,JSON['stringify'](_0xb8086e)):_0x3f1684['append'](_0x3673a6,String(_0xb8086e));}}for(const _0x51296f of _0x4e3fdc['files']){_0x3f1684['append']('attachments',_0x51296f);}_0x10263f=_0x3f1684;}else _0x255f4b['Content-Type']='application/json',_0x10263f=JSON['stringify'](_0x4e3fdc);const _0x3c912e=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x255f4b,'body':_0x10263f});if(!_0x3c912e['ok']){const _0xa87c=await _0x3c912e['json'](),_0x501eaf=new Error(_0xa87c['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3c912e['statusText']),{message:_0x231644,..._0x5854cd}=_0xa87c;Object['assign'](_0x501eaf,_0x5854cd);throw _0x501eaf;}return await _0x3c912e['json']();},async 'createTestTask'(_0x572a13){const _0x5390a1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572a13)});if(!_0x5390a1['ok']){const _0x1918cf=await _0x5390a1['json']();throw new Error(_0x1918cf['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5390a1['statusText']);}return await _0x5390a1['json']();},async 'createEphemeralTest'(_0x544742){const _0x6ddbce=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x544742)});if(!_0x6ddbce['ok']){const _0x5be8bb=await _0x6ddbce['json']();throw new Error(_0x5be8bb['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x6ddbce['statusText']);}return await _0x6ddbce['json']();},async 'createDeployTask'(_0x54c2a7){const _0xccbf4d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54c2a7)});if(!_0xccbf4d['ok']){const _0x5de944=await _0xccbf4d['json']();throw new Error(_0x5de944['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xccbf4d['statusText']);}return await _0xccbf4d['json']();},async 'getEnvironments'(){const _0x3642e9=await fetch(API_BASE+'/environments');if(!_0x3642e9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3642e9['statusText']);return await _0x3642e9['json']();},async 'getEnvironment'(_0x13d3a4){const _0x51823b=await fetch(API_BASE+'/environments/'+_0x13d3a4);if(!_0x51823b['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x51823b['statusText']);return await _0x51823b['json']();},async 'getEnvironmentRepoHistory'(_0x56a836,_0x598fd3,_0x4d9816={}){if(!_0x56a836||!_0x598fd3)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1b6844=new URLSearchParams();if(_0x4d9816['limit'])_0x1b6844['set']('limit',String(_0x4d9816['limit']));if(_0x4d9816['offset'])_0x1b6844['set']('offset',String(_0x4d9816['offset']));if(_0x4d9816['search'])_0x1b6844['set']('search',String(_0x4d9816['search']));if(_0x4d9816['branch'])_0x1b6844['set']('branch',String(_0x4d9816['branch']));const _0x35a43d=API_BASE+'/environments/'+encodeURIComponent(_0x56a836)+'/repos/'+encodeURIComponent(_0x598fd3)+'/git/history',_0x26b58e=await fetch(''+_0x35a43d+(_0x1b6844['toString']()?'?'+_0x1b6844['toString']():''));if(!_0x26b58e['ok']){const _0x233f2a=await _0x26b58e['json']()['catch'](()=>({}));throw new Error(_0x233f2a['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x26b58e['statusText']);}return await _0x26b58e['json']();},async 'getEnvironmentRepoCommit'(_0x183eed,_0x5c9455,_0x444b8c){if(!_0x183eed||!_0x5c9455||!_0x444b8c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x35002f=API_BASE+'/environments/'+encodeURIComponent(_0x183eed)+'/repos/'+encodeURIComponent(_0x5c9455)+'/git/commits/'+encodeURIComponent(_0x444b8c),_0x609e14=await fetch(_0x35002f);if(!_0x609e14['ok']){const _0x31ba54=await _0x609e14['json']()['catch'](()=>({}));throw new Error(_0x31ba54['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x609e14['statusText']);}return await _0x609e14['json']();},async 'getEnvironmentRepoBranches'(_0x523550,_0x3f4d6c){if(!_0x523550||!_0x3f4d6c)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3e533f=API_BASE+'/environments/'+encodeURIComponent(_0x523550)+'/repos/'+encodeURIComponent(_0x3f4d6c)+'/git/branches',_0x17979f=await fetch(_0x3e533f);if(!_0x17979f['ok']){const _0x1d433a=await _0x17979f['json']()['catch'](()=>({}));throw new Error(_0x1d433a['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x17979f['statusText']);}return await _0x17979f['json']();},async 'revertEnvironmentRepoCommit'(_0x557006,_0x5304fb,_0x45d406,_0x4be97={}){if(!_0x557006||!_0x5304fb||!_0x45d406)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5eb4a6=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x557006)+'/repos/'+encodeURIComponent(_0x5304fb)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x45d406,..._0x4be97})});if(!_0x5eb4a6['ok']){const _0x723ce9=await _0x5eb4a6['json']()['catch'](()=>({}));throw new Error(_0x723ce9['message']||_0x723ce9['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5eb4a6['statusText']);}return await _0x5eb4a6['json']();},async 'getTemplates'(_0x2a9017={}){const _0x41baaf=new URLSearchParams();if(_0x2a9017['include']){const _0x159d29=Array['isArray'](_0x2a9017['include'])?_0x2a9017['include']['join'](','):String(_0x2a9017['include']);if(_0x159d29)_0x41baaf['set']('include',_0x159d29);}const _0x372a89=await fetch(API_BASE+'/templates'+(_0x41baaf['toString']()?'?'+_0x41baaf['toString']():''));if(!_0x372a89['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x372a89['statusText']);return await _0x372a89['json']();},async 'getTemplatesForEnvironment'(_0x27e41e,_0x4da9a6={}){if(!_0x27e41e)throw new Error('Environment\x20name\x20is\x20required');const _0x2612cd=new URLSearchParams();if(_0x4da9a6['include']){const _0x182b09=Array['isArray'](_0x4da9a6['include'])?_0x4da9a6['include']['join'](','):String(_0x4da9a6['include']);if(_0x182b09)_0x2612cd['set']('include',_0x182b09);}const _0x1f2b66=await fetch(API_BASE+'/templates/'+_0x27e41e+(_0x2612cd['toString']()?'?'+_0x2612cd['toString']():''));if(!_0x1f2b66['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x27e41e+':\x20'+_0x1f2b66['statusText']);return await _0x1f2b66['json']();},async 'getTemplate'(_0x4ff035,_0x19eb96,_0x20caa0={}){if(!_0x4ff035||!_0x19eb96)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x443131=new URLSearchParams();if(_0x20caa0['include']){const _0x468e3b=Array['isArray'](_0x20caa0['include'])?_0x20caa0['include']['join'](','):String(_0x20caa0['include']);if(_0x468e3b)_0x443131['set']('include',_0x468e3b);}const _0x3c1f39=await fetch(API_BASE+'/templates/'+_0x4ff035+'/'+_0x19eb96+(_0x443131['toString']()?'?'+_0x443131['toString']():''));if(!_0x3c1f39['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x3c1f39['statusText']);return await _0x3c1f39['json']();},async 'getTaskLogs'(_0x3f11ee,_0x5a9e6c={}){if(!_0x3f11ee)throw new Error('Task\x20ID\x20is\x20required');const _0x38cac3=new URLSearchParams();_0x5a9e6c['tail']&&_0x38cac3['set']('tail',String(_0x5a9e6c['tail']));const _0x23be6b=await fetch(API_BASE+'/tasks/'+_0x3f11ee+'/logs'+(_0x38cac3['toString']()?'?'+_0x38cac3['toString']():''));if(!_0x23be6b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x23be6b['statusText']);return await _0x23be6b['text']();},async 'getContainers'(){const _0xa50f22=await fetch(API_BASE+'/containers');if(!_0xa50f22['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xa50f22['statusText']);return await _0xa50f22['json']();},async 'getContainer'(_0x4d7ac5){const _0x20f975=await fetch(API_BASE+'/containers/'+_0x4d7ac5);if(!_0x20f975['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x20f975['statusText']);return await _0x20f975['json']();},async 'startInteractiveContainer'(_0x2783b1){const _0x1826ab=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2783b1)});if(!_0x1826ab['ok']){const _0x1704b7=await _0x1826ab['json']()['catch'](()=>({}));throw new Error(_0x1704b7['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1826ab['statusText']);}return await _0x1826ab['json']();},async 'stopContainer'(_0x4252ae){const _0x315caa=await fetch(API_BASE+'/containers/'+_0x4252ae,{'method':'DELETE'});if(!_0x315caa['ok']){const _0x3d6cb1=await _0x315caa['json']()['catch'](()=>({}));throw new Error(_0x3d6cb1['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x315caa['statusText']);}return await _0x315caa['json']();},async 'stopTask'(_0x1504ea){if(!_0x1504ea)throw new Error('Task\x20ID\x20is\x20required');const _0x10b51c=await fetch(API_BASE+'/tasks/'+_0x1504ea+'/stop',{'method':'POST'});if(!_0x10b51c['ok']){const _0x255a3d=await _0x10b51c['json']()['catch'](()=>({}));throw new Error(_0x255a3d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x10b51c['statusText']);}return await _0x10b51c['json']();},async 'interruptTask'(_0x3d1a96){if(!_0x3d1a96)throw new Error('Task\x20ID\x20is\x20required');const _0x711d88=await fetch(API_BASE+'/tasks/'+_0x3d1a96+'/interrupt',{'method':'POST'});if(!_0x711d88['ok']){const _0x11e92f=await _0x711d88['json']()['catch'](()=>({}));throw new Error(_0x11e92f['error']||_0x11e92f['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x711d88['statusText']);}return await _0x711d88['json']();},async 'startTask'(_0x476f73){if(!_0x476f73)throw new Error('Task\x20ID\x20is\x20required');const _0x468e65=await fetch(API_BASE+'/tasks/'+_0x476f73+'/start',{'method':'POST'});if(!_0x468e65['ok']){const _0x1c98ba=await _0x468e65['json']()['catch'](()=>({}));throw new Error(_0x1c98ba['error']||'Failed\x20to\x20start\x20task:\x20'+_0x468e65['statusText']);}return await _0x468e65['json']();},async 'deleteTask'(_0xbf10f8){if(!_0xbf10f8)throw new Error('Task\x20ID\x20is\x20required');const _0x33e721=await fetch(API_BASE+'/tasks/'+_0xbf10f8,{'method':'DELETE'});if(!_0x33e721['ok']){const _0x4a9a93=await _0x33e721['json']()['catch'](()=>({}));throw new Error(_0x4a9a93['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x33e721['statusText']);}return await _0x33e721['json']();},async 'refreshTasksFromDisk'(){const _0x1b24e1=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1b24e1['ok']){const _0x57b47a=await _0x1b24e1['json']()['catch'](()=>({}));throw new Error(_0x57b47a['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1b24e1['statusText']);}return await _0x1b24e1['json']();},async 'approveTask'(_0x3fdea7,_0x4c95e1={}){if(!_0x3fdea7)throw new Error('Task\x20ID\x20is\x20required');const _0x1a6dab={'commit_message':_0x4c95e1['commit_message']||'','pull':_0x4c95e1['pull']??![],'push':_0x4c95e1['push']??![]};_0x4c95e1['new_branch']&&(_0x1a6dab['new_branch']=_0x4c95e1['new_branch']);const _0xf74ab5=await fetch(API_BASE+'/tasks/'+_0x3fdea7+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a6dab)});if(!_0xf74ab5['ok']){const _0x5da999=await _0xf74ab5['json']()['catch'](()=>({}));let _0x49e69d=_0x5da999['error']||_0x5da999['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xf74ab5['statusText'];if(_0x5da999['results']&&Array['isArray'](_0x5da999['results'])){const _0x41f2da=_0x5da999['results']['filter'](_0x3e14b2=>!_0x3e14b2['success']&&_0x3e14b2['error']);_0x41f2da['length']>0x0&&(_0x49e69d=_0x41f2da[0x0]['error']);}throw new Error(_0x49e69d);}return await _0xf74ab5['json']();},async 'getPullRequestInfo'(_0x297202){if(!_0x297202)throw new Error('Task\x20ID\x20is\x20required');const _0x25b29e=await fetch(API_BASE+'/tasks/'+_0x297202+'/pull-request-info');if(!_0x25b29e['ok']){const _0x533846=await _0x25b29e['json']()['catch'](()=>({}));throw new Error(_0x533846['error']||_0x533846['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x25b29e['statusText']);}return await _0x25b29e['json']();},async 'createPullRequests'(_0x4e8ea2,_0x331814){if(!_0x4e8ea2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x331814||!Array['isArray'](_0x331814))throw new Error('repos\x20array\x20is\x20required');const _0x5ad418=await fetch(API_BASE+'/tasks/'+_0x4e8ea2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x331814})});if(!_0x5ad418['ok']){const _0x5910fd=await _0x5ad418['json']()['catch'](()=>({}));let _0x235cf9=_0x5910fd['error']||_0x5910fd['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5ad418['statusText'];if(_0x5910fd['results']&&Array['isArray'](_0x5910fd['results'])){const _0x2a99ff=_0x5910fd['results']['filter'](_0x45dbdb=>!_0x45dbdb['success']&&_0x45dbdb['error']);_0x2a99ff['length']>0x0&&(_0x235cf9=_0x2a99ff[0x0]['error']);}throw new Error(_0x235cf9);}return await _0x5ad418['json']();},async 'syncRepos'(_0x30956d){if(!_0x30956d)throw new Error('Task\x20ID\x20is\x20required');const _0x525597=await fetch(API_BASE+'/tasks/'+_0x30956d+'/sync-repos',{'method':'POST'});if(!_0x525597['ok']){const _0x2adc2a=await _0x525597['json']()['catch'](()=>({}));throw new Error(_0x2adc2a['error']||_0x2adc2a['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x525597['statusText']);}return await _0x525597['json']();},async 'getIbmiSyncInfo'(_0x5c9fdb){if(!_0x5c9fdb)throw new Error('Task\x20ID\x20is\x20required');const _0x5a0d70=await fetch(API_BASE+'/tasks/'+_0x5c9fdb+'/ibmi-sync-info');if(!_0x5a0d70['ok']){const _0xa48dec=await _0x5a0d70['json']()['catch'](()=>({}));throw new Error(_0xa48dec['error']||_0xa48dec['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5a0d70['json']();},async 'getSyncFiles'(_0x2d295f){if(!_0x2d295f)throw new Error('Task\x20ID\x20is\x20required');const _0x1b5225=await fetch(API_BASE+'/tasks/'+_0x2d295f+'/sync-to-ibmi/files');if(!_0x1b5225['ok']){const _0x33e7ca=await _0x1b5225['json']()['catch'](()=>({}));throw new Error(_0x33e7ca['error']||_0x33e7ca['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x1b5225['json']();},async 'syncToIbmi'(_0x1f636c,_0x2d8847,_0xb72997=null,_0xb6b3c9=null,_0x152308=null){if(!_0x1f636c)throw new Error('Task\x20ID\x20is\x20required');const _0x21ab79={'library':_0x2d8847};if(_0xb72997)_0x21ab79['user']=_0xb72997;if(_0xb6b3c9)_0x21ab79['password']=_0xb6b3c9;if(_0x152308)_0x21ab79['files']=_0x152308;const _0x19e207=await fetch(API_BASE+'/tasks/'+_0x1f636c+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ab79)});if(!_0x19e207['ok']){const _0x540104=await _0x19e207['json']()['catch'](()=>({}));throw new Error(_0x540104['error']||_0x540104['message']||'Sync\x20failed');}return await _0x19e207['json']();},async 'getIbmiSyncLog'(_0x54cc5a){if(!_0x54cc5a)throw new Error('Task\x20ID\x20is\x20required');const _0x224a1c=await fetch(API_BASE+'/tasks/'+_0x54cc5a+'/ibmi-sync-log');if(!_0x224a1c['ok']){const _0x4d86c0=await _0x224a1c['json']()['catch'](()=>({}));throw new Error(_0x4d86c0['error']||_0x4d86c0['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x224a1c['json']();},async 'pullChanges'(_0x51d8fa){if(!_0x51d8fa)throw new Error('Task\x20ID\x20is\x20required');const _0x5517d7=await fetch(API_BASE+'/tasks/'+_0x51d8fa+'/pull-changes',{'method':'POST'});if(!_0x5517d7['ok']){const _0x531bb5=await _0x5517d7['json']()['catch'](()=>({}));throw new Error(_0x531bb5['error']||_0x531bb5['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5517d7['statusText']);}return await _0x5517d7['json']();},async 'readFile'(_0x21a92c,_0x4ac747){if(!_0x21a92c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ac747)throw new Error('File\x20path\x20is\x20required');const _0x3007a1=await fetch(API_BASE+'/tasks/'+_0x21a92c+'/files?path='+encodeURIComponent(_0x4ac747));if(!_0x3007a1['ok']){const _0x2e9a26=await _0x3007a1['json']()['catch'](()=>({}));throw new Error(_0x2e9a26['error']||_0x2e9a26['message']||'Failed\x20to\x20read\x20file:\x20'+_0x3007a1['statusText']);}return await _0x3007a1['json']();},'getTaskFileDownloadUrl'(_0x485211,_0x4a53a5){if(!_0x485211)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4a53a5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x485211+'/files/download?path='+encodeURIComponent(_0x4a53a5);},async 'writeFile'(_0x1ab033,_0x106a99,_0xaa35b6){if(!_0x1ab033)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106a99)throw new Error('File\x20path\x20is\x20required');if(_0xaa35b6===undefined)throw new Error('Content\x20is\x20required');const _0x48cde3=await fetch(API_BASE+'/tasks/'+_0x1ab033+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x106a99,'content':_0xaa35b6})});if(!_0x48cde3['ok']){const _0x5815b7=await _0x48cde3['json']()['catch'](()=>({}));throw new Error(_0x5815b7['error']||_0x5815b7['message']||'Failed\x20to\x20write\x20file:\x20'+_0x48cde3['statusText']);}return await _0x48cde3['json']();},async 'uploadTaskFiles'(_0x2bb558,_0x6d0079,_0x52c9a8){if(!_0x2bb558)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6d0079)throw new Error('Target\x20directory\x20is\x20required');if(!_0x52c9a8||_0x52c9a8['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x52eb48=new FormData();_0x52eb48['append']('targetDir',_0x6d0079);for(const _0x5a2986 of _0x52c9a8){_0x52eb48['append']('files',_0x5a2986,_0x5a2986['name']);}const _0x2027c1=await fetch(API_BASE+'/tasks/'+_0x2bb558+'/files/upload',{'method':'POST','body':_0x52eb48});if(!_0x2027c1['ok']){const _0x54939c=await _0x2027c1['json']()['catch'](()=>({}));throw new Error(_0x54939c['error']||_0x54939c['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2027c1['statusText']);}return await _0x2027c1['json']();},async 'createDirectory'(_0x37b51e,_0x4104e6){if(!_0x37b51e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4104e6)throw new Error('Directory\x20path\x20is\x20required');const _0x23a7c4=await fetch(API_BASE+'/tasks/'+_0x37b51e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4104e6})});if(!_0x23a7c4['ok']){const _0x3602d6=await _0x23a7c4['json']()['catch'](()=>({}));throw new Error(_0x3602d6['error']||_0x3602d6['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x23a7c4['statusText']);}return await _0x23a7c4['json']();},async 'renamePath'(_0xcc5aa4,_0x2f03b6,_0x5edded){if(!_0xcc5aa4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2f03b6)throw new Error('Source\x20path\x20is\x20required');if(!_0x5edded)throw new Error('Destination\x20path\x20is\x20required');const _0x4c50b8=await fetch(API_BASE+'/tasks/'+_0xcc5aa4+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x2f03b6,'newPath':_0x5edded})});if(!_0x4c50b8['ok']){const _0x10984f=await _0x4c50b8['json']()['catch'](()=>({}));throw new Error(_0x10984f['error']||_0x10984f['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x4c50b8['statusText']);}return await _0x4c50b8['json']();},async 'deleteFile'(_0x48fa9f,_0x106b13){if(!_0x48fa9f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106b13)throw new Error('File\x20path\x20is\x20required');const _0x1a8ab1=await fetch(API_BASE+'/tasks/'+_0x48fa9f+'/files?path='+encodeURIComponent(_0x106b13),{'method':'DELETE'});if(!_0x1a8ab1['ok']){const _0x28c8be=await _0x1a8ab1['json']()['catch'](()=>({}));throw new Error(_0x28c8be['error']||_0x28c8be['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1a8ab1['statusText']);}return await _0x1a8ab1['json']();},async 'deleteDirectory'(_0x5e7f29,_0x44f19e){if(!_0x5e7f29)throw new Error('Task\x20ID\x20is\x20required');if(!_0x44f19e)throw new Error('Directory\x20path\x20is\x20required');const _0x258719=await fetch(API_BASE+'/tasks/'+_0x5e7f29+'/files/directory?path='+encodeURIComponent(_0x44f19e),{'method':'DELETE'});if(!_0x258719['ok']){const _0x3787c4=await _0x258719['json']()['catch'](()=>({}));throw new Error(_0x3787c4['error']||_0x3787c4['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x258719['statusText']);}return await _0x258719['json']();},async 'discardFile'(_0x3704a3,_0x3176f3,_0x225b6a){if(!_0x3704a3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3176f3)throw new Error('File\x20path\x20is\x20required');if(!_0x225b6a)throw new Error('Repository\x20path\x20is\x20required');const _0x4db01d=await fetch(API_BASE+'/tasks/'+_0x3704a3+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3176f3,'repoPath':_0x225b6a})});if(!_0x4db01d['ok']){const _0x13c1e9=await _0x4db01d['json']()['catch'](()=>({}));throw new Error(_0x13c1e9['error']||_0x13c1e9['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4db01d['statusText']);}return await _0x4db01d['json']();},async 'followUpTask'(_0x3c3e06,_0x5335f5={}){if(!_0x3c3e06)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5335f5['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x4aed42,_0x4dde62={};if(_0x5335f5['files']&&_0x5335f5['files']['length']>0x0){const _0x3d5818=new FormData();_0x3d5818['append']('instructions',_0x5335f5['instructions']);for(const _0x1c8b83 of _0x5335f5['files']){_0x3d5818['append']('attachments',_0x1c8b83);}_0x4aed42=_0x3d5818;}else _0x4dde62['Content-Type']='application/json',_0x4aed42=JSON['stringify']({'instructions':_0x5335f5['instructions']});const _0x16fc2e=await fetch(API_BASE+'/tasks/'+_0x3c3e06+'/follow-up',{'method':'POST','headers':_0x4dde62,'body':_0x4aed42});if(!_0x16fc2e['ok']){const _0x20918c=await _0x16fc2e['json']()['catch'](()=>({}));throw new Error(_0x20918c['error']||_0x20918c['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x16fc2e['statusText']);}return await _0x16fc2e['json']();},async 'getTaskRewindPoints'(_0x4ce594){if(!_0x4ce594)throw new Error('Task\x20ID\x20is\x20required');const _0x4c1b43=await fetch(API_BASE+'/tasks/'+_0x4ce594+'/rewind-points');if(!_0x4c1b43['ok']){const _0x1a9ffe=await _0x4c1b43['json']()['catch'](()=>({}));throw new Error(_0x1a9ffe['error']||_0x1a9ffe['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4c1b43['statusText']);}return await _0x4c1b43['json']();},async 'rewindTask'(_0x26eebf,_0x3dd7cc={}){if(!_0x26eebf)throw new Error('Task\x20ID\x20is\x20required');const _0x2ef09d=Number['isInteger'](_0x3dd7cc['targetFollowUpCount'])?_0x3dd7cc['targetFollowUpCount']:0x0,_0xccca9d={'targetFollowUpCount':_0x2ef09d};typeof _0x3dd7cc['instructions']==='string'&&_0x3dd7cc['instructions']['trim']()&&(_0xccca9d['instructions']=_0x3dd7cc['instructions']['trim']());typeof _0x3dd7cc['rewindFiles']==='boolean'&&(_0xccca9d['rewindFiles']=_0x3dd7cc['rewindFiles']);const _0x10c00c=await fetch(API_BASE+'/tasks/'+_0x26eebf+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xccca9d)});if(!_0x10c00c['ok']){const _0x47f1cc=await _0x10c00c['json']()['catch'](()=>({}));throw new Error(_0x47f1cc['error']||_0x47f1cc['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x10c00c['statusText']);}return await _0x10c00c['json']();},async 'login'(_0x1fa377,_0x4c2265){const _0x5d25f6=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1fa377,'password':_0x4c2265})});if(!_0x5d25f6['ok']){const _0x3c5463=await _0x5d25f6['json']();throw new Error(_0x3c5463['message']||'Login\x20failed');}return await _0x5d25f6['json']();},async 'logout'(){const _0x5afba8=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5afba8['ok']){const _0x82d051=await _0x5afba8['json']();throw new Error(_0x82d051['message']||'Logout\x20failed');}return await _0x5afba8['json']();},async 'getCurrentUser'(){const _0x36c891=await fetch(API_BASE+'/auth/me');if(!_0x36c891['ok'])throw new Error('Not\x20authenticated');const _0x1d391c=await _0x36c891['json']();return _0x1d391c['user'];},async 'getRolesInfo'(){const _0x2b63d7=await fetch(API_BASE+'/users/roles');if(!_0x2b63d7['ok']){const _0x2d4d17=await _0x2b63d7['json']();throw new Error(_0x2d4d17['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2b63d7['json']();},async 'getUsers'(){const _0x45a610=await fetch(API_BASE+'/users');if(!_0x45a610['ok']){const _0x7a2890=await _0x45a610['json']();throw new Error(_0x7a2890['message']||'Failed\x20to\x20get\x20users');}return await _0x45a610['json']();},async 'getUser'(_0x3b4021){const _0x55436f=await fetch(API_BASE+'/users/'+_0x3b4021);if(!_0x55436f['ok']){const _0x3756c8=await _0x55436f['json']();throw new Error(_0x3756c8['message']||'Failed\x20to\x20get\x20user');}return await _0x55436f['json']();},async 'createUser'(_0x22a654){const _0x321c19=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22a654)});if(!_0x321c19['ok']){const _0x3fa49c=await _0x321c19['json']();throw new Error(_0x3fa49c['message']||'Failed\x20to\x20create\x20user');}return await _0x321c19['json']();},async 'updateUser'(_0x5b8b7a,_0x3794a3){const _0x5ca934=await fetch(API_BASE+'/users/'+_0x5b8b7a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3794a3)});if(!_0x5ca934['ok']){const _0x1dbd2b=await _0x5ca934['json']();throw new Error(_0x1dbd2b['message']||'Failed\x20to\x20update\x20user');}return await _0x5ca934['json']();},async 'deleteUser'(_0x47ee0e){const _0x56a991=await fetch(API_BASE+'/users/'+_0x47ee0e,{'method':'DELETE'});if(!_0x56a991['ok']){const _0x11b7ef=await _0x56a991['json']();throw new Error(_0x11b7ef['message']||'Failed\x20to\x20delete\x20user');}return await _0x56a991['json']();},async 'stopAllContainers'(){const _0x3cd357=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x361e27=await _0x3cd357['json']()['catch'](()=>({}));if(!_0x3cd357['ok'])throw new Error(_0x361e27['message']||_0x361e27['error']||'Failed\x20to\x20stop\x20containers');return _0x361e27;},async 'removeStoppedContainers'(){const _0x3140d6=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5ecdde=await _0x3140d6['json']()['catch'](()=>({}));if(!_0x3140d6['ok'])throw new Error(_0x5ecdde['message']||_0x5ecdde['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5ecdde;},async 'pruneDockerResources'(){const _0x1354ef=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x594a58=await _0x1354ef['json']()['catch'](()=>({}));if(!_0x1354ef['ok'])throw new Error(_0x594a58['message']||_0x594a58['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x594a58;},async 'createPasswordToken'(_0x4ce690,_0x139e2f='setup',_0x44cb48=![]){const _0x2ec2d3=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ce690,'type':_0x139e2f,'sendEmail':_0x44cb48})});if(!_0x2ec2d3['ok']){const _0x24c170=await _0x2ec2d3['json']();throw new Error(_0x24c170['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2ec2d3['json']();},async 'getEmailConfig'(){const _0x50176e=await fetch(API_BASE+'/password/email-config');if(!_0x50176e['ok']){const _0x216da3=await _0x50176e['json']();throw new Error(_0x216da3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x50176e['json']();},async 'updateTaskName'(_0x438ab6,_0x9269f8){const _0x5a9829=await fetch(API_BASE+'/tasks/'+_0x438ab6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x9269f8})});if(!_0x5a9829['ok']){const _0x45ffcf=await _0x5a9829['json']();throw new Error(_0x45ffcf['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5a9829['json']();},async 'pinTask'(_0x583770,_0x371272,_0xdfe2d3=null){if(!_0x583770)throw new Error('Task\x20ID\x20is\x20required');const _0x389f84={'pinned':_0x371272};_0xdfe2d3&&_0xdfe2d3['length']>0x0&&(_0x389f84['additionalTaskIds']=_0xdfe2d3);const _0x2a5425=await fetch(API_BASE+'/tasks/'+_0x583770+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x389f84)});if(!_0x2a5425['ok']){const _0x5c958f=await _0x2a5425['json']();throw new Error(_0x5c958f['error']||'Failed\x20to\x20pin\x20task');}return await _0x2a5425['json']();},async 'setTaskWinner'(_0x18e9ab,_0x357acc,_0x5b7ae5=[]){if(!_0x18e9ab)throw new Error('Task\x20ID\x20is\x20required');const _0x44f8fe=await fetch(API_BASE+'/tasks/'+_0x18e9ab+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x357acc,'siblings':_0x5b7ae5})});if(!_0x44f8fe['ok']){const _0x41ade8=await _0x44f8fe['json']();throw new Error(_0x41ade8['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x44f8fe['json']();},async 'setTaskLoser'(_0x18a498,_0x3ddfb3){if(!_0x18a498)throw new Error('Task\x20ID\x20is\x20required');const _0xac9085=await fetch(API_BASE+'/tasks/'+_0x18a498+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3ddfb3})});if(!_0xac9085['ok']){const _0x5c20c3=await _0xac9085['json']();throw new Error(_0x5c20c3['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0xac9085['json']();},async 'createTaskGroup'(_0x3c14b5){const _0x4975d0=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c14b5)});if(!_0x4975d0['ok']){const _0x437e1c=await _0x4975d0['json']();throw new Error(_0x437e1c['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4975d0['json']();},async 'getTaskGroups'(_0x4aeee5={}){const _0x53618f=new URLSearchParams();if(_0x4aeee5['userId'])_0x53618f['set']('userId',String(_0x4aeee5['userId']));if(_0x4aeee5['status'])_0x53618f['set']('status',String(_0x4aeee5['status']));if(_0x4aeee5['limit'])_0x53618f['set']('limit',String(_0x4aeee5['limit']));const _0x394ae2=API_BASE+'/tasks/groups'+(_0x53618f['toString']()?'?'+_0x53618f['toString']():''),_0x13633e=await fetch(_0x394ae2);if(!_0x13633e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x13633e['json']();},async 'getTaskGroup'(_0x55782b){const _0x4ec24c=await fetch(API_BASE+'/tasks/groups/'+_0x55782b);if(!_0x4ec24c['ok']){const _0x2dd67b=await _0x4ec24c['json']();throw new Error(_0x2dd67b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4ec24c['json']();},async 'updateTaskGroup'(_0x3a4828,_0xe5be75,_0x487e49){const _0x3cc652=await fetch(API_BASE+'/tasks/'+_0x3a4828+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xe5be75,'groupIndex':_0x487e49})});if(!_0x3cc652['ok']){const _0x446939=await _0x3cc652['json']();throw new Error(_0x446939['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3cc652['json']();},async 'removeTaskFromGroup'(_0x127c03){return this['updateTaskGroup'](_0x127c03,null,null);},async 'deleteTaskGroup'(_0x5a5e61,_0x503b47=![]){const _0x52eba5=_0x503b47?'?deleteTasks=true':'',_0x550fb4=await fetch(API_BASE+'/tasks/groups/'+_0x5a5e61+_0x52eba5,{'method':'DELETE'});if(!_0x550fb4['ok']){const _0x198d66=await _0x550fb4['json']();throw new Error(_0x198d66['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x128a76,_0x331e52){const _0x3ae109=await fetch(API_BASE+'/tasks/groups/'+_0x128a76+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x331e52})});if(!_0x3ae109['ok']){const _0x47e322=await _0x3ae109['json']();throw new Error(_0x47e322['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3ae109['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5a49f9){if(!_0x5a49f9)throw new Error('Task\x20ID\x20is\x20required');const _0x905a0=await fetch(API_BASE+'/tasks/'+_0x5a49f9+'/comments');if(!_0x905a0['ok']){const _0x55a3ab=await _0x905a0['json']()['catch'](()=>({}));throw new Error(_0x55a3ab['error']||'Failed\x20to\x20get\x20comments');}return await _0x905a0['json']();},async 'addComment'(_0x4ca22f,_0x3656b5){if(!_0x4ca22f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3656b5)throw new Error('Comment\x20content\x20is\x20required');const _0x3205c1=await fetch(API_BASE+'/tasks/'+_0x4ca22f+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3656b5})});if(!_0x3205c1['ok']){const _0x5425c9=await _0x3205c1['json']()['catch'](()=>({}));throw new Error(_0x5425c9['error']||'Failed\x20to\x20add\x20comment');}return await _0x3205c1['json']();},async 'updateComment'(_0x2b7300,_0x26e732,_0x1f1fd5){if(!_0x2b7300)throw new Error('Task\x20ID\x20is\x20required');if(!_0x26e732)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1f1fd5)throw new Error('Comment\x20content\x20is\x20required');const _0x38687a=await fetch(API_BASE+'/tasks/'+_0x2b7300+'/comments/'+_0x26e732,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f1fd5})});if(!_0x38687a['ok']){const _0xf270c2=await _0x38687a['json']()['catch'](()=>({}));throw new Error(_0xf270c2['error']||'Failed\x20to\x20update\x20comment');}return await _0x38687a['json']();},async 'deleteComment'(_0x2695bd,_0x6e36f){if(!_0x2695bd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6e36f)throw new Error('Comment\x20ID\x20is\x20required');const _0x2929a=await fetch(API_BASE+'/tasks/'+_0x2695bd+'/comments/'+_0x6e36f,{'method':'DELETE'});if(!_0x2929a['ok']){const _0x5c3235=await _0x2929a['json']()['catch'](()=>({}));throw new Error(_0x5c3235['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2929a['json']();},async 'createObjective'(_0x3eb3d3){const _0x4ceb25={'objective':!![],'name':_0x3eb3d3['name']||'','environment':_0x3eb3d3['environment']||null,'agents':_0x3eb3d3['agents']||[],'branches':_0x3eb3d3['branches']||{},'isPinned':_0x3eb3d3['isPinned']||![],'parentObjectiveId':_0x3eb3d3['parentObjectiveId']||null,'env_vars':_0x3eb3d3['envVars']||{},'parameters':{'instructions':_0x3eb3d3['instructions']||''},'files':_0x3eb3d3['files']||[],'jira':_0x3eb3d3['jira']||null};return this['createTask'](_0x4ceb25);},async 'updateObjective'(_0x48a2af,_0x181c86,_0x2ddbd1=[],_0x1fd84c=[]){let _0x10b776,_0x1442d7={};const _0x171cfa={..._0x181c86};_0x1fd84c&&_0x1fd84c['length']>0x0&&(_0x171cfa['removeAttachments']=_0x1fd84c);if(_0x2ddbd1&&_0x2ddbd1['length']>0x0){const _0x1e6e49=new FormData();for(const [_0x410035,_0x22ca64]of Object['entries'](_0x171cfa)){if(_0x22ca64==null)continue;typeof _0x22ca64==='object'?_0x1e6e49['append'](_0x410035,JSON['stringify'](_0x22ca64)):_0x1e6e49['append'](_0x410035,String(_0x22ca64));}for(const _0x1ffee3 of _0x2ddbd1){_0x1e6e49['append']('attachments',_0x1ffee3);}_0x10b776=_0x1e6e49;}else _0x1442d7['Content-Type']='application/json',_0x10b776=JSON['stringify'](_0x171cfa);const _0x1f37b3=await fetch(API_BASE+'/tasks/'+_0x48a2af,{'method':'PATCH','headers':_0x1442d7,'body':_0x10b776});if(!_0x1f37b3['ok']){const _0x430a23=await _0x1f37b3['json']();throw new Error(_0x430a23['error']||'Failed\x20to\x20update\x20objective');}return await _0x1f37b3['json']();},async 'deleteObjective'(_0x4f0e36){return this['deleteTask'](_0x4f0e36);},async 'launchObjective'(_0x478978,_0x2dc8e4={}){const _0x922a6a=await fetch(API_BASE+'/tasks/'+_0x478978+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc8e4)});if(!_0x922a6a['ok']){const _0x248587=await _0x922a6a['json']();throw new Error(_0x248587['error']||'Failed\x20to\x20launch\x20objective');}return await _0x922a6a['json']();},async 'getObjectiveAttachments'(_0x644d58){return this['getTaskAttachments'](_0x644d58);},async 'createJudgeTask'({environment:_0x1cbc46,judgeAgent:_0x393e5b,groupId:_0x12588e,taskIds:_0x2d99ab,judgeCustomInstructions:_0x1bfee7,isPinned:_0x2d279c}){const _0x58270f=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1cbc46,'judgeAgent':_0x393e5b,'groupId':_0x12588e,'taskIds':_0x2d99ab,'judgeCustomInstructions':_0x1bfee7,'isPinned':_0x2d279c})});if(!_0x58270f['ok']){const _0x45a0ba=await _0x58270f['json']();throw new Error(_0x45a0ba['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x58270f['json']();},async 'getJudgeTasks'(_0x187b27){const _0x4ca6d5=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x187b27));if(!_0x4ca6d5['ok']){const _0x197ab6=await _0x4ca6d5['json']();throw new Error(_0x197ab6['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4ca6d5['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x15a39e,_0x2a1fcf,_0x3a7fb7=''){const _0x239e4e=await fetch(API_BASE+'/tasks/'+_0x15a39e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2a1fcf,'customPreamble':_0x3a7fb7})});if(!_0x239e4e['ok']){const _0x2aa29a=await _0x239e4e['json']();throw new Error(_0x2aa29a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x239e4e['json']();},async 'getJiraConfig'(){const _0x5137c1=await fetch(API_BASE+'/jira/config');if(!_0x5137c1['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5137c1['json']();},async 'getJiraIssue'(_0x3e0454){const _0x4d9533=await fetch(API_BASE+'/jira/issues/'+_0x3e0454);if(!_0x4d9533['ok']){const _0x436580=await _0x4d9533['json']()['catch'](()=>({}));throw new Error(_0x436580['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4d9533['statusText']);}return await _0x4d9533['json']();},async 'searchJiraIssues'(_0x13f125,_0x512b95=0x14){const _0x11ae82=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x13f125,'maxResults':_0x512b95})});if(!_0x11ae82['ok']){const _0x5e56ad=await _0x11ae82['json']()['catch'](()=>({}));throw new Error(_0x5e56ad['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x11ae82['statusText']);}return await _0x11ae82['json']();},async 'postJiraComment'(_0x51ae79,_0x4fc474){const _0x4a10ba=await fetch(API_BASE+'/jira/issues/'+_0x51ae79+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x4fc474})});if(!_0x4a10ba['ok']){const _0x380b8b=await _0x4a10ba['json']()['catch'](()=>({}));throw new Error(_0x380b8b['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4a10ba['statusText']);}return await _0x4a10ba['json']();},async 'getJiraComments'(_0x154dbe){const _0x5b757c=await fetch(API_BASE+'/jira/issues/'+_0x154dbe+'/comments');if(!_0x5b757c['ok']){const _0x1b5624=await _0x5b757c['json']()['catch'](()=>({}));throw new Error(_0x1b5624['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5b757c['statusText']);}return await _0x5b757c['json']();},async 'promptParameter'({environment:_0x11da74,command:_0x277c5f,parser:parser='json'}){const _0x4e8569=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x11da74,'command':_0x277c5f,'parser':parser})});if(!_0x4e8569['ok']){const _0x184969=await _0x4e8569['json']()['catch'](()=>({}));throw new Error(_0x184969['message']||_0x184969['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4e8569['statusText']);}return await _0x4e8569['json']();},async 'promptParameterStream'(_0xa48139,_0x2d615f){const _0x42fbb8=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa48139)});if(!_0x42fbb8['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x42fbb8['statusText']);const _0x2f0d6e=_0x42fbb8['body']['getReader'](),_0x46ec9b=new TextDecoder();let _0xb35547='';return new Promise((_0x29762a,_0x2abae0)=>{const _0x5a0670=async()=>{try{const {done:_0x2f38e3,value:_0x2988a8}=await _0x2f0d6e['read']();if(_0x2f38e3)return;_0xb35547+=_0x46ec9b['decode'](_0x2988a8,{'stream':!![]});const _0x2eca4c=_0xb35547['split']('\x0a\x0a');_0xb35547=_0x2eca4c['pop']()||'';for(const _0xe70b97 of _0x2eca4c){if(!_0xe70b97['trim']())continue;const _0x2eb6ff=_0xe70b97['split']('\x0a');let _0x559d27='message',_0x2138c2='';for(const _0x1fe3b3 of _0x2eb6ff){if(_0x1fe3b3['startsWith']('event:'))_0x559d27=_0x1fe3b3['substring'](0x6)['trim']();else _0x1fe3b3['startsWith']('data:')&&(_0x2138c2=_0x1fe3b3['substring'](0x5)['trim']());}if(!_0x2138c2)continue;try{const _0x5182ea=JSON['parse'](_0x2138c2);if(_0x559d27==='progress'&&_0x2d615f)_0x2d615f(_0x5182ea['stage'],_0x5182ea['message']);else{if(_0x559d27==='result'){_0x29762a(_0x5182ea);return;}else{if(_0x559d27==='error'){let _0x46bf8f=_0x5182ea['message']||_0x5182ea['error']||'Prompt\x20command\x20failed';_0x5182ea['rawOutput']&&(_0x46bf8f+='\x0a\x0aRaw\x20output:\x0a'+_0x5182ea['rawOutput']);_0x2abae0(new Error(_0x46bf8f));return;}}}}catch(_0xb74d99){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0xb74d99),console['error']('Event\x20type:',_0x559d27),console['error']('Event\x20data:',_0x2138c2),console['error']('First\x20200\x20chars:',_0x2138c2['substring'](0x0,0xc8)),_0x2abae0(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0xb74d99['message']+'\x0a\x0aData:\x20'+_0x2138c2['substring'](0x0,0x1f4)));return;}}_0x5a0670();}catch(_0x36faae){_0x2abae0(_0x36faae);}};_0x5a0670();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2b8e3c){const _0x2bbd76=await fetch(''+API_BASE+_0x2b8e3c);if(!_0x2bbd76['ok']){const _0x579a78=await _0x2bbd76['json']()['catch'](()=>({'error':_0x2bbd76['statusText']})),_0x10e405=new Error(_0x579a78['error']||_0x579a78['message']||_0x2bbd76['statusText']);if(_0x579a78['detail']!==undefined)_0x10e405['detail']=_0x579a78['detail'];throw _0x10e405;}return await _0x2bbd76['json']();},async 'post'(_0x30100c,_0x792112){const _0x82cb0f=await fetch(''+API_BASE+_0x30100c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x792112)});if(!_0x82cb0f['ok']){const _0xf7d260=await _0x82cb0f['json']()['catch'](()=>({'error':_0x82cb0f['statusText']})),_0x106d30=new Error(_0xf7d260['error']||_0xf7d260['message']||_0x82cb0f['statusText']);if(_0xf7d260['detail']!==undefined)_0x106d30['detail']=_0xf7d260['detail'];throw _0x106d30;}return await _0x82cb0f['json']();},async 'put'(_0x503fbf,_0x368b12){const _0x18a1b5=await fetch(''+API_BASE+_0x503fbf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x368b12)});if(!_0x18a1b5['ok']){const _0x3e7aea=await _0x18a1b5['json']()['catch'](()=>({'error':_0x18a1b5['statusText']})),_0x26a42d=new Error(_0x3e7aea['error']||_0x3e7aea['message']||_0x18a1b5['statusText']);if(_0x3e7aea['detail']!==undefined)_0x26a42d['detail']=_0x3e7aea['detail'];throw _0x26a42d;}return await _0x18a1b5['json']();},async 'delete'(_0x28a398,_0x59d4d7){const _0x15d34b={'method':'DELETE'};_0x59d4d7&&(_0x15d34b['headers']={'Content-Type':'application/json'},_0x15d34b['body']=JSON['stringify'](_0x59d4d7));const _0x2f402e=await fetch(''+API_BASE+_0x28a398,_0x15d34b);if(!_0x2f402e['ok']){const _0x29a690=await _0x2f402e['json']()['catch'](()=>({'error':_0x2f402e['statusText']})),_0x294920=new Error(_0x29a690['error']||_0x29a690['message']||_0x2f402e['statusText']);if(_0x29a690['detail']!==undefined)_0x294920['detail']=_0x29a690['detail'];throw _0x294920;}return await _0x2f402e['json']();},async 'getSkills'(){const _0x46c298=await fetch(API_BASE+'/skills');if(!_0x46c298['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x46c298['statusText']);return await _0x46c298['json']();},async 'getSkill'(_0x3bbd54){const _0x55569b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3bbd54));if(!_0x55569b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x55569b['statusText']);return await _0x55569b['json']();},async 'createSkill'(_0x4cdadc){const _0x149328=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cdadc)});if(!_0x149328['ok']){const _0x11541d=await _0x149328['json']()['catch'](()=>({'error':_0x149328['statusText']})),_0x12e6f9=new Error(_0x11541d['error']||_0x11541d['message']||_0x149328['statusText']);if(_0x11541d['detail']!==undefined)_0x12e6f9['detail']=_0x11541d['detail'];throw _0x12e6f9;}return await _0x149328['json']();},async 'updateSkill'(_0x4b072,_0x179b7e){const _0x280390=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b072),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x179b7e)});if(!_0x280390['ok']){const _0x1c350b=await _0x280390['json']()['catch'](()=>({'error':_0x280390['statusText']})),_0x35ef78=new Error(_0x1c350b['error']||_0x1c350b['message']||_0x280390['statusText']);if(_0x1c350b['detail']!==undefined)_0x35ef78['detail']=_0x1c350b['detail'];throw _0x35ef78;}return await _0x280390['json']();},async 'deleteSkill'(_0x510ab1){const _0x33004e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x510ab1),{'method':'DELETE'});if(!_0x33004e['ok']){const _0x5ea4ce=await _0x33004e['json']()['catch'](()=>({'error':_0x33004e['statusText']})),_0x5a2496=new Error(_0x5ea4ce['error']||_0x5ea4ce['message']||_0x33004e['statusText']);if(_0x5ea4ce['detail']!==undefined)_0x5a2496['detail']=_0x5ea4ce['detail'];throw _0x5a2496;}return await _0x33004e['json']();},async 'getSkillFile'(_0x27ddb3,_0x1f8cad){const _0x45faa7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x27ddb3)+'/files/'+_0x1f8cad);if(!_0x45faa7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x45faa7['statusText']);return await _0x45faa7['json']();},async 'saveSkillFile'(_0x1598a2,_0x131620,_0x125721){const _0x3458f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1598a2)+'/files/'+_0x131620,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x125721})});if(!_0x3458f0['ok']){const _0x10ae1c=await _0x3458f0['json']()['catch'](()=>({'error':_0x3458f0['statusText']})),_0x53699a=new Error(_0x10ae1c['error']||_0x10ae1c['message']||_0x3458f0['statusText']);if(_0x10ae1c['detail']!==undefined)_0x53699a['detail']=_0x10ae1c['detail'];throw _0x53699a;}return await _0x3458f0['json']();},async 'deleteSkillFile'(_0x14744d,_0x4b049d){const _0x189cd5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x14744d)+'/files/'+_0x4b049d,{'method':'DELETE'});if(!_0x189cd5['ok']){const _0x2c7b96=await _0x189cd5['json']()['catch'](()=>({'error':_0x189cd5['statusText']})),_0xeb634d=new Error(_0x2c7b96['error']||_0x2c7b96['message']||_0x189cd5['statusText']);if(_0x2c7b96['detail']!==undefined)_0xeb634d['detail']=_0x2c7b96['detail'];throw _0xeb634d;}return await _0x189cd5['json']();},async 'pullSkills'(){const _0x58bd9f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x58bd9f['ok']){const _0xf0a93f=await _0x58bd9f['json']()['catch'](()=>({'error':_0x58bd9f['statusText']})),_0x55cd4e=new Error(_0xf0a93f['error']||_0xf0a93f['message']||_0x58bd9f['statusText']);if(_0xf0a93f['detail']!==undefined)_0x55cd4e['detail']=_0xf0a93f['detail'];throw _0x55cd4e;}return await _0x58bd9f['json']();},async 'commitSkills'(_0x25fc8c,_0x34433a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x34433a,_0x5895d5=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x25fc8c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5895d5['ok']){const _0x557f01=await _0x5895d5['json']()['catch'](()=>({'error':_0x5895d5['statusText']})),_0x562aab=new Error(_0x557f01['error']||_0x557f01['message']||_0x5895d5['statusText']);if(_0x557f01['detail']!==undefined)_0x562aab['detail']=_0x557f01['detail'];throw _0x562aab;}return await _0x5895d5['json']();},async 'discardSkillsChanges'(){const _0x1691db=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1691db['ok']){const _0x1c0c24=await _0x1691db['json']()['catch'](()=>({'error':_0x1691db['statusText']})),_0x56b2d3=new Error(_0x1c0c24['error']||_0x1c0c24['message']||_0x1691db['statusText']);if(_0x1c0c24['detail']!==undefined)_0x56b2d3['detail']=_0x1c0c24['detail'];throw _0x56b2d3;}return await _0x1691db['json']();},async 'getSkillCatalog'(){const _0x2ed70f=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ed70f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ed70f['statusText']);return await _0x2ed70f['json']();},async 'getImportedSkillsRegistry'(){const _0x5a56f6=await fetch(API_BASE+'/external-skills/registry');if(!_0x5a56f6['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5a56f6['statusText']);return await _0x5a56f6['json']();},async 'importCatalogSkill'(_0x36aeaa){const _0x1ff798=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x36aeaa})});if(!_0x1ff798['ok']){const _0x2d7544=await _0x1ff798['json']()['catch'](()=>({'error':_0x1ff798['statusText']})),_0x421ada=new Error(_0x2d7544['error']||_0x2d7544['message']||_0x1ff798['statusText']);if(_0x2d7544['detail']!==undefined)_0x421ada['detail']=_0x2d7544['detail'];throw _0x421ada;}return await _0x1ff798['json']();},async 'importSkillFromGit'(_0x38ca08,_0x8842ad,_0xc9c89='main',_0x8069d0=null){const _0xa8887f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x38ca08,'skillPath':_0x8842ad,'branch':_0xc9c89,'skillId':_0x8069d0})});if(!_0xa8887f['ok']){const _0x5a0a30=await _0xa8887f['json']()['catch'](()=>({'error':_0xa8887f['statusText']})),_0x59945e=new Error(_0x5a0a30['error']||_0x5a0a30['message']||_0xa8887f['statusText']);if(_0x5a0a30['detail']!==undefined)_0x59945e['detail']=_0x5a0a30['detail'];throw _0x59945e;}return await _0xa8887f['json']();},async 'probeMarketplace'(_0x13d938,_0x9f349b='main'){const _0x31078d=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13d938,'branch':_0x9f349b})});if(!_0x31078d['ok']){const _0x34352c=await _0x31078d['json']()['catch'](()=>({'error':_0x31078d['statusText']})),_0x362dbb=new Error(_0x34352c['error']||_0x34352c['message']||_0x31078d['statusText']);if(_0x34352c['detail']!==undefined)_0x362dbb['detail']=_0x34352c['detail'];throw _0x362dbb;}return await _0x31078d['json']();},async 'importMarketplaceBundle'(_0x5d9cd4,_0x3ca55d,_0x21e541,_0x9e6440=null){const _0x260f52=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5d9cd4,'branch':_0x3ca55d,'bundleId':_0x21e541,'selectedSkills':_0x9e6440})});if(!_0x260f52['ok']){const _0x2f316a=await _0x260f52['json']()['catch'](()=>({'error':_0x260f52['statusText']})),_0x5059a4=new Error(_0x2f316a['error']||_0x2f316a['message']||_0x260f52['statusText']);if(_0x2f316a['detail']!==undefined)_0x5059a4['detail']=_0x2f316a['detail'];throw _0x5059a4;}return await _0x260f52['json']();},async 'importSkillFromFolder'(_0x305d51,_0x100a09=null){const _0x521b91=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x305d51,'skillId':_0x100a09})});if(!_0x521b91['ok']){const _0x3beb4d=await _0x521b91['json']()['catch'](()=>({'error':_0x521b91['statusText']})),_0x216bf2=new Error(_0x3beb4d['error']||_0x3beb4d['message']||_0x521b91['statusText']);if(_0x3beb4d['detail']!==undefined)_0x216bf2['detail']=_0x3beb4d['detail'];throw _0x216bf2;}return await _0x521b91['json']();},async 'importSkillFromNpm'(_0x49352a,_0x43937f='latest',_0x50af09=null,_0x19be08=null){const _0x13fb6e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x49352a,'version':_0x43937f,'skillId':_0x50af09,'registry':_0x19be08})});if(!_0x13fb6e['ok']){const _0x2638c1=await _0x13fb6e['json']()['catch'](()=>({'error':_0x13fb6e['statusText']})),_0x2b32bf=new Error(_0x2638c1['error']||_0x2638c1['message']||_0x13fb6e['statusText']);if(_0x2638c1['detail']!==undefined)_0x2b32bf['detail']=_0x2638c1['detail'];throw _0x2b32bf;}return await _0x13fb6e['json']();},async 'checkSkillUpdates'(_0x2eb4d0){const _0x4c8b38=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2eb4d0)+'/check-updates',{'method':'POST'});if(!_0x4c8b38['ok']){const _0x12882e=await _0x4c8b38['json']()['catch'](()=>({'error':_0x4c8b38['statusText']})),_0x2c2fd7=new Error(_0x12882e['error']||_0x12882e['message']||_0x4c8b38['statusText']);if(_0x12882e['detail']!==undefined)_0x2c2fd7['detail']=_0x12882e['detail'];throw _0x2c2fd7;}return await _0x4c8b38['json']();},async 'updateExternalSkill'(_0x790739){const _0x3ad7aa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x790739)+'/update',{'method':'POST'});if(!_0x3ad7aa['ok']){const _0x1d8624=await _0x3ad7aa['json']()['catch'](()=>({'error':_0x3ad7aa['statusText']})),_0x33ff7a=new Error(_0x1d8624['error']||_0x1d8624['message']||_0x3ad7aa['statusText']);if(_0x1d8624['detail']!==undefined)_0x33ff7a['detail']=_0x1d8624['detail'];throw _0x33ff7a;}return await _0x3ad7aa['json']();},async 'updateSkillFlags'(_0x4edc0d,_0x208cd1){const _0x2603eb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4edc0d)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x208cd1})});if(!_0x2603eb['ok']){const _0x3cae26=await _0x2603eb['json']()['catch'](()=>({'error':_0x2603eb['statusText']})),_0x244211=new Error(_0x3cae26['error']||_0x3cae26['message']||_0x2603eb['statusText']);if(_0x3cae26['detail']!==undefined)_0x244211['detail']=_0x3cae26['detail'];throw _0x244211;}return await _0x2603eb['json']();},async 'removeFromImportedRegistry'(_0x54d98a){const _0x3c0bac=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x54d98a)+'/registry',{'method':'DELETE'});if(!_0x3c0bac['ok']){const _0x53c538=await _0x3c0bac['json']()['catch'](()=>({'error':_0x3c0bac['statusText']})),_0x2d29ea=new Error(_0x53c538['error']||_0x53c538['message']||_0x3c0bac['statusText']);if(_0x53c538['detail']!==undefined)_0x2d29ea['detail']=_0x53c538['detail'];throw _0x2d29ea;}return await _0x3c0bac['json']();},async 'getTeams'(){const _0x59182e=await fetch(API_BASE+'/teams');if(!_0x59182e['ok']){const _0x3a177a=await _0x59182e['json']()['catch'](()=>({'message':_0x59182e['statusText']}));throw new Error(_0x3a177a['message']||'Failed\x20to\x20get\x20teams');}return await _0x59182e['json']();},async 'getTeam'(_0x176b2b){const _0x531eb3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x176b2b));if(!_0x531eb3['ok']){const _0x19f615=await _0x531eb3['json']()['catch'](()=>({'message':_0x531eb3['statusText']}));throw new Error(_0x19f615['message']||'Failed\x20to\x20get\x20team');}return await _0x531eb3['json']();},async 'createTeam'(_0x1bdbe2){const _0x55e996=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bdbe2)});if(!_0x55e996['ok']){const _0x2f984d=await _0x55e996['json']()['catch'](()=>({'message':_0x55e996['statusText']}));throw new Error(_0x2f984d['message']||'Failed\x20to\x20create\x20team');}return await _0x55e996['json']();},async 'updateTeam'(_0x476cdb,_0x18d847){const _0x4f8444=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x476cdb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18d847)});if(!_0x4f8444['ok']){const _0x447fc8=await _0x4f8444['json']()['catch'](()=>({'message':_0x4f8444['statusText']}));throw new Error(_0x447fc8['message']||'Failed\x20to\x20update\x20team');}return await _0x4f8444['json']();},async 'deleteTeam'(_0x511b96){const _0x193c7b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x511b96),{'method':'DELETE'});if(!_0x193c7b['ok']){const _0x21ea1a=await _0x193c7b['json']()['catch'](()=>({'message':_0x193c7b['statusText']}));throw new Error(_0x21ea1a['message']||'Failed\x20to\x20delete\x20team');}return await _0x193c7b['json']();},async 'addTeamMember'(_0xd7bf23,_0x3c289d){const _0x1d0657=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xd7bf23)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3c289d})});if(!_0x1d0657['ok']){const _0x56a433=await _0x1d0657['json']()['catch'](()=>({'message':_0x1d0657['statusText']}));throw new Error(_0x56a433['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x1d0657['json']();},async 'removeTeamMember'(_0xab8754,_0x274a7a){const _0x3bc003=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xab8754)+'/members/'+encodeURIComponent(_0x274a7a),{'method':'DELETE'});if(!_0x3bc003['ok']){const _0x29b2a0=await _0x3bc003['json']()['catch'](()=>({'message':_0x3bc003['statusText']}));throw new Error(_0x29b2a0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x3bc003['json']();},async 'getBindings'(_0x33676d={}){const _0x1f1507=new URLSearchParams();if(_0x33676d['resource_type'])_0x1f1507['set']('resource_type',_0x33676d['resource_type']);if(_0x33676d['resource_id'])_0x1f1507['set']('resource_id',_0x33676d['resource_id']);if(_0x33676d['subject_type'])_0x1f1507['set']('subject_type',_0x33676d['subject_type']);if(_0x33676d['subject_id'])_0x1f1507['set']('subject_id',_0x33676d['subject_id']);const _0x4a9917=_0x1f1507['toString'](),_0xf1b4b4=await fetch(API_BASE+'/bindings'+(_0x4a9917?'?'+_0x4a9917:''));if(!_0xf1b4b4['ok']){const _0x5afe56=await _0xf1b4b4['json']()['catch'](()=>({'message':_0xf1b4b4['statusText']}));throw new Error(_0x5afe56['message']||'Failed\x20to\x20get\x20bindings');}return await _0xf1b4b4['json']();},async 'createBinding'(_0x228622){const _0x111235=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x228622)});if(!_0x111235['ok']){const _0x5968a0=await _0x111235['json']()['catch'](()=>({'message':_0x111235['statusText']}));throw new Error(_0x5968a0['message']||'Failed\x20to\x20create\x20binding');}return await _0x111235['json']();},async 'updateBinding'(_0x37d4a9,_0x45c954){const _0x201d7e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x37d4a9),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45c954)});if(!_0x201d7e['ok']){const _0x54539a=await _0x201d7e['json']()['catch'](()=>({'message':_0x201d7e['statusText']}));throw new Error(_0x54539a['message']||'Failed\x20to\x20update\x20binding');}return await _0x201d7e['json']();},async 'deleteBinding'(_0x389bf1){const _0x386295=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x389bf1),{'method':'DELETE'});if(!_0x386295['ok']){const _0x11fb23=await _0x386295['json']()['catch'](()=>({'message':_0x386295['statusText']}));throw new Error(_0x11fb23['message']||'Failed\x20to\x20delete\x20binding');}return await _0x386295['json']();},async 'getRoleDefinitions'(){const _0x1e8e95=await fetch(API_BASE+'/roles');if(!_0x1e8e95['ok']){const _0x4710f6=await _0x1e8e95['json']()['catch'](()=>({'message':_0x1e8e95['statusText']}));throw new Error(_0x4710f6['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1e8e95['json']();},async 'getRoleDefinition'(_0x520d0c){const _0x565b54=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x520d0c));if(!_0x565b54['ok']){const _0x117946=await _0x565b54['json']()['catch'](()=>({'message':_0x565b54['statusText']}));throw new Error(_0x117946['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x565b54['json']();},async 'createRoleDefinition'(_0x16368f){const _0x1e2de1=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16368f)});if(!_0x1e2de1['ok']){const _0x23d5ba=await _0x1e2de1['json']()['catch'](()=>({'message':_0x1e2de1['statusText']}));throw new Error(_0x23d5ba['message']||_0x23d5ba['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e2de1['json']();},async 'updateRoleDefinition'(_0x21c822,_0x3aecf0){const _0x53337c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x21c822),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3aecf0)});if(!_0x53337c['ok']){const _0x2fde25=await _0x53337c['json']()['catch'](()=>({'message':_0x53337c['statusText']}));throw new Error(_0x2fde25['message']||_0x2fde25['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x53337c['json']();},async 'deleteRoleDefinition'(_0x428996){const _0x2d9d69=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x428996),{'method':'DELETE'});if(!_0x2d9d69['ok']){const _0x12a32e=await _0x2d9d69['json']()['catch'](()=>({'message':_0x2d9d69['statusText']}));throw new Error(_0x12a32e['message']||_0x12a32e['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2d9d69['json']();},async 'getAvailablePermissions'(){const _0x23585f=await fetch(API_BASE+'/roles/available-permissions');if(!_0x23585f['ok']){const _0x381b1a=await _0x23585f['json']()['catch'](()=>({'message':_0x23585f['statusText']}));throw new Error(_0x381b1a['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x23585f['json']();},async 'getGitProviderAllowedTeams'(_0x33d47b){const _0x32b274=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x33d47b)+'/allowed-teams');if(!_0x32b274['ok']){const _0x6f52dd=await _0x32b274['json']()['catch'](()=>({'message':_0x32b274['statusText']}));throw new Error(_0x6f52dd['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x32b274['json']();},async 'setGitProviderAllowedTeams'(_0x5ed604,_0x2c195b){const _0x1fc2ca=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5ed604)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2c195b})});if(!_0x1fc2ca['ok']){const _0x42f53e=await _0x1fc2ca['json']()['catch'](()=>({'message':_0x1fc2ca['statusText']}));throw new Error(_0x42f53e['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1fc2ca['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 _0x597482=toastState['baseBottom'];toastState['toasts']['forEach'](_0x46d2b6=>{_0x46d2b6['el']['style']['bottom']=_0x597482+'px';const _0x5769b9=_0x46d2b6['el']['offsetHeight']||toastState['defaultHeight'];_0x597482+=_0x5769b9+toastState['gap'];});});}function removeToastById(_0x7b6319){const _0x3180e1=toastState['toasts']['findIndex'](_0x1f0920=>_0x1f0920['id']===_0x7b6319);if(_0x3180e1===-0x1)return;const _0x40f90d=toastState['toasts'][_0x3180e1];if(_0x40f90d['timeoutId'])clearTimeout(_0x40f90d['timeoutId']);_0x40f90d['el']['classList']['remove']('show'),setTimeout(()=>_0x40f90d['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3180e1,0x1),repositionAllToasts();}function registerToast(_0x2d77af){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d77af),repositionAllToasts(),_0x2d77af['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x30e887){if(_0x30e887===null||_0x30e887===undefined)return'';return String(_0x30e887)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x48f4c9,_0x2c347e){if(_0x48f4c9&&typeof _0x48f4c9==='object'&&!Array['isArray'](_0x48f4c9))return{'code':typeof _0x48f4c9['text']==='string'?_0x48f4c9['text']:'','language':typeof _0x48f4c9['lang']==='string'?_0x48f4c9['lang']:''};return{'code':typeof _0x48f4c9==='string'?_0x48f4c9:'','language':typeof _0x2c347e==='string'?_0x2c347e:''};}function buildMermaidBlock(_0xcc6691){const _0x4c8e3c=String(_0xcc6691||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4c8e3c))+'\x22>'+escapeHtmlValue(_0x4c8e3c)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x34bee4=new marked['Renderer'](),_0x5c7bdb=_0x34bee4['code']['bind'](_0x34bee4);return _0x34bee4['code']=function(_0x7443a5,_0x5c4efb,..._0x434658){const {code:_0x3ab0af,language:_0x16b930}=getMarkdownCodeBlockPayload(_0x7443a5,_0x5c4efb),_0x72fc08=String(_0x16b930||'')['trim']()['toLowerCase']();if(_0x72fc08==='mermaid')return buildMermaidBlock(_0x3ab0af);const _0x1196e9=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1196e9&&_0x72fc08)try{const _0x4fdab1=_0x1196e9['getLanguage'](_0x72fc08)?_0x72fc08:'plaintext',_0x5080f9=_0x1196e9['highlight'](_0x3ab0af,{'language':_0x4fdab1})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x72fc08)+'\x22>'+_0x5080f9+'</code></pre>';}catch(_0x5bbc3b){console['error']('Syntax\x20highlighting\x20error:',_0x5bbc3b);}return _0x5c7bdb(_0x7443a5,_0x5c4efb,..._0x434658);},sharedMarkedRenderer=_0x34bee4,_0x34bee4;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x386839=window['mermaid'];if(!_0x386839||typeof _0x386839['initialize']!=='function')return _0x386839||null;return _0x386839['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x386839;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1318bf,_0x295a3b)=>{const _0x1a1097=()=>_0x1318bf(configureMermaidInstance()),_0x10d44c=()=>{mermaidLoadPromise=null,_0x295a3b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x429a37=document['getElementById'](MERMAID_SCRIPT_ID);!_0x429a37&&(_0x429a37=document['createElement']('script'),_0x429a37['id']=MERMAID_SCRIPT_ID,_0x429a37['src']=MERMAID_SCRIPT_SRC,_0x429a37['async']=!![],document['head']['appendChild'](_0x429a37));if(window['mermaid']){_0x1a1097();return;}_0x429a37['addEventListener']('load',_0x1a1097,{'once':!![]}),_0x429a37['addEventListener']('error',_0x10d44c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3e095f){const _0x1329fc=_0x3e095f['getAttribute']('data-mermaid-source');if(!_0x1329fc)return null;let _0x598e27=_0x1329fc;try{_0x598e27=decodeURIComponent(_0x1329fc);}catch{}return _0x3e095f['textContent']=_0x598e27,_0x3e095f['removeAttribute']('data-processed'),_0x3e095f['removeAttribute']('aria-roledescription'),_0x3e095f['removeAttribute']('role'),_0x3e095f['removeAttribute']('aria-label'),_0x598e27;}function collectMermaidNodes(_0x3d3d8e,_0x103640){if(!(_0x3d3d8e instanceof Element))return;_0x3d3d8e['matches']('.mermaid[data-mermaid-source]')&&_0x103640['add'](_0x3d3d8e),_0x3d3d8e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3c3198=>{_0x103640['add'](_0x3c3198);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x4e277c=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x294ff4=>setTimeout(_0x294ff4,0x0);_0x4e277c(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x4d3a17=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x4d3a17);});});}function queueMermaidRender(_0x53031b){const _0x327805=new Set();_0x53031b instanceof Document||_0x53031b instanceof DocumentFragment?_0x53031b['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xd0d846=>_0x327805['add'](_0xd0d846)):collectMermaidNodes(_0x53031b,_0x327805);if(_0x327805['size']===0x0)return;_0x327805['forEach'](_0x5a3d0f=>pendingMermaidNodes['add'](_0x5a3d0f)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x4d4a97=Array['from'](pendingMermaidNodes)['filter'](_0x1de7e5=>_0x1de7e5['isConnected']);pendingMermaidNodes['clear']();if(_0x4d4a97['length']===0x0)return;const _0x474d48=await loadMermaid();if(!_0x474d48)return;configureMermaidInstance();const _0x55e50f=getMermaidTheme();for(const _0x508813 of _0x4d4a97){const _0x1c998c=_0x508813['getAttribute']('data-mermaid-source');if(!_0x1c998c)continue;const _0x5e78f8=_0x508813['getAttribute']('data-processed')==='true';if(_0x5e78f8&&_0x508813['dataset']['mermaidTheme']===_0x55e50f)continue;restoreMermaidSource(_0x508813);try{if(typeof _0x474d48['run']==='function')await _0x474d48['run']({'nodes':[_0x508813]});else typeof _0x474d48['init']==='function'&&_0x474d48['init'](undefined,[_0x508813]);_0x508813['dataset']['mermaidTheme']=_0x55e50f,delete _0x508813['dataset']['mermaidError'];}catch(_0x3b7010){console['error']('Mermaid\x20render\x20failed:',_0x3b7010),restoreMermaidSource(_0x508813),_0x508813['dataset']['mermaidError']='true',delete _0x508813['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1fc439=>{_0x1fc439['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1fc439);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x42a7be=>{_0x42a7be['forEach'](_0x2a376d=>{_0x2a376d['addedNodes']['forEach'](_0x13b3f2=>{_0x13b3f2['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x13b3f2);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x16a201){const _0x375e01=new Date(_0x16a201),_0x592e2a=new Date(),_0x45c316=_0x592e2a-_0x375e01,_0x40ba47=Math['floor'](_0x45c316/0x3e8),_0x45bfb7=Math['floor'](_0x40ba47/0x3c),_0x38c6bf=Math['floor'](_0x45bfb7/0x3c),_0x165d09=Math['floor'](_0x38c6bf/0x18);if(_0x40ba47<0x3c)return'now';if(_0x45bfb7<0x3c)return _0x45bfb7+'m\x20ago';if(_0x38c6bf<0x18)return _0x38c6bf+'h\x20ago';return _0x165d09+'d\x20ago';},'getStatusIcon'(_0x5aa154){switch(_0x5aa154){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x21bb62){switch(_0x21bb62){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'(_0x3cf3a1,_0x5a214c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3dea56={};_0x3dea56['text/plain']=new Blob([_0x3cf3a1],{'type':'text/plain'});_0x5a214c&&(_0x3dea56['text/html']=new Blob([_0x5a214c],{'type':'text/html'}));const _0x569920=new ClipboardItem(_0x3dea56);return await navigator['clipboard']['write']([_0x569920]),!![];}catch(_0x3533f7){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3533f7);}try{const _0x12971c=_0x4ed2c1=>{_0x4ed2c1['preventDefault'](),_0x4ed2c1['clipboardData']['setData']('text/plain',_0x3cf3a1),_0x5a214c&&_0x4ed2c1['clipboardData']['setData']('text/html',_0x5a214c);};document['addEventListener']('copy',_0x12971c);const _0x32d071=document['execCommand']('copy');document['removeEventListener']('copy',_0x12971c);if(_0x32d071)return!![];}catch(_0x4380a7){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4380a7);}try{const _0x55804c=document['createElement']('textarea');_0x55804c['value']=_0x3cf3a1,_0x55804c['style']['position']='fixed',_0x55804c['style']['opacity']='0',_0x55804c['style']['pointerEvents']='none',document['body']['appendChild'](_0x55804c),_0x55804c['select']();const _0x2a7d40=document['execCommand']('copy');return document['body']['removeChild'](_0x55804c),_0x2a7d40;}catch(_0xa0544f){return console['error']('All\x20clipboard\x20methods\x20failed:',_0xa0544f),![];}},'showToast'(_0x356f12,_0x3eed47='info'){const _0x4ac450=getNextToastId(),_0x229211=document['createElement']('div');_0x229211['className']='toast\x20toast-'+_0x3eed47,_0x229211['textContent']=_0x356f12,_0x229211['dataset']['toastId']=_0x4ac450,document['body']['appendChild'](_0x229211);const _0x204c56=_0x3eed47==='error'?0x2710:0xbb8,_0x5c524f=setTimeout(()=>{removeToastById(_0x4ac450);},_0x204c56),_0x35f5f9={'id':_0x4ac450,'el':_0x229211,'timeoutId':_0x5c524f};return registerToast(_0x35f5f9),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x229211['classList']['add']('show');});}),_0x4ac450;},'showError'(_0x31adb3){console['error'](_0x31adb3);const _0x1023a6=typeof _0x31adb3==='string'?_0x31adb3:_0x31adb3['message']||'An\x20error\x20occurred';this['showToast'](_0x1023a6,'error');},'showSuccess'(_0x2566e1){this['showToast'](_0x2566e1,'success');},'capitalize'(_0x1d907b){if(!_0x1d907b)return'';return _0x1d907b['charAt'](0x0)['toUpperCase']()+_0x1d907b['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5b3fad){return escapeHtmlValue(_0x5b3fad);},'ansiToHtml'(_0x5a744b){if(_0x5a744b===null||_0x5a744b===undefined)return'';let _0x531979=this['escapeHtml'](_0x5a744b);const _0x73c867={'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'},_0x307c98={'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 _0x16aa48=0x0;return _0x531979=_0x531979['replace'](/\x1b\[([0-9;]*)m/g,(_0x12b1d6,_0x453d62)=>{if(!_0x453d62||_0x453d62==='0'){const _0x51c4ca='</span>'['repeat'](_0x16aa48);return _0x16aa48=0x0,_0x51c4ca;}const _0x46fe78=_0x453d62['split'](';'),_0x5c917e=[];for(const _0x303869 of _0x46fe78){if(_0x303869==='1')_0x5c917e['push']('font-weight:bold');else{if(_0x303869==='2')_0x5c917e['push']('opacity:0.7');else{if(_0x303869==='3')_0x5c917e['push']('font-style:italic');else{if(_0x303869==='4')_0x5c917e['push']('text-decoration:underline');else{if(_0x303869==='9')_0x5c917e['push']('text-decoration:line-through');else{if(_0x73c867[_0x303869])_0x5c917e['push']('color:'+_0x73c867[_0x303869]);else{if(_0x307c98[_0x303869])_0x5c917e['push']('background-color:'+_0x307c98[_0x303869]);}}}}}}}if(_0x5c917e['length']>0x0)return _0x16aa48++,'<span\x20style=\x22'+_0x5c917e['join'](';')+'\x22>';return'';}),_0x531979+='</span>'['repeat'](_0x16aa48),_0x531979=_0x531979['replace'](/\\u001b\[([0-9;]*)m/g,(_0x2e3033,_0x56be35)=>{if(!_0x56be35||_0x56be35==='0')return'';const _0x28969e=_0x56be35['split'](';'),_0x295e0e=[];for(const _0x81825 of _0x28969e){if(_0x81825==='1')_0x295e0e['push']('font-weight:bold');else{if(_0x73c867[_0x81825])_0x295e0e['push']('color:'+_0x73c867[_0x81825]);else{if(_0x307c98[_0x81825])_0x295e0e['push']('background-color:'+_0x307c98[_0x81825]);}}}if(_0x295e0e['length']>0x0)return'<span\x20style=\x22'+_0x295e0e['join'](';')+'\x22>';return'';}),_0x531979;},'showModal'({title:_0x155b2b,content:_0x34e6db,buttons:buttons=[]}){const _0x1be983='\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'](_0x155b2b)+'</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'+_0x34e6db+'\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']((_0x59a2e8,_0x19a6cc)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x59a2e8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x19a6cc+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x59a2e8['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',_0x24cace=document['createElement']('div');_0x24cace['id']='utils-modal',_0x24cace['className']='modal',_0x24cace['innerHTML']=_0x1be983,document['body']['appendChild'](_0x24cace);const _0x52a509=document['getElementById']('utils-modal-close');_0x52a509&&_0x52a509['addEventListener']('click',()=>this['hideModal']());const _0x3cd490=_0x24cace['querySelectorAll']('[data-btn-index]');_0x3cd490['forEach'](_0x51982b=>{const _0x512fda=parseInt(_0x51982b['dataset']['btnIndex']);buttons[_0x512fda]?.['onClick']&&_0x51982b['addEventListener']('click',buttons[_0x512fda]['onClick']);});const _0xeccd6a=document['getElementById']('utils-modal-overlay');_0xeccd6a&&_0xeccd6a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x147dd6=document['getElementById']('utils-modal');_0x147dd6&&_0x147dd6['remove']();},'parseKeyValuePairs'(_0x2ccb52){const _0x1d8f26={};if(!_0x2ccb52)return _0x1d8f26;return _0x2ccb52['split'](/\r?\n/)['map'](_0x27169f=>_0x27169f['trim']())['filter'](Boolean)['forEach'](_0x40eb86=>{const _0x946f18=_0x40eb86['indexOf']('=');if(_0x946f18>0x0){const _0x3dd032=_0x40eb86['slice'](0x0,_0x946f18)['trim'](),_0x536b5d=_0x40eb86['slice'](_0x946f18+0x1)['trim']();if(_0x3dd032)_0x1d8f26[_0x3dd032]=_0x536b5d;}}),_0x1d8f26;},'debounce'(_0x276755,_0x53efb9=0xfa){let _0x58c18f=null;return(..._0x4a1974)=>{clearTimeout(_0x58c18f),_0x58c18f=setTimeout(()=>_0x276755['apply'](this,_0x4a1974),_0x53efb9);};},'formatTimestamp'(_0x2eb6be){if(!_0x2eb6be)return'N/A';const _0x41d44e=new Date(_0x2eb6be);return _0x41d44e['toLocaleDateString']()+'\x20'+_0x41d44e['toLocaleTimeString']();},'getQueryParams'(){const _0x5294c4=new URLSearchParams(window['location']['search']),_0x1195b0={};for(const [_0x1f7276,_0x566708]of _0x5294c4){_0x1195b0[_0x1f7276]=_0x566708;}return _0x1195b0;},'formatDuration'(_0x25a114,_0x5b6185){if(!_0x25a114)return'N/A';const _0x26a242=new Date(_0x25a114),_0x1142f1=_0x5b6185?new Date(_0x5b6185):new Date(),_0x1c9cbb=_0x1142f1-_0x26a242;if(_0x1c9cbb<0x0)return'0s';const _0x1e352c=Math['floor'](_0x1c9cbb/0x3e8),_0x809cd4=Math['floor'](_0x1e352c/0x3c),_0x12b841=Math['floor'](_0x809cd4/0x3c),_0x451be6=Math['floor'](_0x12b841/0x18);if(_0x1e352c<0x3c)return _0x1e352c+'s';if(_0x809cd4<0x3c)return _0x809cd4+'m\x20'+_0x1e352c%0x3c+'s';if(_0x12b841<0x18)return _0x12b841+'h\x20'+_0x809cd4%0x3c+'m\x20'+_0x1e352c%0x3c+'s';return _0x451be6+'d\x20'+_0x12b841%0x18+'h\x20'+_0x809cd4%0x3c+'m';},'renderMarkdown'(_0x5e50e8,_0x2882f1={}){if(!_0x5e50e8)return'';_0x5e50e8=this['rewriteAttachmentLinks'](_0x5e50e8,_0x2882f1),_0x5e50e8=this['rewriteColorSyntax'](_0x5e50e8);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5e50e8);}catch(_0x4654b6){return console['error']('Markdown\x20parsing\x20error:',_0x4654b6),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);}},'rewriteAttachmentLinks'(_0x2be6a3,_0x1beaf2={}){const _0x49faec=typeof _0x1beaf2['resolveAttachmentUrl']==='function'?_0x1beaf2['resolveAttachmentUrl']:_0x1beaf2['taskId']?_0x5cda00=>API_BASE+'/tasks/'+_0x1beaf2['taskId']+'/attachments/'+encodeURIComponent(_0x5cda00):null;if(!_0x49faec)return _0x2be6a3;return String(_0x2be6a3)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x535251,_0x38ccf0)=>{const _0x5bd055=String(_0x38ccf0||'')['trim']();if(!_0x5bd055)return _0x535251;let _0x40973b=_0x5bd055;try{_0x40973b=decodeURIComponent(_0x5bd055);}catch{}const _0x543637=_0x49faec(_0x40973b);if(!_0x543637)return _0x535251;return']('+_0x543637+')';});},'rewriteColorSyntax'(_0x24de39){if(!_0x24de39)return _0x24de39;return String(_0x24de39)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4094e4,_0x217377,_0x7615fe)=>{const _0x526bc0=this['rewriteColorSyntax'](_0x7615fe);return'<span\x20style=\x22color:\x20'+_0x217377+'\x22>'+_0x526bc0+'</span>';});},'renderMarkdownFallback'(_0x581d11,_0x348987={}){if(!_0x581d11)return'';_0x581d11=_0x581d11['replace'](/\r\n/g,'\x0a'),_0x581d11=_0x581d11['replace'](/\r/g,'\x0a'),_0x581d11=this['rewriteAttachmentLinks'](_0x581d11,_0x348987);let _0x5e0063=this['escapeHtml'](_0x581d11);return _0x5e0063=_0x5e0063['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x5e0063=_0x5e0063['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x5e0063=_0x5e0063['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x5e0063=_0x5e0063['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x5e0063=_0x5e0063['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x5e0063=_0x5e0063['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x5e0063=_0x5e0063['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x5e0063=_0x5e0063['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x5e0063=_0x5e0063['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x5e0063=_0x5e0063['replace'](/\n\n/g,'</p><p>'),_0x5e0063=_0x5e0063['replace'](/\n/g,'<br>'),'<p>'+_0x5e0063+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5cf9ee=new Uint8Array(0x10);crypto['getRandomValues'](_0x5cf9ee),_0x5cf9ee[0x6]=_0x5cf9ee[0x6]&0xf|0x40,_0x5cf9ee[0x8]=_0x5cf9ee[0x8]&0x3f|0x80;const _0x2a651c=Array['from'](_0x5cf9ee,_0x371916=>_0x371916['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2a651c['slice'](0x0,0x8)+'-'+_0x2a651c['slice'](0x8,0xc)+'-'+_0x2a651c['slice'](0xc,0x10)+'-'+_0x2a651c['slice'](0x10,0x14)+'-'+_0x2a651c['slice'](0x14);}};export class CustomSelect{constructor(_0x3d21eb,_0x5d7aa4={}){this['nativeSelect']=_0x3d21eb,this['options']=_0x5d7aa4,this['isOpen']=![],this['selectedValue']=_0x3d21eb['value']||'',this['searchable']=_0x5d7aa4['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x38ca61=document['createElement']('div');_0x38ca61['className']='custom-select';const _0x169d8a=document['createElement']('div');_0x169d8a['className']='custom-select-trigger',_0x169d8a['setAttribute']('tabindex','0'),_0x169d8a['setAttribute']('role','button'),_0x169d8a['setAttribute']('aria-haspopup','listbox');const _0x73f3aa=document['createElement']('span');_0x73f3aa['className']='custom-select-trigger-text';const _0x1287c7=document['createElement']('span');_0x1287c7['className']='custom-select-arrow',_0x1287c7['textContent']='▼',_0x169d8a['appendChild'](_0x73f3aa),_0x169d8a['appendChild'](_0x1287c7);const _0x423055=document['createElement']('div');_0x423055['className']='custom-select-dropdown',_0x423055['setAttribute']('role','listbox');if(this['searchable']){const _0x39224a=document['createElement']('div');_0x39224a['className']='custom-select-search';const _0x43f5ff=document['createElement']('input');_0x43f5ff['type']='text',_0x43f5ff['className']='custom-select-search-input',_0x43f5ff['placeholder']='Type\x20to\x20search...',_0x43f5ff['setAttribute']('aria-label','Search\x20options'),_0x43f5ff['addEventListener']('input',_0x9df05=>{this['searchQuery']=_0x9df05['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x43f5ff['addEventListener']('keydown',_0x3817b0=>{if(_0x3817b0['key']==='Escape')_0x3817b0['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3817b0['key']==='Enter'){_0x3817b0['preventDefault'](),_0x3817b0['stopPropagation']();const _0x287346=_0x423055['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x287346){const _0x1acc1e=_0x287346['getAttribute']('data-value');this['select'](_0x1acc1e);}}}}),_0x39224a['appendChild'](_0x43f5ff),_0x423055['appendChild'](_0x39224a),this['searchInput']=_0x43f5ff;}const _0x1742de=document['createElement']('div');_0x1742de['className']='custom-select-options',_0x423055['appendChild'](_0x1742de),_0x38ca61['appendChild'](_0x169d8a),_0x38ca61['appendChild'](_0x423055),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x38ca61,this['nativeSelect']),this['wrapper']=_0x38ca61,this['trigger']=_0x169d8a,this['triggerText']=_0x73f3aa,this['dropdown']=_0x423055,this['optionsContainer']=_0x1742de,_0x169d8a['addEventListener']('click',()=>this['toggle']()),_0x169d8a['addEventListener']('keydown',_0x4d5916=>this['handleKeydown'](_0x4d5916)),document['addEventListener']('click',_0x386067=>{!_0x38ca61['contains'](_0x386067['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x44a844=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x44a844['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1de64c=new MutationObserver(()=>{this['updateDisabledState']();});_0x1de64c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x4406ab=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x4406ab['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x52ec88=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x52ec88),this['trigger']['setAttribute']('aria-disabled',_0x52ec88?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x52ec88?'-1':'0'),_0x52ec88&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x351aef=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x39651f=_0x351aef['filter'](_0x261e24=>!_0x261e24['disabled']&&!_0x261e24['hidden']);_0x351aef['forEach']((_0xb2f934,_0x3cf0ce)=>{const _0x188870=document['createElement']('div');_0x188870['className']='custom-select-option',_0x188870['textContent']=_0xb2f934['textContent'],_0x188870['setAttribute']('data-value',_0xb2f934['value']),_0x188870['setAttribute']('data-index',_0x3cf0ce),_0x188870['setAttribute']('role','option'),_0xb2f934['disabled']?_0x188870['classList']['add']('disabled'):_0x188870['addEventListener']('click',()=>this['select'](_0xb2f934['value'])),_0xb2f934['value']===this['selectedValue']&&_0x188870['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x188870),this['allOptions']['push']({'element':_0x188870,'text':_0xb2f934['textContent']['toLowerCase'](),'value':_0xb2f934['value'],'disabled':_0xb2f934['disabled']});});if(this['searchable']&&this['searchInput']){const _0x495e3a=this['searchInput']['parentElement'];_0x39651f['length']>0x3?_0x495e3a['style']['display']='':_0x495e3a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x25addc=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x12dac8=>{if(!_0x25addc||_0x12dac8['disabled'])_0x12dac8['element']['style']['display']='';else{const _0x403633=_0x12dac8['text']['includes'](_0x25addc);_0x12dac8['element']['style']['display']=_0x403633?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3824dd){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3824dd,this['nativeSelect']['value']=_0x3824dd;const _0x2edf20=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2edf20),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x578214=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x578214&&(this['triggerText']['textContent']=_0x578214['textContent'],_0x578214['disabled']||_0x578214['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4c62e0=>{_0x4c62e0['getAttribute']('data-value')===this['selectedValue']?_0x4c62e0['classList']['add']('selected'):_0x4c62e0['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 _0xd928c2=window['getComputedStyle'](this['dropdown']);if(_0xd928c2['position']==='fixed'){const _0x3605c3=this['trigger']['getBoundingClientRect'](),_0xdef1c7=parseInt(_0xd928c2['maxHeight'])||0xc8,_0x12459e=window['innerHeight'],_0xcb444d=_0x12459e-_0x3605c3['bottom'],_0x46f274=_0x3605c3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4d8f82;_0xcb444d<_0xdef1c7&&_0x46f274>_0xcb444d?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x12459e-_0x3605c3['top']+'px',_0x4d8f82=Math['min'](_0xdef1c7,_0x46f274-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3605c3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4d8f82=Math['min'](_0xdef1c7,_0xcb444d-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px');if(this['optionsContainer']){let _0x314f15=_0x4d8f82;if(this['searchInput']){const _0x5f43cf=this['searchInput']['parentElement'];_0x5f43cf&&(_0x314f15-=_0x5f43cf['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x314f15)+'px';}this['dropdown']['style']['left']=_0x3605c3['left']+'px',this['dropdown']['style']['width']=_0x3605c3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x5b9953=this['searchInput']['parentElement'];_0x5b9953&&_0x5b9953['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'](_0x581759){if(this['nativeSelect']['disabled'])return;if(_0x581759['key']==='Enter'||_0x581759['key']==='\x20')_0x581759['preventDefault'](),this['toggle']();else _0x581759['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x13d5a8='\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',_0x13d5a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x43f587=document['getElementById']('confirm-dialog-close'),_0x357bd3=document['getElementById']('confirm-dialog-cancel'),_0x449fb8=document['getElementById']('confirm-dialog-confirm'),_0x1f9517=this['_modal']['querySelector']('.modal-overlay');_0x43f587['addEventListener']('click',()=>this['_resolve'](![])),_0x357bd3['addEventListener']('click',()=>this['_resolve'](![])),_0x449fb8['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f9517['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x247888=>{if(_0x247888['key']==='Escape')_0x247888['preventDefault'](),this['_resolve'](![]);else _0x247888['key']==='Enter'&&(_0x247888['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x29a998,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2d1d33=>{this['_resolvePromise']=_0x2d1d33,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x29a998;const _0x45af30=document['getElementById']('confirm-dialog-cancel'),_0x34f2c1=document['getElementById']('confirm-dialog-confirm');_0x45af30['textContent']=cancelText,_0x34f2c1['textContent']=confirmText,_0x34f2c1['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x34f2c1['focus']();});},'_resolve'(_0x1b2a0a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1b2a0a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x561d37,_0x1416d4={}){this['container']=_0x561d37,this['options']={'placeholder':_0x1416d4['placeholder']||'Type\x20to\x20search...','maxItems':_0x1416d4['maxItems']||0x64,'loadItems':_0x1416d4['loadItems']||(async()=>[]),'renderItem':_0x1416d4['renderItem']||(_0x22e2f2=>({'primary':String(_0x22e2f2),'secondary':''})),'onSelect':_0x1416d4['onSelect']||(()=>{}),'filterItems':_0x1416d4['filterItems']||null,'getItemValue':_0x1416d4['getItemValue']||(_0x289192=>_0x289192),'sortItems':_0x1416d4['sortItems']||null,'debounceMs':_0x1416d4['debounceMs']||0xc8,'minCharsForSearch':_0x1416d4['minCharsForSearch']||0x0,'emptyMessage':_0x1416d4['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1416d4['loadingMessage']||'Loading...','preload':_0x1416d4['preload']!==![],'searchMode':_0x1416d4['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',_0x3506f7=>this['onBlur'](_0x3506f7)),this['input']['addEventListener']('input',_0x100616=>this['onInput'](_0x100616)),this['input']['addEventListener']('keydown',_0x4b7728=>this['onKeydown'](_0x4b7728)),this['clearBtn']['addEventListener']('mousedown',_0x132e6a=>{_0x132e6a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x7e646e=>{_0x7e646e['preventDefault']();}),document['addEventListener']('click',_0x1725fa=>{!this['wrapper']['contains'](_0x1725fa['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(_0x432b4){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x432b4);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x9196a6){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x26301d){const _0x2b5ff1=_0x26301d['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b5ff1);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b5ff1):this['loadAndShow'](_0x2b5ff1);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x47d06f){switch(_0x47d06f['key']){case'ArrowDown':_0x47d06f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x47d06f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x47d06f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x47d06f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2e7ef3){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x432356=this['selectedIndex']+_0x2e7ef3;if(_0x432356>=0x0&&_0x432356<this['filteredItems']['length']){this['selectedIndex']=_0x432356,this['updateSelectionHighlight']();const _0x27662a=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x27662a[this['selectedIndex']]&&_0x27662a[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1a2976=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1a2976['forEach']((_0x2751c3,_0x26ad97)=>{_0x2751c3['classList']['toggle']('keyboard-selected',_0x26ad97===this['selectedIndex']);});}async['loadAndShow'](_0x2bd452){this['showLoading']();try{const _0x192faf=await this['options']['loadItems'](_0x2bd452);if(this['options']['searchMode']==='server'){let _0x4d96a9=_0x192faf;this['options']['sortItems']&&(_0x4d96a9=this['options']['sortItems']([..._0x192faf]));this['filteredItems']=_0x4d96a9;const _0x449f4e=this['filteredItems']['length']>=this['options']['maxItems'];_0x449f4e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x449f4e),this['open']();}else this['allItems']=_0x192faf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2bd452);}catch(_0x5c601e){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x5c601e),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x5283c4){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x5283c4):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0xb3dee3=this['filteredItems']['length']>=this['options']['maxItems'];_0xb3dee3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xb3dee3),this['open']();}['renderItems'](_0x24e15c){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']((_0x509372,_0x18fd67)=>{const _0x3903b2=document['createElement']('div');_0x3903b2['className']='autocomplete-select-item',_0x3903b2['setAttribute']('role','option'),_0x3903b2['setAttribute']('data-index',_0x18fd67);const _0x464e8b=this['options']['renderItem'](_0x509372);let _0x208bd6='';_0x464e8b['icon']&&(_0x208bd6='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x464e8b['iconClass']||'')+'\x22>'+_0x464e8b['icon']+'</span>'),_0x3903b2['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x208bd6+'\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'](_0x464e8b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x464e8b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x464e8b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3903b2['addEventListener']('click',()=>{this['selectItem'](_0x509372);}),_0x3903b2['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x18fd67,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3903b2);}),_0x24e15c?(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'](_0x1d3e8e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1d3e8e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0xda1433){this['selectedItem']=_0xda1433;const _0x3d044a=this['options']['renderItem'](_0xda1433);this['input']['value']=_0x3d044a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0xda1433);}['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'](_0x203c10){if(_0x203c10){this['selectedItem']=_0x203c10;const _0x1bc184=this['options']['renderItem'](_0x203c10);this['input']['value']=_0x1bc184['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1ee9cf){this['allItems']=_0x1ee9cf,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'](_0x55da25){this['input']['placeholder']=_0x55da25;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x15ad7c=null){const _0x396990=document['getElementById']('admin-menu-container'),_0x51ef87=document['getElementById']('admin-menu-btn'),_0x2eaefa=document['getElementById']('admin-menu');if(!_0x396990||!_0x51ef87||!_0x2eaefa)return;try{!_0x15ad7c&&(_0x15ad7c=await API['getCurrentUser']());if(_0x15ad7c){const _0x5b8273=window['Permissions'],_0x31d865=_0x5b8273['hasServerPermission'](_0x15ad7c,'*')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:manage')||_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')||_0x5b8273['hasTeamPermission'](_0x15ad7c,'teams:manage')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:view_details');if(!_0x31d865)return;_0x396990['hidden']=![];if(!_0x5b8273['hasServerPermission'](_0x15ad7c,'*')){const _0x1891fc=_0x2eaefa['querySelectorAll']('.admin-menu-item');_0x1891fc['forEach'](_0x20a2bb=>{const _0xf6c8fc=_0x20a2bb['querySelector']('.option-text')?.['textContent']?.['trim']();_0xf6c8fc==='Users'&&!_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Skills'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Settings'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Health'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Git\x20History'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Roles'&&(_0x20a2bb['hidden']=!![]);});}_0x51ef87['addEventListener']('click',_0x4ae0fe=>{_0x4ae0fe['stopPropagation']();const _0x55a903=document['getElementById']('actions-menu');if(_0x55a903)_0x55a903['hidden']=!![];_0x2eaefa['hidden']=!_0x2eaefa['hidden'];}),document['addEventListener']('click',_0x40e09b=>{!_0x2eaefa['hidden']&&!_0x51ef87['contains'](_0x40e09b['target'])&&!_0x2eaefa['contains'](_0x40e09b['target'])&&(_0x2eaefa['hidden']=!![]);}),document['addEventListener']('keydown',_0x19dd24=>{_0x19dd24['key']==='Escape'&&!_0x2eaefa['hidden']&&(_0x2eaefa['hidden']=!![]);});const _0x4d6b9f=document['getElementById']('server-health-btn');_0x4d6b9f&&_0x4d6b9f['addEventListener']('click',async()=>{_0x2eaefa['hidden']=!![];const {openServerHealthModal:_0x3ec906}=await import('./server-health.js');_0x3ec906();});}}catch(_0x5cf1b0){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5cf1b0['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 _0x4bb51f=window['location']['pathname'],_0x5725f0=_0x4bb51f['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5725f0)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5725f0[0x1]),_0x5725f0[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x587be8={}){const _0x3321c3=new URLSearchParams();_0x587be8['userId']&&_0x3321c3['set']('userId',String(_0x587be8['userId']));_0x587be8['automation']&&_0x3321c3['set']('automation',String(_0x587be8['automation']));const _0x4fa211=API_BASE+'/tasks/stats'+(_0x3321c3['toString']()?'?'+_0x3321c3['toString']():''),_0x5c9f5e=await fetch(_0x4fa211);if(!_0x5c9f5e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x5c9f5e['statusText']);return await _0x5c9f5e['json']();},async 'getTasks'(_0x57585e={}){const _0x360ba4=new URLSearchParams();_0x57585e['status']&&_0x360ba4['set']('status',String(_0x57585e['status']));_0x57585e['environment']&&_0x360ba4['set']('environment',String(_0x57585e['environment']));_0x57585e['automation']&&_0x360ba4['set']('automation',String(_0x57585e['automation']));if(_0x57585e['include']){const _0x477f6f=Array['isArray'](_0x57585e['include'])?_0x57585e['include']['join'](','):String(_0x57585e['include']);_0x477f6f&&_0x360ba4['set']('include',_0x477f6f);}_0x57585e['filter']&&_0x360ba4['set']('filter',String(_0x57585e['filter']));_0x57585e['page']&&_0x360ba4['set']('page',String(_0x57585e['page']));_0x57585e['limit']&&_0x360ba4['set']('limit',String(_0x57585e['limit']));_0x57585e['userId']&&_0x360ba4['set']('userId',String(_0x57585e['userId']));_0x57585e['search']&&_0x360ba4['set']('search',String(_0x57585e['search']));_0x57585e['includeChildTasks']&&_0x360ba4['set']('includeChildTasks','true');const _0x1aa742=API_BASE+'/tasks'+(_0x360ba4['toString']()?'?'+_0x360ba4['toString']():''),_0x3f1dc1=await fetch(_0x1aa742);if(!_0x3f1dc1['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3f1dc1['statusText']);return await _0x3f1dc1['json']();},async 'getAutomations'(_0x5d4dba={}){const _0x23d13f=new URLSearchParams();_0x5d4dba['environment']&&_0x23d13f['set']('environment',String(_0x5d4dba['environment']));const _0xec53f7=await fetch(API_BASE+'/api/automations'+(_0x23d13f['toString']()?'?'+_0x23d13f['toString']():''));if(!_0xec53f7['ok']){const _0x52d526=await _0xec53f7['json']()['catch'](()=>({}));throw new Error(_0x52d526['message']||_0x52d526['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xec53f7['statusText']);}return await _0xec53f7['json']();},async 'getAutomation'(_0x30e532){const _0x52ae95=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x30e532));if(!_0x52ae95['ok']){const _0x597517=await _0x52ae95['json']()['catch'](()=>({}));throw new Error(_0x597517['message']||_0x597517['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x52ae95['statusText']);}return await _0x52ae95['json']();},async 'createAutomation'(_0xc7e1ee){const _0x3fa918=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7e1ee||{})});if(!_0x3fa918['ok']){const _0x56bfaa=await _0x3fa918['json']()['catch'](()=>({}));throw new Error(_0x56bfaa['message']||_0x56bfaa['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3fa918['statusText']);}return await _0x3fa918['json']();},async 'updateAutomation'(_0x62893d,_0xa0c542){const _0x4bf762=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x62893d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa0c542||{})});if(!_0x4bf762['ok']){const _0x1658df=await _0x4bf762['json']()['catch'](()=>({}));throw new Error(_0x1658df['message']||_0x1658df['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4bf762['statusText']);}return await _0x4bf762['json']();},async 'deleteAutomation'(_0x2793a5){const _0x184c01=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2793a5),{'method':'DELETE'});if(!_0x184c01['ok']){const _0x574d3d=await _0x184c01['json']()['catch'](()=>({}));throw new Error(_0x574d3d['message']||_0x574d3d['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x184c01['statusText']);}return await _0x184c01['json']();},async 'triggerAutomation'(_0x548456){const _0x3089d2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x548456)+'/trigger',{'method':'POST'});if(!_0x3089d2['ok']){const _0x1eb995=await _0x3089d2['json']()['catch'](()=>({}));throw new Error(_0x1eb995['message']||_0x1eb995['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3089d2['statusText']);}return await _0x3089d2['json']();},async 'setAutomationEnabled'(_0x34d52c,_0x29ac4e){const _0x1669e5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x34d52c)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x29ac4e})});if(!_0x1669e5['ok']){const _0x283bc3=await _0x1669e5['json']()['catch'](()=>({}));throw new Error(_0x283bc3['message']||_0x283bc3['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1669e5['statusText']);}return await _0x1669e5['json']();},async 'getAutomationHistory'(_0x3cacbc,_0x1faec8=0x32){const _0x59cd57=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3cacbc)+'/history?limit='+encodeURIComponent(String(_0x1faec8)));if(!_0x59cd57['ok']){const _0x246c49=await _0x59cd57['json']()['catch'](()=>({}));throw new Error(_0x246c49['message']||_0x246c49['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x59cd57['statusText']);}return await _0x59cd57['json']();},async 'getTask'(_0x45c931,_0x4ad45e={}){const _0x1f6497=new URLSearchParams();if(_0x4ad45e['include']){const _0x47ff96=Array['isArray'](_0x4ad45e['include'])?_0x4ad45e['include']['join'](','):String(_0x4ad45e['include']);if(_0x47ff96)_0x1f6497['set']('include',_0x47ff96);}const _0x55b51d=await fetch(API_BASE+'/tasks/'+_0x45c931+(_0x1f6497['toString']()?'?'+_0x1f6497['toString']():''));if(!_0x55b51d['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x55b51d['statusText']);return await _0x55b51d['json']();},async 'getTaskResults'(_0x1eb142){const _0xb1be5f=await fetch(API_BASE+'/tasks/'+_0x1eb142+'/results');if(!_0xb1be5f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xb1be5f['statusText']);return await _0xb1be5f['json']();},async 'getTaskPatches'(_0x555343){const _0x5b0e1d=await fetch(API_BASE+'/tasks/'+_0x555343+'/patches');if(!_0x5b0e1d['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5b0e1d['statusText']);return await _0x5b0e1d['json']();},async 'getTaskAttachments'(_0x4f5531){const _0x653340=await fetch(API_BASE+'/tasks/'+_0x4f5531+'/attachments');if(!_0x653340['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x653340['statusText']);return await _0x653340['json']();},async 'uploadAttachments'(_0x195bb2,_0x3fb384){const _0x28c8e7=new FormData();for(const _0x4bad4e of _0x3fb384){_0x28c8e7['append']('attachments',_0x4bad4e);}const _0xcb33b1=await fetch(API_BASE+'/tasks/'+_0x195bb2+'/attachments',{'method':'POST','body':_0x28c8e7});if(!_0xcb33b1['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0xcb33b1['statusText']);return await _0xcb33b1['json']();},async 'isAINameGenerationAvailable'(){try{const _0x4f2db8=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x4f2db8['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x4f2db8['json']();}catch(_0x37f7a0){return{'available':![],'reason':_0x37f7a0['message']};}},async 'generateTaskName'(_0x499395){try{const _0x3ddd94=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x499395})});return await _0x3ddd94['json']();}catch(_0x49860b){return{'success':![],'error':_0x49860b['message']};}},async 'createTask'(_0x4be9b7){let _0x5472ed,_0x26305c={};if(_0x4be9b7['files']&&_0x4be9b7['files']['length']>0x0){const _0x3a13cf=new FormData();for(const [_0x152dd0,_0x495694]of Object['entries'](_0x4be9b7)){if(_0x152dd0!=='files'){if(_0x495694==null)continue;typeof _0x495694==='object'?_0x3a13cf['append'](_0x152dd0,JSON['stringify'](_0x495694)):_0x3a13cf['append'](_0x152dd0,String(_0x495694));}}for(const _0x2788d4 of _0x4be9b7['files']){_0x3a13cf['append']('attachments',_0x2788d4);}_0x5472ed=_0x3a13cf;}else _0x26305c['Content-Type']='application/json',_0x5472ed=JSON['stringify'](_0x4be9b7);const _0x5dc0d2=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x26305c,'body':_0x5472ed});if(!_0x5dc0d2['ok']){const _0x3fe7e9=await _0x5dc0d2['json'](),_0x3d8286=new Error(_0x3fe7e9['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5dc0d2['statusText']),{message:_0x51c36b,..._0x28be92}=_0x3fe7e9;Object['assign'](_0x3d8286,_0x28be92);throw _0x3d8286;}return await _0x5dc0d2['json']();},async 'createTestTask'(_0x54ed8a){const _0x3e1e5f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54ed8a)});if(!_0x3e1e5f['ok']){const _0x2fafcc=await _0x3e1e5f['json']();throw new Error(_0x2fafcc['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3e1e5f['statusText']);}return await _0x3e1e5f['json']();},async 'createEphemeralTest'(_0x229e33){const _0x377b03=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x229e33)});if(!_0x377b03['ok']){const _0x2c6daa=await _0x377b03['json']();throw new Error(_0x2c6daa['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x377b03['statusText']);}return await _0x377b03['json']();},async 'createDeployTask'(_0x30b957){const _0x22b95d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30b957)});if(!_0x22b95d['ok']){const _0x6d0ef1=await _0x22b95d['json']();throw new Error(_0x6d0ef1['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x22b95d['statusText']);}return await _0x22b95d['json']();},async 'getEnvironments'(){const _0x3e7f39=await fetch(API_BASE+'/environments');if(!_0x3e7f39['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3e7f39['statusText']);return await _0x3e7f39['json']();},async 'getEnvironment'(_0x2ff284){const _0x5de99d=await fetch(API_BASE+'/environments/'+_0x2ff284);if(!_0x5de99d['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5de99d['statusText']);return await _0x5de99d['json']();},async 'getEnvironmentRepoHistory'(_0x38d9b4,_0x4fa2fc,_0x49394a={}){if(!_0x38d9b4||!_0x4fa2fc)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2b2939=new URLSearchParams();if(_0x49394a['limit'])_0x2b2939['set']('limit',String(_0x49394a['limit']));if(_0x49394a['offset'])_0x2b2939['set']('offset',String(_0x49394a['offset']));if(_0x49394a['search'])_0x2b2939['set']('search',String(_0x49394a['search']));if(_0x49394a['branch'])_0x2b2939['set']('branch',String(_0x49394a['branch']));const _0x51a9e0=API_BASE+'/environments/'+encodeURIComponent(_0x38d9b4)+'/repos/'+encodeURIComponent(_0x4fa2fc)+'/git/history',_0x3a2fae=await fetch(''+_0x51a9e0+(_0x2b2939['toString']()?'?'+_0x2b2939['toString']():''));if(!_0x3a2fae['ok']){const _0x4b80b7=await _0x3a2fae['json']()['catch'](()=>({}));throw new Error(_0x4b80b7['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3a2fae['statusText']);}return await _0x3a2fae['json']();},async 'getEnvironmentRepoCommit'(_0x408067,_0x38cc1d,_0x41d161){if(!_0x408067||!_0x38cc1d||!_0x41d161)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x21a37d=API_BASE+'/environments/'+encodeURIComponent(_0x408067)+'/repos/'+encodeURIComponent(_0x38cc1d)+'/git/commits/'+encodeURIComponent(_0x41d161),_0x36d3ed=await fetch(_0x21a37d);if(!_0x36d3ed['ok']){const _0x19d6f4=await _0x36d3ed['json']()['catch'](()=>({}));throw new Error(_0x19d6f4['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x36d3ed['statusText']);}return await _0x36d3ed['json']();},async 'getEnvironmentRepoBranches'(_0x291ef7,_0x58c43f){if(!_0x291ef7||!_0x58c43f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5de367=API_BASE+'/environments/'+encodeURIComponent(_0x291ef7)+'/repos/'+encodeURIComponent(_0x58c43f)+'/git/branches',_0x3fa850=await fetch(_0x5de367);if(!_0x3fa850['ok']){const _0x88abb3=await _0x3fa850['json']()['catch'](()=>({}));throw new Error(_0x88abb3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3fa850['statusText']);}return await _0x3fa850['json']();},async 'revertEnvironmentRepoCommit'(_0x4ddb63,_0x46fb7e,_0x36e7ae,_0x4fe631={}){if(!_0x4ddb63||!_0x46fb7e||!_0x36e7ae)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x87cbda=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4ddb63)+'/repos/'+encodeURIComponent(_0x46fb7e)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x36e7ae,..._0x4fe631})});if(!_0x87cbda['ok']){const _0x5b6851=await _0x87cbda['json']()['catch'](()=>({}));throw new Error(_0x5b6851['message']||_0x5b6851['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x87cbda['statusText']);}return await _0x87cbda['json']();},async 'getTemplates'(_0x1a2f67={}){const _0x287223=new URLSearchParams();if(_0x1a2f67['include']){const _0x39969c=Array['isArray'](_0x1a2f67['include'])?_0x1a2f67['include']['join'](','):String(_0x1a2f67['include']);if(_0x39969c)_0x287223['set']('include',_0x39969c);}const _0x208696=await fetch(API_BASE+'/templates'+(_0x287223['toString']()?'?'+_0x287223['toString']():''));if(!_0x208696['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x208696['statusText']);return await _0x208696['json']();},async 'getTemplatesForEnvironment'(_0x3f6f80,_0x2f121d={}){if(!_0x3f6f80)throw new Error('Environment\x20name\x20is\x20required');const _0x1e56f2=new URLSearchParams();if(_0x2f121d['include']){const _0x3277f4=Array['isArray'](_0x2f121d['include'])?_0x2f121d['include']['join'](','):String(_0x2f121d['include']);if(_0x3277f4)_0x1e56f2['set']('include',_0x3277f4);}const _0x39c561=await fetch(API_BASE+'/templates/'+_0x3f6f80+(_0x1e56f2['toString']()?'?'+_0x1e56f2['toString']():''));if(!_0x39c561['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3f6f80+':\x20'+_0x39c561['statusText']);return await _0x39c561['json']();},async 'getTemplate'(_0x1f5700,_0x18f5ce,_0x5bd9da={}){if(!_0x1f5700||!_0x18f5ce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x38df9e=new URLSearchParams();if(_0x5bd9da['include']){const _0x5c32c3=Array['isArray'](_0x5bd9da['include'])?_0x5bd9da['include']['join'](','):String(_0x5bd9da['include']);if(_0x5c32c3)_0x38df9e['set']('include',_0x5c32c3);}const _0x4ad1bd=await fetch(API_BASE+'/templates/'+_0x1f5700+'/'+_0x18f5ce+(_0x38df9e['toString']()?'?'+_0x38df9e['toString']():''));if(!_0x4ad1bd['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4ad1bd['statusText']);return await _0x4ad1bd['json']();},async 'getTaskLogs'(_0xef9467,_0x4da596={}){if(!_0xef9467)throw new Error('Task\x20ID\x20is\x20required');const _0x2602e2=new URLSearchParams();_0x4da596['tail']&&_0x2602e2['set']('tail',String(_0x4da596['tail']));const _0x506214=await fetch(API_BASE+'/tasks/'+_0xef9467+'/logs'+(_0x2602e2['toString']()?'?'+_0x2602e2['toString']():''));if(!_0x506214['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x506214['statusText']);return await _0x506214['text']();},async 'getContainers'(){const _0x26157b=await fetch(API_BASE+'/containers');if(!_0x26157b['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x26157b['statusText']);return await _0x26157b['json']();},async 'getContainer'(_0x22bcea){const _0x5ee83c=await fetch(API_BASE+'/containers/'+_0x22bcea);if(!_0x5ee83c['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ee83c['statusText']);return await _0x5ee83c['json']();},async 'startInteractiveContainer'(_0x336fe6){const _0x4e38b0=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336fe6)});if(!_0x4e38b0['ok']){const _0x2cc3ed=await _0x4e38b0['json']()['catch'](()=>({}));throw new Error(_0x2cc3ed['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4e38b0['statusText']);}return await _0x4e38b0['json']();},async 'startContainerCodeServer'(_0x2a52fc,_0x5459bb={}){if(!_0x2a52fc)throw new Error('Container\x20ID\x20is\x20required');const _0x144e36=new URLSearchParams();_0x5459bb['theme']&&_0x144e36['set']('theme',_0x5459bb['theme']);const _0x5e7907=await fetch(API_BASE+'/containers/'+_0x2a52fc+'/code-server'+(_0x144e36['toString']()?'?'+_0x144e36['toString']():'')),_0x58a17=await _0x5e7907['json']()['catch'](()=>({}));if(!_0x5e7907['ok'])throw new Error(_0x58a17['message']||_0x58a17['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x5e7907['statusText']);return _0x58a17;},async 'stopContainer'(_0x3ebb27){const _0x368003=await fetch(API_BASE+'/containers/'+_0x3ebb27,{'method':'DELETE'});if(!_0x368003['ok']){const _0x278ee0=await _0x368003['json']()['catch'](()=>({}));throw new Error(_0x278ee0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x368003['statusText']);}return await _0x368003['json']();},async 'stopTask'(_0x9789e9){if(!_0x9789e9)throw new Error('Task\x20ID\x20is\x20required');const _0x2b84dd=await fetch(API_BASE+'/tasks/'+_0x9789e9+'/stop',{'method':'POST'});if(!_0x2b84dd['ok']){const _0x4bacc7=await _0x2b84dd['json']()['catch'](()=>({}));throw new Error(_0x4bacc7['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2b84dd['statusText']);}return await _0x2b84dd['json']();},async 'interruptTask'(_0x3d6d66){if(!_0x3d6d66)throw new Error('Task\x20ID\x20is\x20required');const _0x473cc3=await fetch(API_BASE+'/tasks/'+_0x3d6d66+'/interrupt',{'method':'POST'});if(!_0x473cc3['ok']){const _0x4db43c=await _0x473cc3['json']()['catch'](()=>({}));throw new Error(_0x4db43c['error']||_0x4db43c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x473cc3['statusText']);}return await _0x473cc3['json']();},async 'startTask'(_0x426132){if(!_0x426132)throw new Error('Task\x20ID\x20is\x20required');const _0x56b48a=await fetch(API_BASE+'/tasks/'+_0x426132+'/start',{'method':'POST'});if(!_0x56b48a['ok']){const _0x3e122d=await _0x56b48a['json']()['catch'](()=>({}));throw new Error(_0x3e122d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x56b48a['statusText']);}return await _0x56b48a['json']();},async 'deleteTask'(_0x4688cf){if(!_0x4688cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4a3395=await fetch(API_BASE+'/tasks/'+_0x4688cf,{'method':'DELETE'});if(!_0x4a3395['ok']){const _0x32ca61=await _0x4a3395['json']()['catch'](()=>({}));throw new Error(_0x32ca61['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4a3395['statusText']);}return await _0x4a3395['json']();},async 'refreshTasksFromDisk'(){const _0x2c0c0f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2c0c0f['ok']){const _0x48cf47=await _0x2c0c0f['json']()['catch'](()=>({}));throw new Error(_0x48cf47['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2c0c0f['statusText']);}return await _0x2c0c0f['json']();},async 'approveTask'(_0x703018,_0x5c3d54={}){if(!_0x703018)throw new Error('Task\x20ID\x20is\x20required');const _0x1b8eae={'commit_message':_0x5c3d54['commit_message']||'','pull':_0x5c3d54['pull']??![],'push':_0x5c3d54['push']??![]};_0x5c3d54['new_branch']&&(_0x1b8eae['new_branch']=_0x5c3d54['new_branch']);const _0xa27914=await fetch(API_BASE+'/tasks/'+_0x703018+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b8eae)});if(!_0xa27914['ok']){const _0x2cb030=await _0xa27914['json']()['catch'](()=>({}));let _0x4b56e0=_0x2cb030['error']||_0x2cb030['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xa27914['statusText'];if(_0x2cb030['results']&&Array['isArray'](_0x2cb030['results'])){const _0x245201=_0x2cb030['results']['filter'](_0x928bb=>!_0x928bb['success']&&_0x928bb['error']);_0x245201['length']>0x0&&(_0x4b56e0=_0x245201[0x0]['error']);}throw new Error(_0x4b56e0);}return await _0xa27914['json']();},async 'getPullRequestInfo'(_0x243afc){if(!_0x243afc)throw new Error('Task\x20ID\x20is\x20required');const _0x5de768=await fetch(API_BASE+'/tasks/'+_0x243afc+'/pull-request-info');if(!_0x5de768['ok']){const _0xa350c9=await _0x5de768['json']()['catch'](()=>({}));throw new Error(_0xa350c9['error']||_0xa350c9['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x5de768['statusText']);}return await _0x5de768['json']();},async 'createPullRequests'(_0x507eed,_0x2c9ac5){if(!_0x507eed)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c9ac5||!Array['isArray'](_0x2c9ac5))throw new Error('repos\x20array\x20is\x20required');const _0x265b0b=await fetch(API_BASE+'/tasks/'+_0x507eed+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2c9ac5})});if(!_0x265b0b['ok']){const _0x2f57b=await _0x265b0b['json']()['catch'](()=>({}));let _0x2a0313=_0x2f57b['error']||_0x2f57b['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x265b0b['statusText'];if(_0x2f57b['results']&&Array['isArray'](_0x2f57b['results'])){const _0x5e7840=_0x2f57b['results']['filter'](_0x70ab46=>!_0x70ab46['success']&&_0x70ab46['error']);_0x5e7840['length']>0x0&&(_0x2a0313=_0x5e7840[0x0]['error']);}throw new Error(_0x2a0313);}return await _0x265b0b['json']();},async 'syncRepos'(_0x8a01b4){if(!_0x8a01b4)throw new Error('Task\x20ID\x20is\x20required');const _0x9fa078=await fetch(API_BASE+'/tasks/'+_0x8a01b4+'/sync-repos',{'method':'POST'});if(!_0x9fa078['ok']){const _0x2b84b9=await _0x9fa078['json']()['catch'](()=>({}));throw new Error(_0x2b84b9['error']||_0x2b84b9['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x9fa078['statusText']);}return await _0x9fa078['json']();},async 'getIbmiSyncInfo'(_0x48fe9e){if(!_0x48fe9e)throw new Error('Task\x20ID\x20is\x20required');const _0x459b02=await fetch(API_BASE+'/tasks/'+_0x48fe9e+'/ibmi-sync-info');if(!_0x459b02['ok']){const _0x5a5e70=await _0x459b02['json']()['catch'](()=>({}));throw new Error(_0x5a5e70['error']||_0x5a5e70['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x459b02['json']();},async 'getSyncFiles'(_0x3a40f2){if(!_0x3a40f2)throw new Error('Task\x20ID\x20is\x20required');const _0xaf47d4=await fetch(API_BASE+'/tasks/'+_0x3a40f2+'/sync-to-ibmi/files');if(!_0xaf47d4['ok']){const _0x2afe2e=await _0xaf47d4['json']()['catch'](()=>({}));throw new Error(_0x2afe2e['error']||_0x2afe2e['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0xaf47d4['json']();},async 'syncToIbmi'(_0x16ab48,_0x1d4bab,_0x38f44e=null,_0x26725b=null,_0x15feb3=null){if(!_0x16ab48)throw new Error('Task\x20ID\x20is\x20required');const _0x1887f4={'library':_0x1d4bab};if(_0x38f44e)_0x1887f4['user']=_0x38f44e;if(_0x26725b)_0x1887f4['password']=_0x26725b;if(_0x15feb3)_0x1887f4['files']=_0x15feb3;const _0x3db2a2=await fetch(API_BASE+'/tasks/'+_0x16ab48+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1887f4)});if(!_0x3db2a2['ok']){const _0x3d02c8=await _0x3db2a2['json']()['catch'](()=>({}));throw new Error(_0x3d02c8['error']||_0x3d02c8['message']||'Sync\x20failed');}return await _0x3db2a2['json']();},async 'getIbmiSyncLog'(_0x37c01a){if(!_0x37c01a)throw new Error('Task\x20ID\x20is\x20required');const _0x2966e0=await fetch(API_BASE+'/tasks/'+_0x37c01a+'/ibmi-sync-log');if(!_0x2966e0['ok']){const _0x400168=await _0x2966e0['json']()['catch'](()=>({}));throw new Error(_0x400168['error']||_0x400168['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2966e0['json']();},async 'pullChanges'(_0x36329f){if(!_0x36329f)throw new Error('Task\x20ID\x20is\x20required');const _0x2fc9d6=await fetch(API_BASE+'/tasks/'+_0x36329f+'/pull-changes',{'method':'POST'});if(!_0x2fc9d6['ok']){const _0x2ccd06=await _0x2fc9d6['json']()['catch'](()=>({}));throw new Error(_0x2ccd06['error']||_0x2ccd06['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2fc9d6['statusText']);}return await _0x2fc9d6['json']();},async 'readFile'(_0x332e6d,_0x19c1f4){if(!_0x332e6d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x19c1f4)throw new Error('File\x20path\x20is\x20required');const _0x225fa6=await fetch(API_BASE+'/tasks/'+_0x332e6d+'/files?path='+encodeURIComponent(_0x19c1f4));if(!_0x225fa6['ok']){const _0x4ab434=await _0x225fa6['json']()['catch'](()=>({}));throw new Error(_0x4ab434['error']||_0x4ab434['message']||'Failed\x20to\x20read\x20file:\x20'+_0x225fa6['statusText']);}return await _0x225fa6['json']();},'getTaskFileDownloadUrl'(_0x56c30f,_0x24e84f){if(!_0x56c30f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24e84f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x56c30f+'/files/download?path='+encodeURIComponent(_0x24e84f);},async 'writeFile'(_0x5472d7,_0x49ad7b,_0x458c80){if(!_0x5472d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49ad7b)throw new Error('File\x20path\x20is\x20required');if(_0x458c80===undefined)throw new Error('Content\x20is\x20required');const _0x3f2718=await fetch(API_BASE+'/tasks/'+_0x5472d7+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49ad7b,'content':_0x458c80})});if(!_0x3f2718['ok']){const _0x18be80=await _0x3f2718['json']()['catch'](()=>({}));throw new Error(_0x18be80['error']||_0x18be80['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3f2718['statusText']);}return await _0x3f2718['json']();},async 'uploadTaskFiles'(_0x4c926d,_0x1e3d1c,_0x558c4e){if(!_0x4c926d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e3d1c)throw new Error('Target\x20directory\x20is\x20required');if(!_0x558c4e||_0x558c4e['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x31f22c=new FormData();_0x31f22c['append']('targetDir',_0x1e3d1c);for(const _0x27334e of _0x558c4e){_0x31f22c['append']('files',_0x27334e,_0x27334e['name']);}const _0x23c431=await fetch(API_BASE+'/tasks/'+_0x4c926d+'/files/upload',{'method':'POST','body':_0x31f22c});if(!_0x23c431['ok']){const _0x4b3bed=await _0x23c431['json']()['catch'](()=>({}));throw new Error(_0x4b3bed['error']||_0x4b3bed['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x23c431['statusText']);}return await _0x23c431['json']();},async 'createDirectory'(_0x31462c,_0x48b721){if(!_0x31462c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48b721)throw new Error('Directory\x20path\x20is\x20required');const _0x38fb4f=await fetch(API_BASE+'/tasks/'+_0x31462c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x48b721})});if(!_0x38fb4f['ok']){const _0x126f81=await _0x38fb4f['json']()['catch'](()=>({}));throw new Error(_0x126f81['error']||_0x126f81['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x38fb4f['statusText']);}return await _0x38fb4f['json']();},async 'renamePath'(_0xcc5a35,_0x3d9b96,_0x3223be){if(!_0xcc5a35)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d9b96)throw new Error('Source\x20path\x20is\x20required');if(!_0x3223be)throw new Error('Destination\x20path\x20is\x20required');const _0x253046=await fetch(API_BASE+'/tasks/'+_0xcc5a35+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x3d9b96,'newPath':_0x3223be})});if(!_0x253046['ok']){const _0x1febe1=await _0x253046['json']()['catch'](()=>({}));throw new Error(_0x1febe1['error']||_0x1febe1['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x253046['statusText']);}return await _0x253046['json']();},async 'deleteFile'(_0x474a1f,_0x1a1c02){if(!_0x474a1f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1c02)throw new Error('File\x20path\x20is\x20required');const _0x1413e0=await fetch(API_BASE+'/tasks/'+_0x474a1f+'/files?path='+encodeURIComponent(_0x1a1c02),{'method':'DELETE'});if(!_0x1413e0['ok']){const _0xadec7c=await _0x1413e0['json']()['catch'](()=>({}));throw new Error(_0xadec7c['error']||_0xadec7c['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1413e0['statusText']);}return await _0x1413e0['json']();},async 'deleteDirectory'(_0x5acf32,_0x59b802){if(!_0x5acf32)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59b802)throw new Error('Directory\x20path\x20is\x20required');const _0x5d3596=await fetch(API_BASE+'/tasks/'+_0x5acf32+'/files/directory?path='+encodeURIComponent(_0x59b802),{'method':'DELETE'});if(!_0x5d3596['ok']){const _0x1c8c68=await _0x5d3596['json']()['catch'](()=>({}));throw new Error(_0x1c8c68['error']||_0x1c8c68['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5d3596['statusText']);}return await _0x5d3596['json']();},async 'discardFile'(_0x1e0230,_0x28fd47,_0x232ea1){if(!_0x1e0230)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28fd47)throw new Error('File\x20path\x20is\x20required');if(!_0x232ea1)throw new Error('Repository\x20path\x20is\x20required');const _0xc93d16=await fetch(API_BASE+'/tasks/'+_0x1e0230+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x28fd47,'repoPath':_0x232ea1})});if(!_0xc93d16['ok']){const _0x3f51ea=await _0xc93d16['json']()['catch'](()=>({}));throw new Error(_0x3f51ea['error']||_0x3f51ea['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xc93d16['statusText']);}return await _0xc93d16['json']();},async 'followUpTask'(_0x1fe836,_0x5b3b53={}){if(!_0x1fe836)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b3b53['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x5a92fb,_0x28e393={};if(_0x5b3b53['files']&&_0x5b3b53['files']['length']>0x0){const _0x12228e=new FormData();_0x12228e['append']('instructions',_0x5b3b53['instructions']);for(const _0x40a0e6 of _0x5b3b53['files']){_0x12228e['append']('attachments',_0x40a0e6);}_0x5a92fb=_0x12228e;}else _0x28e393['Content-Type']='application/json',_0x5a92fb=JSON['stringify']({'instructions':_0x5b3b53['instructions']});const _0x1f1a0b=await fetch(API_BASE+'/tasks/'+_0x1fe836+'/follow-up',{'method':'POST','headers':_0x28e393,'body':_0x5a92fb});if(!_0x1f1a0b['ok']){const _0x425211=await _0x1f1a0b['json']()['catch'](()=>({}));throw new Error(_0x425211['error']||_0x425211['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1f1a0b['statusText']);}return await _0x1f1a0b['json']();},async 'getTaskRewindPoints'(_0x3a9f8a){if(!_0x3a9f8a)throw new Error('Task\x20ID\x20is\x20required');const _0x2eec13=await fetch(API_BASE+'/tasks/'+_0x3a9f8a+'/rewind-points');if(!_0x2eec13['ok']){const _0x3fc4b5=await _0x2eec13['json']()['catch'](()=>({}));throw new Error(_0x3fc4b5['error']||_0x3fc4b5['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2eec13['statusText']);}return await _0x2eec13['json']();},async 'rewindTask'(_0x2a90f0,_0x5a8591={}){if(!_0x2a90f0)throw new Error('Task\x20ID\x20is\x20required');const _0x2fffb5=Number['isInteger'](_0x5a8591['targetFollowUpCount'])?_0x5a8591['targetFollowUpCount']:0x0,_0x1eba7c={'targetFollowUpCount':_0x2fffb5};typeof _0x5a8591['instructions']==='string'&&_0x5a8591['instructions']['trim']()&&(_0x1eba7c['instructions']=_0x5a8591['instructions']['trim']());typeof _0x5a8591['rewindFiles']==='boolean'&&(_0x1eba7c['rewindFiles']=_0x5a8591['rewindFiles']);const _0x3e53f6=await fetch(API_BASE+'/tasks/'+_0x2a90f0+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1eba7c)});if(!_0x3e53f6['ok']){const _0xad14c6=await _0x3e53f6['json']()['catch'](()=>({}));throw new Error(_0xad14c6['error']||_0xad14c6['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3e53f6['statusText']);}return await _0x3e53f6['json']();},async 'login'(_0x54dbcb,_0x118d6f){const _0xaeb793=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x54dbcb,'password':_0x118d6f})});if(!_0xaeb793['ok']){const _0x2056b3=await _0xaeb793['json']();throw new Error(_0x2056b3['message']||'Login\x20failed');}return await _0xaeb793['json']();},async 'logout'(){const _0x4ccb68=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4ccb68['ok']){const _0x3ab912=await _0x4ccb68['json']();throw new Error(_0x3ab912['message']||'Logout\x20failed');}return await _0x4ccb68['json']();},async 'getCurrentUser'(){const _0x143fb3=await fetch(API_BASE+'/auth/me');if(!_0x143fb3['ok'])throw new Error('Not\x20authenticated');const _0x774d50=await _0x143fb3['json']();return _0x774d50['user'];},async 'getRolesInfo'(){const _0x526bfb=await fetch(API_BASE+'/users/roles');if(!_0x526bfb['ok']){const _0x5eba4e=await _0x526bfb['json']();throw new Error(_0x5eba4e['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x526bfb['json']();},async 'getUsers'(){const _0x32d630=await fetch(API_BASE+'/users');if(!_0x32d630['ok']){const _0x4646ea=await _0x32d630['json']();throw new Error(_0x4646ea['message']||'Failed\x20to\x20get\x20users');}return await _0x32d630['json']();},async 'getUser'(_0x5232dd){const _0x69587a=await fetch(API_BASE+'/users/'+_0x5232dd);if(!_0x69587a['ok']){const _0x3d9c1b=await _0x69587a['json']();throw new Error(_0x3d9c1b['message']||'Failed\x20to\x20get\x20user');}return await _0x69587a['json']();},async 'createUser'(_0x6b9641){const _0xae3063=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6b9641)});if(!_0xae3063['ok']){const _0x5df25a=await _0xae3063['json']();throw new Error(_0x5df25a['message']||'Failed\x20to\x20create\x20user');}return await _0xae3063['json']();},async 'updateUser'(_0x1d15ac,_0x469a9e){const _0xb6e1ee=await fetch(API_BASE+'/users/'+_0x1d15ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x469a9e)});if(!_0xb6e1ee['ok']){const _0x549bcd=await _0xb6e1ee['json']();throw new Error(_0x549bcd['message']||'Failed\x20to\x20update\x20user');}return await _0xb6e1ee['json']();},async 'deleteUser'(_0x5ebee4){const _0x4249a1=await fetch(API_BASE+'/users/'+_0x5ebee4,{'method':'DELETE'});if(!_0x4249a1['ok']){const _0x337f4c=await _0x4249a1['json']();throw new Error(_0x337f4c['message']||'Failed\x20to\x20delete\x20user');}return await _0x4249a1['json']();},async 'stopAllContainers'(){const _0x4bc0eb=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3219e2=await _0x4bc0eb['json']()['catch'](()=>({}));if(!_0x4bc0eb['ok'])throw new Error(_0x3219e2['message']||_0x3219e2['error']||'Failed\x20to\x20stop\x20containers');return _0x3219e2;},async 'removeStoppedContainers'(){const _0x54eb62=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x37b611=await _0x54eb62['json']()['catch'](()=>({}));if(!_0x54eb62['ok'])throw new Error(_0x37b611['message']||_0x37b611['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x37b611;},async 'pruneDockerResources'(){const _0x413ebe=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x25e975=await _0x413ebe['json']()['catch'](()=>({}));if(!_0x413ebe['ok'])throw new Error(_0x25e975['message']||_0x25e975['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x25e975;},async 'createPasswordToken'(_0x3437d5,_0x44c965='setup',_0x1afa9b=![]){const _0x31442c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3437d5,'type':_0x44c965,'sendEmail':_0x1afa9b})});if(!_0x31442c['ok']){const _0x4839e2=await _0x31442c['json']();throw new Error(_0x4839e2['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x31442c['json']();},async 'getEmailConfig'(){const _0x2bab08=await fetch(API_BASE+'/password/email-config');if(!_0x2bab08['ok']){const _0x5ae8e3=await _0x2bab08['json']();throw new Error(_0x5ae8e3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2bab08['json']();},async 'updateTaskName'(_0x9739cc,_0x1ad9d2){const _0x1aac7d=await fetch(API_BASE+'/tasks/'+_0x9739cc,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1ad9d2})});if(!_0x1aac7d['ok']){const _0xf7e9b0=await _0x1aac7d['json']();throw new Error(_0xf7e9b0['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1aac7d['json']();},async 'pinTask'(_0x5a9230,_0x27aba7,_0x23df79=null){if(!_0x5a9230)throw new Error('Task\x20ID\x20is\x20required');const _0x245ff0={'pinned':_0x27aba7};_0x23df79&&_0x23df79['length']>0x0&&(_0x245ff0['additionalTaskIds']=_0x23df79);const _0x3371e4=await fetch(API_BASE+'/tasks/'+_0x5a9230+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x245ff0)});if(!_0x3371e4['ok']){const _0x4b545c=await _0x3371e4['json']();throw new Error(_0x4b545c['error']||'Failed\x20to\x20pin\x20task');}return await _0x3371e4['json']();},async 'setTaskWinner'(_0xcbab0e,_0x149167,_0x3d78c7=[]){if(!_0xcbab0e)throw new Error('Task\x20ID\x20is\x20required');const _0x1ebf78=await fetch(API_BASE+'/tasks/'+_0xcbab0e+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x149167,'siblings':_0x3d78c7})});if(!_0x1ebf78['ok']){const _0x1857a2=await _0x1ebf78['json']();throw new Error(_0x1857a2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1ebf78['json']();},async 'setTaskLoser'(_0x3063a2,_0x4c4a9b){if(!_0x3063a2)throw new Error('Task\x20ID\x20is\x20required');const _0x21feb8=await fetch(API_BASE+'/tasks/'+_0x3063a2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4c4a9b})});if(!_0x21feb8['ok']){const _0x41be62=await _0x21feb8['json']();throw new Error(_0x41be62['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x21feb8['json']();},async 'createTaskGroup'(_0x61ecfd){const _0x1da6cd=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x61ecfd)});if(!_0x1da6cd['ok']){const _0x17fb7f=await _0x1da6cd['json']();throw new Error(_0x17fb7f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x1da6cd['json']();},async 'getTaskGroups'(_0x37cf50={}){const _0x44b1c0=new URLSearchParams();if(_0x37cf50['userId'])_0x44b1c0['set']('userId',String(_0x37cf50['userId']));if(_0x37cf50['status'])_0x44b1c0['set']('status',String(_0x37cf50['status']));if(_0x37cf50['limit'])_0x44b1c0['set']('limit',String(_0x37cf50['limit']));const _0x33b17b=API_BASE+'/tasks/groups'+(_0x44b1c0['toString']()?'?'+_0x44b1c0['toString']():''),_0x62922=await fetch(_0x33b17b);if(!_0x62922['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x62922['json']();},async 'getTaskGroup'(_0x278ec5){const _0x85e1a7=await fetch(API_BASE+'/tasks/groups/'+_0x278ec5);if(!_0x85e1a7['ok']){const _0xf9a8d=await _0x85e1a7['json']();throw new Error(_0xf9a8d['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x85e1a7['json']();},async 'updateTaskGroup'(_0x1a33ec,_0x5b26b3,_0x5b0546){const _0x289b49=await fetch(API_BASE+'/tasks/'+_0x1a33ec+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x5b26b3,'groupIndex':_0x5b0546})});if(!_0x289b49['ok']){const _0xccdd12=await _0x289b49['json']();throw new Error(_0xccdd12['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x289b49['json']();},async 'removeTaskFromGroup'(_0x397544){return this['updateTaskGroup'](_0x397544,null,null);},async 'deleteTaskGroup'(_0x4ea0c7,_0x3e7b73=![]){const _0x79a301=_0x3e7b73?'?deleteTasks=true':'',_0x4a9eef=await fetch(API_BASE+'/tasks/groups/'+_0x4ea0c7+_0x79a301,{'method':'DELETE'});if(!_0x4a9eef['ok']){const _0x4a6227=await _0x4a9eef['json']();throw new Error(_0x4a6227['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x1a5494,_0x29ff85){const _0x3785fc=await fetch(API_BASE+'/tasks/groups/'+_0x1a5494+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x29ff85})});if(!_0x3785fc['ok']){const _0x28d810=await _0x3785fc['json']();throw new Error(_0x28d810['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3785fc['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4d959b){if(!_0x4d959b)throw new Error('Task\x20ID\x20is\x20required');const _0x422cc0=await fetch(API_BASE+'/tasks/'+_0x4d959b+'/comments');if(!_0x422cc0['ok']){const _0x43151e=await _0x422cc0['json']()['catch'](()=>({}));throw new Error(_0x43151e['error']||'Failed\x20to\x20get\x20comments');}return await _0x422cc0['json']();},async 'addComment'(_0x437431,_0x2fa066){if(!_0x437431)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2fa066)throw new Error('Comment\x20content\x20is\x20required');const _0x436e94=await fetch(API_BASE+'/tasks/'+_0x437431+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2fa066})});if(!_0x436e94['ok']){const _0x2713fa=await _0x436e94['json']()['catch'](()=>({}));throw new Error(_0x2713fa['error']||'Failed\x20to\x20add\x20comment');}return await _0x436e94['json']();},async 'updateComment'(_0x1b11c6,_0x58e6dd,_0x4296e2){if(!_0x1b11c6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58e6dd)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4296e2)throw new Error('Comment\x20content\x20is\x20required');const _0x135c49=await fetch(API_BASE+'/tasks/'+_0x1b11c6+'/comments/'+_0x58e6dd,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4296e2})});if(!_0x135c49['ok']){const _0x111abd=await _0x135c49['json']()['catch'](()=>({}));throw new Error(_0x111abd['error']||'Failed\x20to\x20update\x20comment');}return await _0x135c49['json']();},async 'deleteComment'(_0x3fd657,_0x48144e){if(!_0x3fd657)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48144e)throw new Error('Comment\x20ID\x20is\x20required');const _0x35f82f=await fetch(API_BASE+'/tasks/'+_0x3fd657+'/comments/'+_0x48144e,{'method':'DELETE'});if(!_0x35f82f['ok']){const _0x1837a0=await _0x35f82f['json']()['catch'](()=>({}));throw new Error(_0x1837a0['error']||'Failed\x20to\x20delete\x20comment');}return await _0x35f82f['json']();},async 'createObjective'(_0x4c9785){const _0x3fb18f={'objective':!![],'name':_0x4c9785['name']||'','environment':_0x4c9785['environment']||null,'agents':_0x4c9785['agents']||[],'branches':_0x4c9785['branches']||{},'isPinned':_0x4c9785['isPinned']||![],'parentObjectiveId':_0x4c9785['parentObjectiveId']||null,'env_vars':_0x4c9785['envVars']||{},'parameters':{'instructions':_0x4c9785['instructions']||''},'files':_0x4c9785['files']||[],'jira':_0x4c9785['jira']||null};return this['createTask'](_0x3fb18f);},async 'updateObjective'(_0x39ea0d,_0x2d63ba,_0x2660eb=[],_0x30ada7=[]){let _0xe2278b,_0x281f15={};const _0x4f79f6={..._0x2d63ba};_0x30ada7&&_0x30ada7['length']>0x0&&(_0x4f79f6['removeAttachments']=_0x30ada7);if(_0x2660eb&&_0x2660eb['length']>0x0){const _0x106009=new FormData();for(const [_0x4ea73f,_0x2a883c]of Object['entries'](_0x4f79f6)){if(_0x2a883c==null)continue;typeof _0x2a883c==='object'?_0x106009['append'](_0x4ea73f,JSON['stringify'](_0x2a883c)):_0x106009['append'](_0x4ea73f,String(_0x2a883c));}for(const _0x13d46b of _0x2660eb){_0x106009['append']('attachments',_0x13d46b);}_0xe2278b=_0x106009;}else _0x281f15['Content-Type']='application/json',_0xe2278b=JSON['stringify'](_0x4f79f6);const _0x471e57=await fetch(API_BASE+'/tasks/'+_0x39ea0d,{'method':'PATCH','headers':_0x281f15,'body':_0xe2278b});if(!_0x471e57['ok']){const _0x2a33aa=await _0x471e57['json']();throw new Error(_0x2a33aa['error']||'Failed\x20to\x20update\x20objective');}return await _0x471e57['json']();},async 'deleteObjective'(_0x2f5628){return this['deleteTask'](_0x2f5628);},async 'launchObjective'(_0x255d05,_0x4b1697={}){const _0x5d1788=await fetch(API_BASE+'/tasks/'+_0x255d05+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b1697)});if(!_0x5d1788['ok']){const _0x13f552=await _0x5d1788['json']();throw new Error(_0x13f552['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5d1788['json']();},async 'getObjectiveAttachments'(_0x166044){return this['getTaskAttachments'](_0x166044);},async 'createJudgeTask'({environment:_0x3ce01c,judgeAgent:_0x29ccb9,groupId:_0xf824b9,taskIds:_0x5e574f,judgeCustomInstructions:_0x2ee94d,isPinned:_0x54e387}){const _0x407b19=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3ce01c,'judgeAgent':_0x29ccb9,'groupId':_0xf824b9,'taskIds':_0x5e574f,'judgeCustomInstructions':_0x2ee94d,'isPinned':_0x54e387})});if(!_0x407b19['ok']){const _0x3af567=await _0x407b19['json']();throw new Error(_0x3af567['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x407b19['json']();},async 'getJudgeTasks'(_0x2b9bd2){const _0x1e2fc0=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2b9bd2));if(!_0x1e2fc0['ok']){const _0x1726be=await _0x1e2fc0['json']();throw new Error(_0x1726be['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1e2fc0['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3d0000,_0x4039c8,_0x379f98=''){const _0xeffe90=await fetch(API_BASE+'/tasks/'+_0x3d0000+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4039c8,'customPreamble':_0x379f98})});if(!_0xeffe90['ok']){const _0x195c7e=await _0xeffe90['json']();throw new Error(_0x195c7e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0xeffe90['json']();},async 'getJiraConfig'(){const _0x53851d=await fetch(API_BASE+'/jira/config');if(!_0x53851d['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x53851d['json']();},async 'getJiraIssue'(_0x4c6b66){const _0x4f8ec9=await fetch(API_BASE+'/jira/issues/'+_0x4c6b66);if(!_0x4f8ec9['ok']){const _0x188afb=await _0x4f8ec9['json']()['catch'](()=>({}));throw new Error(_0x188afb['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4f8ec9['statusText']);}return await _0x4f8ec9['json']();},async 'searchJiraIssues'(_0x1ed265,_0x2145e=0x14){const _0xbbe800=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x1ed265,'maxResults':_0x2145e})});if(!_0xbbe800['ok']){const _0x515f69=await _0xbbe800['json']()['catch'](()=>({}));throw new Error(_0x515f69['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xbbe800['statusText']);}return await _0xbbe800['json']();},async 'postJiraComment'(_0x57c1e6,_0x204b88){const _0x41e5c2=await fetch(API_BASE+'/jira/issues/'+_0x57c1e6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x204b88})});if(!_0x41e5c2['ok']){const _0x37d64f=await _0x41e5c2['json']()['catch'](()=>({}));throw new Error(_0x37d64f['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x41e5c2['statusText']);}return await _0x41e5c2['json']();},async 'getJiraComments'(_0x55ccce){const _0x267a49=await fetch(API_BASE+'/jira/issues/'+_0x55ccce+'/comments');if(!_0x267a49['ok']){const _0x163b75=await _0x267a49['json']()['catch'](()=>({}));throw new Error(_0x163b75['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x267a49['statusText']);}return await _0x267a49['json']();},async 'promptParameter'({environment:_0x584556,command:_0x2363af,parser:parser='json'}){const _0x1d9d93=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x584556,'command':_0x2363af,'parser':parser})});if(!_0x1d9d93['ok']){const _0x4bb76e=await _0x1d9d93['json']()['catch'](()=>({}));throw new Error(_0x4bb76e['message']||_0x4bb76e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x1d9d93['statusText']);}return await _0x1d9d93['json']();},async 'promptParameterStream'(_0x73c6db,_0x17550a){const _0xdbc89d=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x73c6db)});if(!_0xdbc89d['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0xdbc89d['statusText']);const _0x333520=_0xdbc89d['body']['getReader'](),_0x75a106=new TextDecoder();let _0x3915ad='';return new Promise((_0x333623,_0x4ae81d)=>{const _0x5d7f3b=async()=>{try{const {done:_0x10f589,value:_0x183273}=await _0x333520['read']();if(_0x10f589)return;_0x3915ad+=_0x75a106['decode'](_0x183273,{'stream':!![]});const _0x404533=_0x3915ad['split']('\x0a\x0a');_0x3915ad=_0x404533['pop']()||'';for(const _0xe214d7 of _0x404533){if(!_0xe214d7['trim']())continue;const _0x4bd758=_0xe214d7['split']('\x0a');let _0xe261f8='message',_0x479e50='';for(const _0x256c32 of _0x4bd758){if(_0x256c32['startsWith']('event:'))_0xe261f8=_0x256c32['substring'](0x6)['trim']();else _0x256c32['startsWith']('data:')&&(_0x479e50=_0x256c32['substring'](0x5)['trim']());}if(!_0x479e50)continue;try{const _0x55d54d=JSON['parse'](_0x479e50);if(_0xe261f8==='progress'&&_0x17550a)_0x17550a(_0x55d54d['stage'],_0x55d54d['message']);else{if(_0xe261f8==='result'){_0x333623(_0x55d54d);return;}else{if(_0xe261f8==='error'){let _0x21e229=_0x55d54d['message']||_0x55d54d['error']||'Prompt\x20command\x20failed';_0x55d54d['rawOutput']&&(_0x21e229+='\x0a\x0aRaw\x20output:\x0a'+_0x55d54d['rawOutput']);_0x4ae81d(new Error(_0x21e229));return;}}}}catch(_0x4d3d55){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x4d3d55),console['error']('Event\x20type:',_0xe261f8),console['error']('Event\x20data:',_0x479e50),console['error']('First\x20200\x20chars:',_0x479e50['substring'](0x0,0xc8)),_0x4ae81d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x4d3d55['message']+'\x0a\x0aData:\x20'+_0x479e50['substring'](0x0,0x1f4)));return;}}_0x5d7f3b();}catch(_0x20808f){_0x4ae81d(_0x20808f);}};_0x5d7f3b();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x28b34e){const _0x1fc1b9=await fetch(''+API_BASE+_0x28b34e);if(!_0x1fc1b9['ok']){const _0x343daf=await _0x1fc1b9['json']()['catch'](()=>({'error':_0x1fc1b9['statusText']})),_0x5ebb58=new Error(_0x343daf['error']||_0x343daf['message']||_0x1fc1b9['statusText']);if(_0x343daf['detail']!==undefined)_0x5ebb58['detail']=_0x343daf['detail'];throw _0x5ebb58;}return await _0x1fc1b9['json']();},async 'post'(_0x4efb7f,_0x19ca47){const _0x541598=await fetch(''+API_BASE+_0x4efb7f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19ca47)});if(!_0x541598['ok']){const _0x43dd44=await _0x541598['json']()['catch'](()=>({'error':_0x541598['statusText']})),_0x4a084d=new Error(_0x43dd44['error']||_0x43dd44['message']||_0x541598['statusText']);if(_0x43dd44['detail']!==undefined)_0x4a084d['detail']=_0x43dd44['detail'];throw _0x4a084d;}return await _0x541598['json']();},async 'put'(_0x423b38,_0x378dca){const _0x14965b=await fetch(''+API_BASE+_0x423b38,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x378dca)});if(!_0x14965b['ok']){const _0x1a12f5=await _0x14965b['json']()['catch'](()=>({'error':_0x14965b['statusText']})),_0x2177de=new Error(_0x1a12f5['error']||_0x1a12f5['message']||_0x14965b['statusText']);if(_0x1a12f5['detail']!==undefined)_0x2177de['detail']=_0x1a12f5['detail'];throw _0x2177de;}return await _0x14965b['json']();},async 'delete'(_0x2d870a,_0x38e316){const _0x4968d9={'method':'DELETE'};_0x38e316&&(_0x4968d9['headers']={'Content-Type':'application/json'},_0x4968d9['body']=JSON['stringify'](_0x38e316));const _0x4c90fb=await fetch(''+API_BASE+_0x2d870a,_0x4968d9);if(!_0x4c90fb['ok']){const _0xeac2be=await _0x4c90fb['json']()['catch'](()=>({'error':_0x4c90fb['statusText']})),_0x452b49=new Error(_0xeac2be['error']||_0xeac2be['message']||_0x4c90fb['statusText']);if(_0xeac2be['detail']!==undefined)_0x452b49['detail']=_0xeac2be['detail'];throw _0x452b49;}return await _0x4c90fb['json']();},async 'getSkills'(){const _0x1dfb07=await fetch(API_BASE+'/skills');if(!_0x1dfb07['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1dfb07['statusText']);return await _0x1dfb07['json']();},async 'getSkill'(_0x4b5778){const _0x454802=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b5778));if(!_0x454802['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x454802['statusText']);return await _0x454802['json']();},async 'createSkill'(_0x1087a6){const _0x5d16ff=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1087a6)});if(!_0x5d16ff['ok']){const _0x146d2d=await _0x5d16ff['json']()['catch'](()=>({'error':_0x5d16ff['statusText']})),_0x478ce0=new Error(_0x146d2d['error']||_0x146d2d['message']||_0x5d16ff['statusText']);if(_0x146d2d['detail']!==undefined)_0x478ce0['detail']=_0x146d2d['detail'];throw _0x478ce0;}return await _0x5d16ff['json']();},async 'updateSkill'(_0x23d3e8,_0x407528){const _0x5c66c0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23d3e8),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x407528)});if(!_0x5c66c0['ok']){const _0x1adf7a=await _0x5c66c0['json']()['catch'](()=>({'error':_0x5c66c0['statusText']})),_0x17835d=new Error(_0x1adf7a['error']||_0x1adf7a['message']||_0x5c66c0['statusText']);if(_0x1adf7a['detail']!==undefined)_0x17835d['detail']=_0x1adf7a['detail'];throw _0x17835d;}return await _0x5c66c0['json']();},async 'deleteSkill'(_0x5ef87e){const _0x560712=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5ef87e),{'method':'DELETE'});if(!_0x560712['ok']){const _0x1d228b=await _0x560712['json']()['catch'](()=>({'error':_0x560712['statusText']})),_0x534072=new Error(_0x1d228b['error']||_0x1d228b['message']||_0x560712['statusText']);if(_0x1d228b['detail']!==undefined)_0x534072['detail']=_0x1d228b['detail'];throw _0x534072;}return await _0x560712['json']();},async 'getSkillFile'(_0x58bd3d,_0x144f5d){const _0x23013a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x58bd3d)+'/files/'+_0x144f5d);if(!_0x23013a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x23013a['statusText']);return await _0x23013a['json']();},async 'saveSkillFile'(_0x4c2268,_0x5cff27,_0x162d1c){const _0x4e54a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c2268)+'/files/'+_0x5cff27,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x162d1c})});if(!_0x4e54a7['ok']){const _0xb952b=await _0x4e54a7['json']()['catch'](()=>({'error':_0x4e54a7['statusText']})),_0x5bc90d=new Error(_0xb952b['error']||_0xb952b['message']||_0x4e54a7['statusText']);if(_0xb952b['detail']!==undefined)_0x5bc90d['detail']=_0xb952b['detail'];throw _0x5bc90d;}return await _0x4e54a7['json']();},async 'deleteSkillFile'(_0x31224f,_0x40aee5){const _0x34b745=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x31224f)+'/files/'+_0x40aee5,{'method':'DELETE'});if(!_0x34b745['ok']){const _0x55a154=await _0x34b745['json']()['catch'](()=>({'error':_0x34b745['statusText']})),_0x379f3c=new Error(_0x55a154['error']||_0x55a154['message']||_0x34b745['statusText']);if(_0x55a154['detail']!==undefined)_0x379f3c['detail']=_0x55a154['detail'];throw _0x379f3c;}return await _0x34b745['json']();},async 'pullSkills'(){const _0x4260a0=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x4260a0['ok']){const _0x247753=await _0x4260a0['json']()['catch'](()=>({'error':_0x4260a0['statusText']})),_0x4b374a=new Error(_0x247753['error']||_0x247753['message']||_0x4260a0['statusText']);if(_0x247753['detail']!==undefined)_0x4b374a['detail']=_0x247753['detail'];throw _0x4b374a;}return await _0x4260a0['json']();},async 'commitSkills'(_0x39469b,_0x3cabf8={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3cabf8,_0x4d676d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39469b,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4d676d['ok']){const _0x5908a9=await _0x4d676d['json']()['catch'](()=>({'error':_0x4d676d['statusText']})),_0x3b1813=new Error(_0x5908a9['error']||_0x5908a9['message']||_0x4d676d['statusText']);if(_0x5908a9['detail']!==undefined)_0x3b1813['detail']=_0x5908a9['detail'];throw _0x3b1813;}return await _0x4d676d['json']();},async 'discardSkillsChanges'(){const _0x3282b7=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x3282b7['ok']){const _0xceb222=await _0x3282b7['json']()['catch'](()=>({'error':_0x3282b7['statusText']})),_0x579547=new Error(_0xceb222['error']||_0xceb222['message']||_0x3282b7['statusText']);if(_0xceb222['detail']!==undefined)_0x579547['detail']=_0xceb222['detail'];throw _0x579547;}return await _0x3282b7['json']();},async 'getSkillCatalog'(){const _0x4f3eb7=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4f3eb7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4f3eb7['statusText']);return await _0x4f3eb7['json']();},async 'getImportedSkillsRegistry'(){const _0x45ea95=await fetch(API_BASE+'/external-skills/registry');if(!_0x45ea95['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x45ea95['statusText']);return await _0x45ea95['json']();},async 'importCatalogSkill'(_0x396ac0){const _0xba980f=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x396ac0})});if(!_0xba980f['ok']){const _0x4e9736=await _0xba980f['json']()['catch'](()=>({'error':_0xba980f['statusText']})),_0x38eb13=new Error(_0x4e9736['error']||_0x4e9736['message']||_0xba980f['statusText']);if(_0x4e9736['detail']!==undefined)_0x38eb13['detail']=_0x4e9736['detail'];throw _0x38eb13;}return await _0xba980f['json']();},async 'importSkillFromGit'(_0xa7c8ec,_0x4feeb4,_0x4d9bea='main',_0x12e9f0=null){const _0x53b121=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xa7c8ec,'skillPath':_0x4feeb4,'branch':_0x4d9bea,'skillId':_0x12e9f0})});if(!_0x53b121['ok']){const _0x257999=await _0x53b121['json']()['catch'](()=>({'error':_0x53b121['statusText']})),_0x4912da=new Error(_0x257999['error']||_0x257999['message']||_0x53b121['statusText']);if(_0x257999['detail']!==undefined)_0x4912da['detail']=_0x257999['detail'];throw _0x4912da;}return await _0x53b121['json']();},async 'probeMarketplace'(_0xc48db1,_0x19d48e='main'){const _0x5e23d2=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xc48db1,'branch':_0x19d48e})});if(!_0x5e23d2['ok']){const _0x4db86b=await _0x5e23d2['json']()['catch'](()=>({'error':_0x5e23d2['statusText']})),_0x35db4b=new Error(_0x4db86b['error']||_0x4db86b['message']||_0x5e23d2['statusText']);if(_0x4db86b['detail']!==undefined)_0x35db4b['detail']=_0x4db86b['detail'];throw _0x35db4b;}return await _0x5e23d2['json']();},async 'importMarketplaceBundle'(_0x153780,_0x41d918,_0x1c5804,_0x3685c5=null){const _0x5a4709=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x153780,'branch':_0x41d918,'bundleId':_0x1c5804,'selectedSkills':_0x3685c5})});if(!_0x5a4709['ok']){const _0x3ba446=await _0x5a4709['json']()['catch'](()=>({'error':_0x5a4709['statusText']})),_0x241949=new Error(_0x3ba446['error']||_0x3ba446['message']||_0x5a4709['statusText']);if(_0x3ba446['detail']!==undefined)_0x241949['detail']=_0x3ba446['detail'];throw _0x241949;}return await _0x5a4709['json']();},async 'importSkillFromFolder'(_0x295dce,_0x3cc761=null){const _0x2800a0=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x295dce,'skillId':_0x3cc761})});if(!_0x2800a0['ok']){const _0x2fc6bd=await _0x2800a0['json']()['catch'](()=>({'error':_0x2800a0['statusText']})),_0x4c9664=new Error(_0x2fc6bd['error']||_0x2fc6bd['message']||_0x2800a0['statusText']);if(_0x2fc6bd['detail']!==undefined)_0x4c9664['detail']=_0x2fc6bd['detail'];throw _0x4c9664;}return await _0x2800a0['json']();},async 'importSkillFromNpm'(_0x556d57,_0x56e74b='latest',_0x3cf22c=null,_0x2fc566=null){const _0x45267e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x556d57,'version':_0x56e74b,'skillId':_0x3cf22c,'registry':_0x2fc566})});if(!_0x45267e['ok']){const _0x317ad5=await _0x45267e['json']()['catch'](()=>({'error':_0x45267e['statusText']})),_0x30c82b=new Error(_0x317ad5['error']||_0x317ad5['message']||_0x45267e['statusText']);if(_0x317ad5['detail']!==undefined)_0x30c82b['detail']=_0x317ad5['detail'];throw _0x30c82b;}return await _0x45267e['json']();},async 'checkSkillUpdates'(_0x3539dc){const _0x34fbce=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3539dc)+'/check-updates',{'method':'POST'});if(!_0x34fbce['ok']){const _0x5e4ce7=await _0x34fbce['json']()['catch'](()=>({'error':_0x34fbce['statusText']})),_0x36cf7f=new Error(_0x5e4ce7['error']||_0x5e4ce7['message']||_0x34fbce['statusText']);if(_0x5e4ce7['detail']!==undefined)_0x36cf7f['detail']=_0x5e4ce7['detail'];throw _0x36cf7f;}return await _0x34fbce['json']();},async 'updateExternalSkill'(_0x3d545d){const _0x2f75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3d545d)+'/update',{'method':'POST'});if(!_0x2f75f3['ok']){const _0x548dcf=await _0x2f75f3['json']()['catch'](()=>({'error':_0x2f75f3['statusText']})),_0x17c7f2=new Error(_0x548dcf['error']||_0x548dcf['message']||_0x2f75f3['statusText']);if(_0x548dcf['detail']!==undefined)_0x17c7f2['detail']=_0x548dcf['detail'];throw _0x17c7f2;}return await _0x2f75f3['json']();},async 'updateSkillFlags'(_0x31be6e,_0x1f628d){const _0x4eff4f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x31be6e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x1f628d})});if(!_0x4eff4f['ok']){const _0x37675d=await _0x4eff4f['json']()['catch'](()=>({'error':_0x4eff4f['statusText']})),_0x253962=new Error(_0x37675d['error']||_0x37675d['message']||_0x4eff4f['statusText']);if(_0x37675d['detail']!==undefined)_0x253962['detail']=_0x37675d['detail'];throw _0x253962;}return await _0x4eff4f['json']();},async 'removeFromImportedRegistry'(_0x454a9e){const _0xdc508f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x454a9e)+'/registry',{'method':'DELETE'});if(!_0xdc508f['ok']){const _0x250e97=await _0xdc508f['json']()['catch'](()=>({'error':_0xdc508f['statusText']})),_0x2409fe=new Error(_0x250e97['error']||_0x250e97['message']||_0xdc508f['statusText']);if(_0x250e97['detail']!==undefined)_0x2409fe['detail']=_0x250e97['detail'];throw _0x2409fe;}return await _0xdc508f['json']();},async 'getTeams'(){const _0x3aaef5=await fetch(API_BASE+'/teams');if(!_0x3aaef5['ok']){const _0x3e694a=await _0x3aaef5['json']()['catch'](()=>({'message':_0x3aaef5['statusText']}));throw new Error(_0x3e694a['message']||'Failed\x20to\x20get\x20teams');}return await _0x3aaef5['json']();},async 'getTeam'(_0x135452){const _0x32a5b3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x135452));if(!_0x32a5b3['ok']){const _0x2b31d3=await _0x32a5b3['json']()['catch'](()=>({'message':_0x32a5b3['statusText']}));throw new Error(_0x2b31d3['message']||'Failed\x20to\x20get\x20team');}return await _0x32a5b3['json']();},async 'createTeam'(_0x42dfec){const _0x3b1cda=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42dfec)});if(!_0x3b1cda['ok']){const _0x249f28=await _0x3b1cda['json']()['catch'](()=>({'message':_0x3b1cda['statusText']}));throw new Error(_0x249f28['message']||'Failed\x20to\x20create\x20team');}return await _0x3b1cda['json']();},async 'updateTeam'(_0x47742f,_0x2f7d58){const _0x3bbb69=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x47742f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f7d58)});if(!_0x3bbb69['ok']){const _0xd65067=await _0x3bbb69['json']()['catch'](()=>({'message':_0x3bbb69['statusText']}));throw new Error(_0xd65067['message']||'Failed\x20to\x20update\x20team');}return await _0x3bbb69['json']();},async 'deleteTeam'(_0x3b69bf){const _0x207f6c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3b69bf),{'method':'DELETE'});if(!_0x207f6c['ok']){const _0xc20ef6=await _0x207f6c['json']()['catch'](()=>({'message':_0x207f6c['statusText']}));throw new Error(_0xc20ef6['message']||'Failed\x20to\x20delete\x20team');}return await _0x207f6c['json']();},async 'addTeamMember'(_0x3786b0,_0x5c9330){const _0xe3760=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3786b0)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5c9330})});if(!_0xe3760['ok']){const _0xd72d56=await _0xe3760['json']()['catch'](()=>({'message':_0xe3760['statusText']}));throw new Error(_0xd72d56['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xe3760['json']();},async 'removeTeamMember'(_0x2b2484,_0x5de465){const _0x377cf6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b2484)+'/members/'+encodeURIComponent(_0x5de465),{'method':'DELETE'});if(!_0x377cf6['ok']){const _0x10fd42=await _0x377cf6['json']()['catch'](()=>({'message':_0x377cf6['statusText']}));throw new Error(_0x10fd42['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x377cf6['json']();},async 'getBindings'(_0x51be8b={}){const _0x521f6d=new URLSearchParams();if(_0x51be8b['resource_type'])_0x521f6d['set']('resource_type',_0x51be8b['resource_type']);if(_0x51be8b['resource_id'])_0x521f6d['set']('resource_id',_0x51be8b['resource_id']);if(_0x51be8b['subject_type'])_0x521f6d['set']('subject_type',_0x51be8b['subject_type']);if(_0x51be8b['subject_id'])_0x521f6d['set']('subject_id',_0x51be8b['subject_id']);const _0x45c27a=_0x521f6d['toString'](),_0x1bb326=await fetch(API_BASE+'/bindings'+(_0x45c27a?'?'+_0x45c27a:''));if(!_0x1bb326['ok']){const _0x5dabf4=await _0x1bb326['json']()['catch'](()=>({'message':_0x1bb326['statusText']}));throw new Error(_0x5dabf4['message']||'Failed\x20to\x20get\x20bindings');}return await _0x1bb326['json']();},async 'createBinding'(_0x460d34){const _0x5bfc2e=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x460d34)});if(!_0x5bfc2e['ok']){const _0x2b2ace=await _0x5bfc2e['json']()['catch'](()=>({'message':_0x5bfc2e['statusText']}));throw new Error(_0x2b2ace['message']||'Failed\x20to\x20create\x20binding');}return await _0x5bfc2e['json']();},async 'updateBinding'(_0x3106bc,_0xcc83){const _0x5e5fd2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3106bc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcc83)});if(!_0x5e5fd2['ok']){const _0x33a108=await _0x5e5fd2['json']()['catch'](()=>({'message':_0x5e5fd2['statusText']}));throw new Error(_0x33a108['message']||'Failed\x20to\x20update\x20binding');}return await _0x5e5fd2['json']();},async 'deleteBinding'(_0x4056db){const _0x12f43f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4056db),{'method':'DELETE'});if(!_0x12f43f['ok']){const _0x535e9c=await _0x12f43f['json']()['catch'](()=>({'message':_0x12f43f['statusText']}));throw new Error(_0x535e9c['message']||'Failed\x20to\x20delete\x20binding');}return await _0x12f43f['json']();},async 'getRoleDefinitions'(){const _0x40c3f5=await fetch(API_BASE+'/roles');if(!_0x40c3f5['ok']){const _0x9bb671=await _0x40c3f5['json']()['catch'](()=>({'message':_0x40c3f5['statusText']}));throw new Error(_0x9bb671['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x40c3f5['json']();},async 'getRoleDefinition'(_0x17b834){const _0x16cdca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x17b834));if(!_0x16cdca['ok']){const _0x584a39=await _0x16cdca['json']()['catch'](()=>({'message':_0x16cdca['statusText']}));throw new Error(_0x584a39['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x16cdca['json']();},async 'createRoleDefinition'(_0x5cb685){const _0x4b54b9=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5cb685)});if(!_0x4b54b9['ok']){const _0x1ce08c=await _0x4b54b9['json']()['catch'](()=>({'message':_0x4b54b9['statusText']}));throw new Error(_0x1ce08c['message']||_0x1ce08c['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4b54b9['json']();},async 'updateRoleDefinition'(_0x5d6b22,_0x3bd72c){const _0x182850=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5d6b22),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3bd72c)});if(!_0x182850['ok']){const _0x1532e3=await _0x182850['json']()['catch'](()=>({'message':_0x182850['statusText']}));throw new Error(_0x1532e3['message']||_0x1532e3['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x182850['json']();},async 'deleteRoleDefinition'(_0x45982a){const _0x28029b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x45982a),{'method':'DELETE'});if(!_0x28029b['ok']){const _0x313a8f=await _0x28029b['json']()['catch'](()=>({'message':_0x28029b['statusText']}));throw new Error(_0x313a8f['message']||_0x313a8f['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x28029b['json']();},async 'getAvailablePermissions'(){const _0xb524c3=await fetch(API_BASE+'/roles/available-permissions');if(!_0xb524c3['ok']){const _0x36b8ed=await _0xb524c3['json']()['catch'](()=>({'message':_0xb524c3['statusText']}));throw new Error(_0x36b8ed['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xb524c3['json']();},async 'getGitProviderAllowedTeams'(_0x5d16e3){const _0x1726eb=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5d16e3)+'/allowed-teams');if(!_0x1726eb['ok']){const _0x14a5f4=await _0x1726eb['json']()['catch'](()=>({'message':_0x1726eb['statusText']}));throw new Error(_0x14a5f4['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1726eb['json']();},async 'setGitProviderAllowedTeams'(_0x4945f5,_0x9249ac){const _0x2ebe37=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4945f5)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x9249ac})});if(!_0x2ebe37['ok']){const _0x5a68d2=await _0x2ebe37['json']()['catch'](()=>({'message':_0x2ebe37['statusText']}));throw new Error(_0x5a68d2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x2ebe37['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 _0x2a1af5=toastState['baseBottom'];toastState['toasts']['forEach'](_0x676bba=>{_0x676bba['el']['style']['bottom']=_0x2a1af5+'px';const _0x3bae7a=_0x676bba['el']['offsetHeight']||toastState['defaultHeight'];_0x2a1af5+=_0x3bae7a+toastState['gap'];});});}function removeToastById(_0x55b0ec){const _0x193fd5=toastState['toasts']['findIndex'](_0x167bba=>_0x167bba['id']===_0x55b0ec);if(_0x193fd5===-0x1)return;const _0x2e9eca=toastState['toasts'][_0x193fd5];if(_0x2e9eca['timeoutId'])clearTimeout(_0x2e9eca['timeoutId']);_0x2e9eca['el']['classList']['remove']('show'),setTimeout(()=>_0x2e9eca['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x193fd5,0x1),repositionAllToasts();}function registerToast(_0x2d2125){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d2125),repositionAllToasts(),_0x2d2125['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x37a7cb){if(_0x37a7cb===null||_0x37a7cb===undefined)return'';return String(_0x37a7cb)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x4c0475,_0x4d60c0){if(_0x4c0475&&typeof _0x4c0475==='object'&&!Array['isArray'](_0x4c0475))return{'code':typeof _0x4c0475['text']==='string'?_0x4c0475['text']:'','language':typeof _0x4c0475['lang']==='string'?_0x4c0475['lang']:''};return{'code':typeof _0x4c0475==='string'?_0x4c0475:'','language':typeof _0x4d60c0==='string'?_0x4d60c0:''};}function buildMermaidBlock(_0x557e6b){const _0x180850=String(_0x557e6b||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x180850))+'\x22>'+escapeHtmlValue(_0x180850)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x463461=new marked['Renderer'](),_0x15a85f=_0x463461['code']['bind'](_0x463461);return _0x463461['code']=function(_0x3166cb,_0x5f4ed4,..._0x46ee6e){const {code:_0x50385d,language:_0x2774bb}=getMarkdownCodeBlockPayload(_0x3166cb,_0x5f4ed4),_0x1795fa=String(_0x2774bb||'')['trim']()['toLowerCase']();if(_0x1795fa==='mermaid')return buildMermaidBlock(_0x50385d);const _0x2526d7=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x2526d7&&_0x1795fa)try{const _0x4a6d9e=_0x2526d7['getLanguage'](_0x1795fa)?_0x1795fa:'plaintext',_0xd6ae95=_0x2526d7['highlight'](_0x50385d,{'language':_0x4a6d9e})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1795fa)+'\x22>'+_0xd6ae95+'</code></pre>';}catch(_0x4c1d12){console['error']('Syntax\x20highlighting\x20error:',_0x4c1d12);}return _0x15a85f(_0x3166cb,_0x5f4ed4,..._0x46ee6e);},sharedMarkedRenderer=_0x463461,_0x463461;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x15446b=window['mermaid'];if(!_0x15446b||typeof _0x15446b['initialize']!=='function')return _0x15446b||null;return _0x15446b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x15446b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x749826,_0x17030b)=>{const _0x207511=()=>_0x749826(configureMermaidInstance()),_0x549c64=()=>{mermaidLoadPromise=null,_0x17030b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x1db1ca=document['getElementById'](MERMAID_SCRIPT_ID);!_0x1db1ca&&(_0x1db1ca=document['createElement']('script'),_0x1db1ca['id']=MERMAID_SCRIPT_ID,_0x1db1ca['src']=MERMAID_SCRIPT_SRC,_0x1db1ca['async']=!![],document['head']['appendChild'](_0x1db1ca));if(window['mermaid']){_0x207511();return;}_0x1db1ca['addEventListener']('load',_0x207511,{'once':!![]}),_0x1db1ca['addEventListener']('error',_0x549c64,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x45712f){const _0x422168=_0x45712f['getAttribute']('data-mermaid-source');if(!_0x422168)return null;let _0x53e77e=_0x422168;try{_0x53e77e=decodeURIComponent(_0x422168);}catch{}return _0x45712f['textContent']=_0x53e77e,_0x45712f['removeAttribute']('data-processed'),_0x45712f['removeAttribute']('aria-roledescription'),_0x45712f['removeAttribute']('role'),_0x45712f['removeAttribute']('aria-label'),_0x53e77e;}function collectMermaidNodes(_0x500636,_0x4f1135){if(!(_0x500636 instanceof Element))return;_0x500636['matches']('.mermaid[data-mermaid-source]')&&_0x4f1135['add'](_0x500636),_0x500636['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x10d39d=>{_0x4f1135['add'](_0x10d39d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x318e7e=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x77b3dc=>setTimeout(_0x77b3dc,0x0);_0x318e7e(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3d82f6=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3d82f6);});});}function queueMermaidRender(_0x219ba4){const _0x1b7338=new Set();_0x219ba4 instanceof Document||_0x219ba4 instanceof DocumentFragment?_0x219ba4['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4cc4e5=>_0x1b7338['add'](_0x4cc4e5)):collectMermaidNodes(_0x219ba4,_0x1b7338);if(_0x1b7338['size']===0x0)return;_0x1b7338['forEach'](_0x2e5d17=>pendingMermaidNodes['add'](_0x2e5d17)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5f44ea=Array['from'](pendingMermaidNodes)['filter'](_0x2912c8=>_0x2912c8['isConnected']);pendingMermaidNodes['clear']();if(_0x5f44ea['length']===0x0)return;const _0x2516b4=await loadMermaid();if(!_0x2516b4)return;configureMermaidInstance();const _0x407f7e=getMermaidTheme();for(const _0x15dec2 of _0x5f44ea){const _0x42cc0f=_0x15dec2['getAttribute']('data-mermaid-source');if(!_0x42cc0f)continue;const _0x10caca=_0x15dec2['getAttribute']('data-processed')==='true';if(_0x10caca&&_0x15dec2['dataset']['mermaidTheme']===_0x407f7e)continue;restoreMermaidSource(_0x15dec2);try{if(typeof _0x2516b4['run']==='function')await _0x2516b4['run']({'nodes':[_0x15dec2]});else typeof _0x2516b4['init']==='function'&&_0x2516b4['init'](undefined,[_0x15dec2]);_0x15dec2['dataset']['mermaidTheme']=_0x407f7e,delete _0x15dec2['dataset']['mermaidError'];}catch(_0xc56f92){console['error']('Mermaid\x20render\x20failed:',_0xc56f92),restoreMermaidSource(_0x15dec2),_0x15dec2['dataset']['mermaidError']='true',delete _0x15dec2['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x53b517=>{_0x53b517['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x53b517);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2d97f9=>{_0x2d97f9['forEach'](_0x53c2de=>{_0x53c2de['addedNodes']['forEach'](_0xba2938=>{_0xba2938['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xba2938);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x50d657){const _0x1c2948=new Date(_0x50d657),_0x235326=new Date(),_0x4c9402=_0x235326-_0x1c2948,_0x1b95a9=Math['floor'](_0x4c9402/0x3e8),_0x512cf4=Math['floor'](_0x1b95a9/0x3c),_0x123fa7=Math['floor'](_0x512cf4/0x3c),_0x105459=Math['floor'](_0x123fa7/0x18);if(_0x1b95a9<0x3c)return'now';if(_0x512cf4<0x3c)return _0x512cf4+'m\x20ago';if(_0x123fa7<0x18)return _0x123fa7+'h\x20ago';return _0x105459+'d\x20ago';},'getStatusIcon'(_0x546e77){switch(_0x546e77){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x450556){switch(_0x450556){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'(_0x24d0fb,_0xafabe5=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2262bb={};_0x2262bb['text/plain']=new Blob([_0x24d0fb],{'type':'text/plain'});_0xafabe5&&(_0x2262bb['text/html']=new Blob([_0xafabe5],{'type':'text/html'}));const _0x80deaa=new ClipboardItem(_0x2262bb);return await navigator['clipboard']['write']([_0x80deaa]),!![];}catch(_0x4071ea){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4071ea);}try{const _0x1f60f8=_0x4a6da5=>{_0x4a6da5['preventDefault'](),_0x4a6da5['clipboardData']['setData']('text/plain',_0x24d0fb),_0xafabe5&&_0x4a6da5['clipboardData']['setData']('text/html',_0xafabe5);};document['addEventListener']('copy',_0x1f60f8);const _0x41263b=document['execCommand']('copy');document['removeEventListener']('copy',_0x1f60f8);if(_0x41263b)return!![];}catch(_0x398750){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398750);}try{const _0x26c71c=document['createElement']('textarea');_0x26c71c['value']=_0x24d0fb,_0x26c71c['style']['position']='fixed',_0x26c71c['style']['opacity']='0',_0x26c71c['style']['pointerEvents']='none',document['body']['appendChild'](_0x26c71c),_0x26c71c['select']();const _0x29bfad=document['execCommand']('copy');return document['body']['removeChild'](_0x26c71c),_0x29bfad;}catch(_0x6066de){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x6066de),![];}},'showToast'(_0x33c58b,_0x13d2a1='info'){const _0x1f6709=getNextToastId(),_0x8f4b10=document['createElement']('div');_0x8f4b10['className']='toast\x20toast-'+_0x13d2a1,_0x8f4b10['textContent']=_0x33c58b,_0x8f4b10['dataset']['toastId']=_0x1f6709,document['body']['appendChild'](_0x8f4b10);const _0x3f859c=_0x13d2a1==='error'?0x2710:0xbb8,_0x307743=setTimeout(()=>{removeToastById(_0x1f6709);},_0x3f859c),_0x5f4121={'id':_0x1f6709,'el':_0x8f4b10,'timeoutId':_0x307743};return registerToast(_0x5f4121),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x8f4b10['classList']['add']('show');});}),_0x1f6709;},'showError'(_0x48f352){console['error'](_0x48f352);const _0x517ff5=typeof _0x48f352==='string'?_0x48f352:_0x48f352['message']||'An\x20error\x20occurred';this['showToast'](_0x517ff5,'error');},'showSuccess'(_0x17337c){this['showToast'](_0x17337c,'success');},'capitalize'(_0x2c3119){if(!_0x2c3119)return'';return _0x2c3119['charAt'](0x0)['toUpperCase']()+_0x2c3119['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3e53f9){return escapeHtmlValue(_0x3e53f9);},'ansiToHtml'(_0x3b6a1a){if(_0x3b6a1a===null||_0x3b6a1a===undefined)return'';let _0x3aeee7=this['escapeHtml'](_0x3b6a1a);const _0x124495={'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'},_0x5abc8d={'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 _0x2a1781=0x0;return _0x3aeee7=_0x3aeee7['replace'](/\x1b\[([0-9;]*)m/g,(_0x475443,_0x491756)=>{if(!_0x491756||_0x491756==='0'){const _0x41c802='</span>'['repeat'](_0x2a1781);return _0x2a1781=0x0,_0x41c802;}const _0x170125=_0x491756['split'](';'),_0x3b3441=[];for(const _0x136ed2 of _0x170125){if(_0x136ed2==='1')_0x3b3441['push']('font-weight:bold');else{if(_0x136ed2==='2')_0x3b3441['push']('opacity:0.7');else{if(_0x136ed2==='3')_0x3b3441['push']('font-style:italic');else{if(_0x136ed2==='4')_0x3b3441['push']('text-decoration:underline');else{if(_0x136ed2==='9')_0x3b3441['push']('text-decoration:line-through');else{if(_0x124495[_0x136ed2])_0x3b3441['push']('color:'+_0x124495[_0x136ed2]);else{if(_0x5abc8d[_0x136ed2])_0x3b3441['push']('background-color:'+_0x5abc8d[_0x136ed2]);}}}}}}}if(_0x3b3441['length']>0x0)return _0x2a1781++,'<span\x20style=\x22'+_0x3b3441['join'](';')+'\x22>';return'';}),_0x3aeee7+='</span>'['repeat'](_0x2a1781),_0x3aeee7=_0x3aeee7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1c10ca,_0x3db66b)=>{if(!_0x3db66b||_0x3db66b==='0')return'';const _0x31953f=_0x3db66b['split'](';'),_0x494710=[];for(const _0x1fe5cb of _0x31953f){if(_0x1fe5cb==='1')_0x494710['push']('font-weight:bold');else{if(_0x124495[_0x1fe5cb])_0x494710['push']('color:'+_0x124495[_0x1fe5cb]);else{if(_0x5abc8d[_0x1fe5cb])_0x494710['push']('background-color:'+_0x5abc8d[_0x1fe5cb]);}}}if(_0x494710['length']>0x0)return'<span\x20style=\x22'+_0x494710['join'](';')+'\x22>';return'';}),_0x3aeee7;},'showModal'({title:_0x4378df,content:_0x2fba3b,buttons:buttons=[]}){const _0x41cbd2='\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'](_0x4378df)+'</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'+_0x2fba3b+'\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']((_0x4d18f8,_0x26dc48)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4d18f8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x26dc48+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4d18f8['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',_0xd32454=document['createElement']('div');_0xd32454['id']='utils-modal',_0xd32454['className']='modal',_0xd32454['innerHTML']=_0x41cbd2,document['body']['appendChild'](_0xd32454);const _0x4f421d=document['getElementById']('utils-modal-close');_0x4f421d&&_0x4f421d['addEventListener']('click',()=>this['hideModal']());const _0x4de974=_0xd32454['querySelectorAll']('[data-btn-index]');_0x4de974['forEach'](_0x1ed970=>{const _0x4305b7=parseInt(_0x1ed970['dataset']['btnIndex']);buttons[_0x4305b7]?.['onClick']&&_0x1ed970['addEventListener']('click',buttons[_0x4305b7]['onClick']);});const _0x18d9c9=document['getElementById']('utils-modal-overlay');_0x18d9c9&&_0x18d9c9['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x29f850=document['getElementById']('utils-modal');_0x29f850&&_0x29f850['remove']();},'parseKeyValuePairs'(_0x1e3417){const _0x4d3fd6={};if(!_0x1e3417)return _0x4d3fd6;return _0x1e3417['split'](/\r?\n/)['map'](_0x5cff84=>_0x5cff84['trim']())['filter'](Boolean)['forEach'](_0x1c3c7d=>{const _0x40b9e2=_0x1c3c7d['indexOf']('=');if(_0x40b9e2>0x0){const _0x8b1b55=_0x1c3c7d['slice'](0x0,_0x40b9e2)['trim'](),_0xb7be69=_0x1c3c7d['slice'](_0x40b9e2+0x1)['trim']();if(_0x8b1b55)_0x4d3fd6[_0x8b1b55]=_0xb7be69;}}),_0x4d3fd6;},'debounce'(_0x4f49d6,_0x133afa=0xfa){let _0x73862d=null;return(..._0x56ebdb)=>{clearTimeout(_0x73862d),_0x73862d=setTimeout(()=>_0x4f49d6['apply'](this,_0x56ebdb),_0x133afa);};},'formatTimestamp'(_0x33869e){if(!_0x33869e)return'N/A';const _0x22653b=new Date(_0x33869e);return _0x22653b['toLocaleDateString']()+'\x20'+_0x22653b['toLocaleTimeString']();},'getQueryParams'(){const _0x5ce64c=new URLSearchParams(window['location']['search']),_0x725a49={};for(const [_0x455627,_0x3c26cc]of _0x5ce64c){_0x725a49[_0x455627]=_0x3c26cc;}return _0x725a49;},'formatDuration'(_0x5b80c5,_0x4b6442){if(!_0x5b80c5)return'N/A';const _0x18b254=new Date(_0x5b80c5),_0xd5639a=_0x4b6442?new Date(_0x4b6442):new Date(),_0x4475be=_0xd5639a-_0x18b254;if(_0x4475be<0x0)return'0s';const _0x10b962=Math['floor'](_0x4475be/0x3e8),_0x20b89e=Math['floor'](_0x10b962/0x3c),_0x305e4c=Math['floor'](_0x20b89e/0x3c),_0x3b9ec0=Math['floor'](_0x305e4c/0x18);if(_0x10b962<0x3c)return _0x10b962+'s';if(_0x20b89e<0x3c)return _0x20b89e+'m\x20'+_0x10b962%0x3c+'s';if(_0x305e4c<0x18)return _0x305e4c+'h\x20'+_0x20b89e%0x3c+'m\x20'+_0x10b962%0x3c+'s';return _0x3b9ec0+'d\x20'+_0x305e4c%0x18+'h\x20'+_0x20b89e%0x3c+'m';},'renderMarkdown'(_0x58a012,_0x2fa12f={}){if(!_0x58a012)return'';_0x58a012=this['rewriteAttachmentLinks'](_0x58a012,_0x2fa12f),_0x58a012=this['rewriteColorSyntax'](_0x58a012);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x58a012);}catch(_0x3913a5){return console['error']('Markdown\x20parsing\x20error:',_0x3913a5),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);}},'rewriteAttachmentLinks'(_0x5c0ac1,_0x2e862f={}){const _0x108206=typeof _0x2e862f['resolveAttachmentUrl']==='function'?_0x2e862f['resolveAttachmentUrl']:_0x2e862f['taskId']?_0x1b7822=>API_BASE+'/tasks/'+_0x2e862f['taskId']+'/attachments/'+encodeURIComponent(_0x1b7822):null;if(!_0x108206)return _0x5c0ac1;return String(_0x5c0ac1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5d6a31,_0x1e2fc3)=>{const _0x15ada0=String(_0x1e2fc3||'')['trim']();if(!_0x15ada0)return _0x5d6a31;let _0x572223=_0x15ada0;try{_0x572223=decodeURIComponent(_0x15ada0);}catch{}const _0xab9e61=_0x108206(_0x572223);if(!_0xab9e61)return _0x5d6a31;return']('+_0xab9e61+')';});},'rewriteColorSyntax'(_0x4e3ed3){if(!_0x4e3ed3)return _0x4e3ed3;return String(_0x4e3ed3)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x56d653,_0x37e5e2,_0x524485)=>{const _0x3db3f9=this['rewriteColorSyntax'](_0x524485);return'<span\x20style=\x22color:\x20'+_0x37e5e2+'\x22>'+_0x3db3f9+'</span>';});},'renderMarkdownFallback'(_0x4fb402,_0x226c76={}){if(!_0x4fb402)return'';_0x4fb402=_0x4fb402['replace'](/\r\n/g,'\x0a'),_0x4fb402=_0x4fb402['replace'](/\r/g,'\x0a'),_0x4fb402=this['rewriteAttachmentLinks'](_0x4fb402,_0x226c76);let _0x22d8b3=this['escapeHtml'](_0x4fb402);return _0x22d8b3=_0x22d8b3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x22d8b3=_0x22d8b3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x22d8b3=_0x22d8b3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x22d8b3=_0x22d8b3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x22d8b3=_0x22d8b3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x22d8b3=_0x22d8b3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x22d8b3=_0x22d8b3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x22d8b3=_0x22d8b3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x22d8b3=_0x22d8b3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x22d8b3=_0x22d8b3['replace'](/\n\n/g,'</p><p>'),_0x22d8b3=_0x22d8b3['replace'](/\n/g,'<br>'),'<p>'+_0x22d8b3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x2743a0=new Uint8Array(0x10);crypto['getRandomValues'](_0x2743a0),_0x2743a0[0x6]=_0x2743a0[0x6]&0xf|0x40,_0x2743a0[0x8]=_0x2743a0[0x8]&0x3f|0x80;const _0x4dd9e5=Array['from'](_0x2743a0,_0x3e032d=>_0x3e032d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x4dd9e5['slice'](0x0,0x8)+'-'+_0x4dd9e5['slice'](0x8,0xc)+'-'+_0x4dd9e5['slice'](0xc,0x10)+'-'+_0x4dd9e5['slice'](0x10,0x14)+'-'+_0x4dd9e5['slice'](0x14);}};export class CustomSelect{constructor(_0x584e12,_0x1efa2b={}){this['nativeSelect']=_0x584e12,this['options']=_0x1efa2b,this['isOpen']=![],this['selectedValue']=_0x584e12['value']||'',this['searchable']=_0x1efa2b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x3598c6=document['createElement']('div');_0x3598c6['className']='custom-select';const _0x2533e9=document['createElement']('div');_0x2533e9['className']='custom-select-trigger',_0x2533e9['setAttribute']('tabindex','0'),_0x2533e9['setAttribute']('role','button'),_0x2533e9['setAttribute']('aria-haspopup','listbox');const _0x244806=document['createElement']('span');_0x244806['className']='custom-select-trigger-text';const _0xac8285=document['createElement']('span');_0xac8285['className']='custom-select-arrow',_0xac8285['textContent']='▼',_0x2533e9['appendChild'](_0x244806),_0x2533e9['appendChild'](_0xac8285);const _0x293357=document['createElement']('div');_0x293357['className']='custom-select-dropdown',_0x293357['setAttribute']('role','listbox');if(this['searchable']){const _0x16299c=document['createElement']('div');_0x16299c['className']='custom-select-search';const _0x56d4c3=document['createElement']('input');_0x56d4c3['type']='text',_0x56d4c3['className']='custom-select-search-input',_0x56d4c3['placeholder']='Type\x20to\x20search...',_0x56d4c3['setAttribute']('aria-label','Search\x20options'),_0x56d4c3['addEventListener']('input',_0x2fe5ab=>{this['searchQuery']=_0x2fe5ab['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x56d4c3['addEventListener']('keydown',_0x1c18c7=>{if(_0x1c18c7['key']==='Escape')_0x1c18c7['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x1c18c7['key']==='Enter'){_0x1c18c7['preventDefault'](),_0x1c18c7['stopPropagation']();const _0x2b60c9=_0x293357['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2b60c9){const _0x4e769b=_0x2b60c9['getAttribute']('data-value');this['select'](_0x4e769b);}}}}),_0x16299c['appendChild'](_0x56d4c3),_0x293357['appendChild'](_0x16299c),this['searchInput']=_0x56d4c3;}const _0x387a05=document['createElement']('div');_0x387a05['className']='custom-select-options',_0x293357['appendChild'](_0x387a05),_0x3598c6['appendChild'](_0x2533e9),_0x3598c6['appendChild'](_0x293357),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x3598c6,this['nativeSelect']),this['wrapper']=_0x3598c6,this['trigger']=_0x2533e9,this['triggerText']=_0x244806,this['dropdown']=_0x293357,this['optionsContainer']=_0x387a05,_0x2533e9['addEventListener']('click',()=>this['toggle']()),_0x2533e9['addEventListener']('keydown',_0xf8d3bf=>this['handleKeydown'](_0xf8d3bf)),document['addEventListener']('click',_0x29c3a4=>{!_0x3598c6['contains'](_0x29c3a4['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x515eab=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x515eab['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x26a222=new MutationObserver(()=>{this['updateDisabledState']();});_0x26a222['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x540be3=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x540be3['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x576f0d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x576f0d),this['trigger']['setAttribute']('aria-disabled',_0x576f0d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x576f0d?'-1':'0'),_0x576f0d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x51bb13=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x3dd48e=_0x51bb13['filter'](_0x282bc2=>!_0x282bc2['disabled']&&!_0x282bc2['hidden']);_0x51bb13['forEach']((_0x5033ad,_0x46f45b)=>{const _0x402b89=document['createElement']('div');_0x402b89['className']='custom-select-option',_0x402b89['textContent']=_0x5033ad['textContent'],_0x402b89['setAttribute']('data-value',_0x5033ad['value']),_0x402b89['setAttribute']('data-index',_0x46f45b),_0x402b89['setAttribute']('role','option'),_0x5033ad['disabled']?_0x402b89['classList']['add']('disabled'):_0x402b89['addEventListener']('click',()=>this['select'](_0x5033ad['value'])),_0x5033ad['value']===this['selectedValue']&&_0x402b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x402b89),this['allOptions']['push']({'element':_0x402b89,'text':_0x5033ad['textContent']['toLowerCase'](),'value':_0x5033ad['value'],'disabled':_0x5033ad['disabled']});});if(this['searchable']&&this['searchInput']){const _0xbb1852=this['searchInput']['parentElement'];_0x3dd48e['length']>0x3?_0xbb1852['style']['display']='':_0xbb1852['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x54c16a=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x5d88ff=>{if(!_0x54c16a||_0x5d88ff['disabled'])_0x5d88ff['element']['style']['display']='';else{const _0x1d93c4=_0x5d88ff['text']['includes'](_0x54c16a);_0x5d88ff['element']['style']['display']=_0x1d93c4?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x235200){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x235200,this['nativeSelect']['value']=_0x235200;const _0x4571ec=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x4571ec),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x38fd18=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x38fd18&&(this['triggerText']['textContent']=_0x38fd18['textContent'],_0x38fd18['disabled']||_0x38fd18['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4a151e=>{_0x4a151e['getAttribute']('data-value')===this['selectedValue']?_0x4a151e['classList']['add']('selected'):_0x4a151e['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 _0x889f4b=window['getComputedStyle'](this['dropdown']);if(_0x889f4b['position']==='fixed'){const _0x1549e3=this['trigger']['getBoundingClientRect'](),_0x16cd38=parseInt(_0x889f4b['maxHeight'])||0xc8,_0x550481=window['innerHeight'],_0x313251=_0x550481-_0x1549e3['bottom'],_0x3055bd=_0x1549e3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x2e781f;_0x313251<_0x16cd38&&_0x3055bd>_0x313251?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x550481-_0x1549e3['top']+'px',_0x2e781f=Math['min'](_0x16cd38,_0x3055bd-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1549e3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x2e781f=Math['min'](_0x16cd38,_0x313251-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px');if(this['optionsContainer']){let _0x25fcfa=_0x2e781f;if(this['searchInput']){const _0x165c5f=this['searchInput']['parentElement'];_0x165c5f&&(_0x25fcfa-=_0x165c5f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x25fcfa)+'px';}this['dropdown']['style']['left']=_0x1549e3['left']+'px',this['dropdown']['style']['width']=_0x1549e3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x52ec90=this['searchInput']['parentElement'];_0x52ec90&&_0x52ec90['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'](_0x3d1dc3){if(this['nativeSelect']['disabled'])return;if(_0x3d1dc3['key']==='Enter'||_0x3d1dc3['key']==='\x20')_0x3d1dc3['preventDefault'](),this['toggle']();else _0x3d1dc3['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2ccfcf='\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',_0x2ccfcf),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x42fc3f=document['getElementById']('confirm-dialog-close'),_0x1e6d67=document['getElementById']('confirm-dialog-cancel'),_0x1c8b5b=document['getElementById']('confirm-dialog-confirm'),_0x7f57a2=this['_modal']['querySelector']('.modal-overlay');_0x42fc3f['addEventListener']('click',()=>this['_resolve'](![])),_0x1e6d67['addEventListener']('click',()=>this['_resolve'](![])),_0x1c8b5b['addEventListener']('click',()=>this['_resolve'](!![])),_0x7f57a2['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x50773e=>{if(_0x50773e['key']==='Escape')_0x50773e['preventDefault'](),this['_resolve'](![]);else _0x50773e['key']==='Enter'&&(_0x50773e['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x346bbd,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x34be55=>{this['_resolvePromise']=_0x34be55,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x346bbd;const _0x2b1bcf=document['getElementById']('confirm-dialog-cancel'),_0x1ffc71=document['getElementById']('confirm-dialog-confirm');_0x2b1bcf['textContent']=cancelText,_0x1ffc71['textContent']=confirmText,_0x1ffc71['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1ffc71['focus']();});},'_resolve'(_0x358d3f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x358d3f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x141111,_0x1b64d5={}){this['container']=_0x141111,this['options']={'placeholder':_0x1b64d5['placeholder']||'Type\x20to\x20search...','maxItems':_0x1b64d5['maxItems']||0x64,'loadItems':_0x1b64d5['loadItems']||(async()=>[]),'renderItem':_0x1b64d5['renderItem']||(_0x593557=>({'primary':String(_0x593557),'secondary':''})),'onSelect':_0x1b64d5['onSelect']||(()=>{}),'filterItems':_0x1b64d5['filterItems']||null,'getItemValue':_0x1b64d5['getItemValue']||(_0x1d0482=>_0x1d0482),'sortItems':_0x1b64d5['sortItems']||null,'debounceMs':_0x1b64d5['debounceMs']||0xc8,'minCharsForSearch':_0x1b64d5['minCharsForSearch']||0x0,'emptyMessage':_0x1b64d5['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1b64d5['loadingMessage']||'Loading...','preload':_0x1b64d5['preload']!==![],'searchMode':_0x1b64d5['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',_0x29735b=>this['onBlur'](_0x29735b)),this['input']['addEventListener']('input',_0x5e3d85=>this['onInput'](_0x5e3d85)),this['input']['addEventListener']('keydown',_0x199555=>this['onKeydown'](_0x199555)),this['clearBtn']['addEventListener']('mousedown',_0x37d126=>{_0x37d126['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x43ade5=>{_0x43ade5['preventDefault']();}),document['addEventListener']('click',_0xc7d31c=>{!this['wrapper']['contains'](_0xc7d31c['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(_0x294182){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x294182);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x466dc9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xe4717a){const _0x2b80c9=_0xe4717a['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b80c9);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b80c9):this['loadAndShow'](_0x2b80c9);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4108c8){switch(_0x4108c8['key']){case'ArrowDown':_0x4108c8['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4108c8['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4108c8['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4108c8['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5c8e8e){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5d3899=this['selectedIndex']+_0x5c8e8e;if(_0x5d3899>=0x0&&_0x5d3899<this['filteredItems']['length']){this['selectedIndex']=_0x5d3899,this['updateSelectionHighlight']();const _0xaddc73=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xaddc73[this['selectedIndex']]&&_0xaddc73[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4ab843=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4ab843['forEach']((_0x1b3e06,_0x1f7f1a)=>{_0x1b3e06['classList']['toggle']('keyboard-selected',_0x1f7f1a===this['selectedIndex']);});}async['loadAndShow'](_0x2db2ab){this['showLoading']();try{const _0x44af0a=await this['options']['loadItems'](_0x2db2ab);if(this['options']['searchMode']==='server'){let _0x3b42da=_0x44af0a;this['options']['sortItems']&&(_0x3b42da=this['options']['sortItems']([..._0x44af0a]));this['filteredItems']=_0x3b42da;const _0x13121a=this['filteredItems']['length']>=this['options']['maxItems'];_0x13121a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x13121a),this['open']();}else this['allItems']=_0x44af0a,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2db2ab);}catch(_0x14501f){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x14501f),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x419a75){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x419a75):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x23e326=this['filteredItems']['length']>=this['options']['maxItems'];_0x23e326&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x23e326),this['open']();}['renderItems'](_0x279744){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']((_0x352472,_0x4beccd)=>{const _0x4809fa=document['createElement']('div');_0x4809fa['className']='autocomplete-select-item',_0x4809fa['setAttribute']('role','option'),_0x4809fa['setAttribute']('data-index',_0x4beccd);const _0x22bf2b=this['options']['renderItem'](_0x352472);let _0x4cbf4e='';_0x22bf2b['icon']&&(_0x4cbf4e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x22bf2b['iconClass']||'')+'\x22>'+_0x22bf2b['icon']+'</span>'),_0x4809fa['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4cbf4e+'\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'](_0x22bf2b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x22bf2b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x22bf2b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x4809fa['addEventListener']('click',()=>{this['selectItem'](_0x352472);}),_0x4809fa['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4beccd,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x4809fa);}),_0x279744?(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'](_0x530be6){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x530be6)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x510cd1){this['selectedItem']=_0x510cd1;const _0xe1a64f=this['options']['renderItem'](_0x510cd1);this['input']['value']=_0xe1a64f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x510cd1);}['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'](_0x5ba19a){if(_0x5ba19a){this['selectedItem']=_0x5ba19a;const _0x4d4127=this['options']['renderItem'](_0x5ba19a);this['input']['value']=_0x4d4127['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x57ffea){this['allItems']=_0x57ffea,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'](_0x3ed5eb){this['input']['placeholder']=_0x3ed5eb;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x56aa56=null){const _0x2c6bbf=document['getElementById']('admin-menu-container'),_0x11c762=document['getElementById']('admin-menu-btn'),_0x386884=document['getElementById']('admin-menu');if(!_0x2c6bbf||!_0x11c762||!_0x386884)return;try{!_0x56aa56&&(_0x56aa56=await API['getCurrentUser']());if(_0x56aa56){const _0x533d04=window['Permissions'],_0x4daa09=_0x533d04['hasServerPermission'](_0x56aa56,'*')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:manage')||_0x533d04['hasServerPermission'](_0x56aa56,'users:create')||_0x533d04['hasTeamPermission'](_0x56aa56,'teams:manage')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:view_details');if(!_0x4daa09)return;_0x2c6bbf['hidden']=![];if(!_0x533d04['hasServerPermission'](_0x56aa56,'*')){const _0x2a67e3=_0x386884['querySelectorAll']('.admin-menu-item');_0x2a67e3['forEach'](_0x217945=>{const _0x425597=_0x217945['querySelector']('.option-text')?.['textContent']?.['trim']();_0x425597==='Users'&&!_0x533d04['hasServerPermission'](_0x56aa56,'users:create')&&(_0x217945['hidden']=!![]),_0x425597==='Skills'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Settings'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Health'&&(_0x217945['hidden']=!![]),_0x425597==='Git\x20History'&&(_0x217945['hidden']=!![]),_0x425597==='Roles'&&(_0x217945['hidden']=!![]);});}_0x11c762['addEventListener']('click',_0x38a687=>{_0x38a687['stopPropagation']();const _0x1fa77c=document['getElementById']('actions-menu');if(_0x1fa77c)_0x1fa77c['hidden']=!![];_0x386884['hidden']=!_0x386884['hidden'];}),document['addEventListener']('click',_0x53d25f=>{!_0x386884['hidden']&&!_0x11c762['contains'](_0x53d25f['target'])&&!_0x386884['contains'](_0x53d25f['target'])&&(_0x386884['hidden']=!![]);}),document['addEventListener']('keydown',_0x77422d=>{_0x77422d['key']==='Escape'&&!_0x386884['hidden']&&(_0x386884['hidden']=!![]);});const _0x28c159=document['getElementById']('server-health-btn');_0x28c159&&_0x28c159['addEventListener']('click',async()=>{_0x386884['hidden']=!![];const {openServerHealthModal:_0x1097a9}=await import('./server-health.js');_0x1097a9();});}}catch(_0x431d7f){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x431d7f['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};