@profoundlogic/coderflow-server 0.6.8 → 0.6.9

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 (172) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  62. package/dist/lib/model-fetcher.js +1 -1
  63. package/dist/lib/notifications.js +1 -1
  64. package/dist/lib/objective-context.js +1 -1
  65. package/dist/lib/oidc-auth.js +1 -1
  66. package/dist/lib/oidc-device-flow.js +1 -1
  67. package/dist/lib/passwordTokens.js +1 -1
  68. package/dist/lib/permission-resolver.js +1 -1
  69. package/dist/lib/pin-cascade.js +1 -1
  70. package/dist/lib/provider-accounts.js +1 -1
  71. package/dist/lib/provider-oauth.js +1 -1
  72. package/dist/lib/provider-profile.js +1 -1
  73. package/dist/lib/provider-token-refresh.js +1 -1
  74. package/dist/lib/rbac-user-state.js +1 -1
  75. package/dist/lib/request-url.js +1 -1
  76. package/dist/lib/rewind.js +1 -1
  77. package/dist/lib/role-definitions.js +1 -1
  78. package/dist/lib/roles.js +1 -1
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-aliases.js +1 -1
  84. package/dist/lib/task-name-format.js +1 -1
  85. package/dist/lib/task-name-generator.js +1 -1
  86. package/dist/lib/task-source-metadata.js +1 -1
  87. package/dist/lib/teams.js +1 -1
  88. package/dist/lib/user-git-oauth.js +1 -1
  89. package/dist/lib/user-git-tokens.js +1 -1
  90. package/dist/lib/users.js +1 -1
  91. package/dist/middleware/requireAuth.js +1 -1
  92. package/dist/middleware/requireInit.js +1 -1
  93. package/dist/middleware/requirePermission.js +1 -1
  94. package/dist/package.json +1 -1
  95. package/dist/playwright.config.js +1 -1
  96. package/dist/playwright.task-terminal.config.js +1 -1
  97. package/dist/routes/apiKeys.js +1 -1
  98. package/dist/routes/auth-oidc.js +1 -1
  99. package/dist/routes/auth.js +1 -1
  100. package/dist/routes/automations.js +1 -1
  101. package/dist/routes/bindings.js +1 -1
  102. package/dist/routes/build.js +1 -1
  103. package/dist/routes/containers.js +1 -1
  104. package/dist/routes/deploy-task.js +1 -1
  105. package/dist/routes/environment-management.js +1 -1
  106. package/dist/routes/environments.js +1 -1
  107. package/dist/routes/external-skills.js +1 -1
  108. package/dist/routes/git-credentials.js +1 -1
  109. package/dist/routes/git-oauth.js +1 -1
  110. package/dist/routes/git-provider-setup.js +1 -1
  111. package/dist/routes/health.js +1 -1
  112. package/dist/routes/jira.js +1 -1
  113. package/dist/routes/objective-management.js +1 -1
  114. package/dist/routes/password.js +1 -1
  115. package/dist/routes/prompt.js +1 -1
  116. package/dist/routes/provider-auth.js +1 -1
  117. package/dist/routes/qa.js +1 -1
  118. package/dist/routes/roles.js +1 -1
  119. package/dist/routes/settings.js +1 -1
  120. package/dist/routes/skill-management.js +1 -1
  121. package/dist/routes/skills.js +1 -1
  122. package/dist/routes/tasks.js +1 -1
  123. package/dist/routes/teams.js +1 -1
  124. package/dist/routes/templates.js +1 -1
  125. package/dist/routes/test-task.js +1 -1
  126. package/dist/routes/test.js +1 -1
  127. package/dist/routes/users.js +1 -1
  128. package/dist/routes/visualizations.js +1 -1
  129. package/dist/scripts/create-user.js +1 -1
  130. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  131. package/dist/start.js +1 -1
  132. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  133. package/dist/web-ui/public/activity-feed.js +1 -1
  134. package/dist/web-ui/public/activity-formatters.js +1 -1
  135. package/dist/web-ui/public/agent-event-parser.js +1 -1
  136. package/dist/web-ui/public/app.js +1 -1
  137. package/dist/web-ui/public/approve-dialog.js +1 -1
  138. package/dist/web-ui/public/automation-links.js +1 -1
  139. package/dist/web-ui/public/automation-schedule.js +1 -1
  140. package/dist/web-ui/public/comments-widget.js +1 -1
  141. package/dist/web-ui/public/diff-utils.js +1 -1
  142. package/dist/web-ui/public/environments.html +11 -8
  143. package/dist/web-ui/public/environments.js +1 -1
  144. package/dist/web-ui/public/feedback-widget.js +1 -1
  145. package/dist/web-ui/public/file-selection-tree.js +1 -1
  146. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  147. package/dist/web-ui/public/git-history.js +1 -1
  148. package/dist/web-ui/public/git-status.js +1 -1
  149. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  150. package/dist/web-ui/public/index.js +1 -1
  151. package/dist/web-ui/public/login.js +1 -1
  152. package/dist/web-ui/public/markdown-editor.js +1 -1
  153. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  154. package/dist/web-ui/public/modal-maximize.js +1 -1
  155. package/dist/web-ui/public/notifications.js +1 -1
  156. package/dist/web-ui/public/permissions.js +1 -1
  157. package/dist/web-ui/public/pr-dialog.js +1 -1
  158. package/dist/web-ui/public/roles.js +1 -1
  159. package/dist/web-ui/public/server-health.js +1 -1
  160. package/dist/web-ui/public/settings.js +1 -1
  161. package/dist/web-ui/public/setup-password.js +1 -1
  162. package/dist/web-ui/public/skills.js +1 -1
  163. package/dist/web-ui/public/sse-client.js +1 -1
  164. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  165. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  166. package/dist/web-ui/public/task.js +1 -1
  167. package/dist/web-ui/public/teams.js +1 -1
  168. package/dist/web-ui/public/terminal.js +1 -1
  169. package/dist/web-ui/public/theme.js +1 -1
  170. package/dist/web-ui/public/users.js +1 -1
  171. package/dist/web-ui/public/variant-grouping.js +1 -1
  172. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x16a5bb=window['location']['pathname'],_0x1166bd=_0x16a5bb['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1166bd)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1166bd[0x1]),_0x1166bd[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xdab3ea={}){const _0x57cd7f=new URLSearchParams();_0xdab3ea['userId']&&_0x57cd7f['set']('userId',String(_0xdab3ea['userId']));_0xdab3ea['automation']&&_0x57cd7f['set']('automation',String(_0xdab3ea['automation']));const _0x2b6e9b=API_BASE+'/tasks/stats'+(_0x57cd7f['toString']()?'?'+_0x57cd7f['toString']():''),_0x4a0fb3=await fetch(_0x2b6e9b);if(!_0x4a0fb3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4a0fb3['statusText']);return await _0x4a0fb3['json']();},async 'getTasks'(_0x4ba6d4={}){const _0x10309b=new URLSearchParams();_0x4ba6d4['status']&&_0x10309b['set']('status',String(_0x4ba6d4['status']));_0x4ba6d4['environment']&&_0x10309b['set']('environment',String(_0x4ba6d4['environment']));_0x4ba6d4['automation']&&_0x10309b['set']('automation',String(_0x4ba6d4['automation']));if(_0x4ba6d4['include']){const _0x2487d4=Array['isArray'](_0x4ba6d4['include'])?_0x4ba6d4['include']['join'](','):String(_0x4ba6d4['include']);_0x2487d4&&_0x10309b['set']('include',_0x2487d4);}_0x4ba6d4['filter']&&_0x10309b['set']('filter',String(_0x4ba6d4['filter']));_0x4ba6d4['page']&&_0x10309b['set']('page',String(_0x4ba6d4['page']));_0x4ba6d4['limit']&&_0x10309b['set']('limit',String(_0x4ba6d4['limit']));_0x4ba6d4['userId']&&_0x10309b['set']('userId',String(_0x4ba6d4['userId']));_0x4ba6d4['search']&&_0x10309b['set']('search',String(_0x4ba6d4['search']));_0x4ba6d4['includeChildTasks']&&_0x10309b['set']('includeChildTasks','true');const _0x452868=API_BASE+'/tasks'+(_0x10309b['toString']()?'?'+_0x10309b['toString']():''),_0x4a1414=await fetch(_0x452868);if(!_0x4a1414['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4a1414['statusText']);return await _0x4a1414['json']();},async 'getAutomations'(_0x5b0899={}){const _0x582c33=new URLSearchParams();_0x5b0899['environment']&&_0x582c33['set']('environment',String(_0x5b0899['environment']));const _0x427adf=await fetch(API_BASE+'/api/automations'+(_0x582c33['toString']()?'?'+_0x582c33['toString']():''));if(!_0x427adf['ok']){const _0x4e17ac=await _0x427adf['json']()['catch'](()=>({}));throw new Error(_0x4e17ac['message']||_0x4e17ac['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x427adf['statusText']);}return await _0x427adf['json']();},async 'getAutomation'(_0x29324e){const _0x222d77=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x29324e));if(!_0x222d77['ok']){const _0x52209b=await _0x222d77['json']()['catch'](()=>({}));throw new Error(_0x52209b['message']||_0x52209b['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x222d77['statusText']);}return await _0x222d77['json']();},async 'createAutomation'(_0x3e7812){const _0x4e5ad9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e7812||{})});if(!_0x4e5ad9['ok']){const _0x2dac86=await _0x4e5ad9['json']()['catch'](()=>({}));throw new Error(_0x2dac86['message']||_0x2dac86['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x4e5ad9['statusText']);}return await _0x4e5ad9['json']();},async 'updateAutomation'(_0x77de56,_0x1b743f){const _0x5e02c3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x77de56),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b743f||{})});if(!_0x5e02c3['ok']){const _0xa9a115=await _0x5e02c3['json']()['catch'](()=>({}));throw new Error(_0xa9a115['message']||_0xa9a115['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x5e02c3['statusText']);}return await _0x5e02c3['json']();},async 'deleteAutomation'(_0x4e6e1c){const _0x5f2596=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e6e1c),{'method':'DELETE'});if(!_0x5f2596['ok']){const _0x564693=await _0x5f2596['json']()['catch'](()=>({}));throw new Error(_0x564693['message']||_0x564693['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5f2596['statusText']);}return await _0x5f2596['json']();},async 'triggerAutomation'(_0x14c910){const _0x4292fd=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x14c910)+'/trigger',{'method':'POST'});if(!_0x4292fd['ok']){const _0x3206fd=await _0x4292fd['json']()['catch'](()=>({}));throw new Error(_0x3206fd['message']||_0x3206fd['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4292fd['statusText']);}return await _0x4292fd['json']();},async 'setAutomationEnabled'(_0x37dede,_0x22e6aa){const _0x4571e7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x37dede)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x22e6aa})});if(!_0x4571e7['ok']){const _0x3b76ba=await _0x4571e7['json']()['catch'](()=>({}));throw new Error(_0x3b76ba['message']||_0x3b76ba['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4571e7['statusText']);}return await _0x4571e7['json']();},async 'getAutomationHistory'(_0x1d5554,_0x2fe09=0x32){const _0x5c16a1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1d5554)+'/history?limit='+encodeURIComponent(String(_0x2fe09)));if(!_0x5c16a1['ok']){const _0x44cf61=await _0x5c16a1['json']()['catch'](()=>({}));throw new Error(_0x44cf61['message']||_0x44cf61['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5c16a1['statusText']);}return await _0x5c16a1['json']();},async 'getTask'(_0x34e931,_0x16a293={}){const _0x27a30e=new URLSearchParams();if(_0x16a293['include']){const _0x255f25=Array['isArray'](_0x16a293['include'])?_0x16a293['include']['join'](','):String(_0x16a293['include']);if(_0x255f25)_0x27a30e['set']('include',_0x255f25);}const _0x12afd6=await fetch(API_BASE+'/tasks/'+_0x34e931+(_0x27a30e['toString']()?'?'+_0x27a30e['toString']():''));if(!_0x12afd6['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x12afd6['statusText']);return await _0x12afd6['json']();},async 'getTaskResults'(_0x21ffb6){const _0x291738=await fetch(API_BASE+'/tasks/'+_0x21ffb6+'/results');if(!_0x291738['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x291738['statusText']);return await _0x291738['json']();},async 'getTaskPatches'(_0x4b9f66){const _0x5bea7e=await fetch(API_BASE+'/tasks/'+_0x4b9f66+'/patches');if(!_0x5bea7e['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5bea7e['statusText']);return await _0x5bea7e['json']();},async 'getTaskAttachments'(_0x2228c0){const _0x522b74=await fetch(API_BASE+'/tasks/'+_0x2228c0+'/attachments');if(!_0x522b74['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x522b74['statusText']);return await _0x522b74['json']();},async 'uploadAttachments'(_0x37ed01,_0x3f005e){const _0x271fb5=new FormData();for(const _0x5f59df of _0x3f005e){_0x271fb5['append']('attachments',_0x5f59df);}const _0x2e8fec=await fetch(API_BASE+'/tasks/'+_0x37ed01+'/attachments',{'method':'POST','body':_0x271fb5});if(!_0x2e8fec['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2e8fec['statusText']);return await _0x2e8fec['json']();},async 'isAINameGenerationAvailable'(){try{const _0x52f359=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x52f359['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x52f359['json']();}catch(_0xa6d14d){return{'available':![],'reason':_0xa6d14d['message']};}},async 'generateTaskName'(_0xcc1eb7){try{const _0x7b28e4=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0xcc1eb7})});return await _0x7b28e4['json']();}catch(_0x50c24e){return{'success':![],'error':_0x50c24e['message']};}},async 'createTask'(_0x434094){let _0x46305c,_0x5957ce={};if(_0x434094['files']&&_0x434094['files']['length']>0x0){const _0x41dfdf=new FormData();for(const [_0x39113a,_0x65f3fb]of Object['entries'](_0x434094)){if(_0x39113a!=='files'){if(_0x65f3fb==null)continue;typeof _0x65f3fb==='object'?_0x41dfdf['append'](_0x39113a,JSON['stringify'](_0x65f3fb)):_0x41dfdf['append'](_0x39113a,String(_0x65f3fb));}}for(const _0x481ff9 of _0x434094['files']){_0x41dfdf['append']('attachments',_0x481ff9);}_0x46305c=_0x41dfdf;}else _0x5957ce['Content-Type']='application/json',_0x46305c=JSON['stringify'](_0x434094);const _0x6c5c19=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5957ce,'body':_0x46305c});if(!_0x6c5c19['ok']){const _0x17173a=await _0x6c5c19['json'](),_0x38bb29=new Error(_0x17173a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x6c5c19['statusText']),{message:_0x1a171d,..._0x4e8ec4}=_0x17173a;Object['assign'](_0x38bb29,_0x4e8ec4);throw _0x38bb29;}return await _0x6c5c19['json']();},async 'createTestTask'(_0xd23af0){const _0x16636d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd23af0)});if(!_0x16636d['ok']){const _0x433907=await _0x16636d['json']();throw new Error(_0x433907['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x16636d['statusText']);}return await _0x16636d['json']();},async 'createEphemeralTest'(_0x307b54){const _0x4e5972=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x307b54)});if(!_0x4e5972['ok']){const _0x35f82a=await _0x4e5972['json']();throw new Error(_0x35f82a['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4e5972['statusText']);}return await _0x4e5972['json']();},async 'createDeployTask'(_0x3b1b64){const _0x5dd642=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b1b64)});if(!_0x5dd642['ok']){const _0x276d40=await _0x5dd642['json']();throw new Error(_0x276d40['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5dd642['statusText']);}return await _0x5dd642['json']();},async 'getEnvironments'(){const _0xf306bf=await fetch(API_BASE+'/environments');if(!_0xf306bf['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xf306bf['statusText']);return await _0xf306bf['json']();},async 'getEnvironment'(_0xbcf113){const _0x222acc=await fetch(API_BASE+'/environments/'+_0xbcf113);if(!_0x222acc['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x222acc['statusText']);return await _0x222acc['json']();},async 'getEnvironmentRepoHistory'(_0xc0a49f,_0x2b8605,_0x2fc718={}){if(!_0xc0a49f||!_0x2b8605)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x27153c=new URLSearchParams();if(_0x2fc718['limit'])_0x27153c['set']('limit',String(_0x2fc718['limit']));if(_0x2fc718['offset'])_0x27153c['set']('offset',String(_0x2fc718['offset']));if(_0x2fc718['search'])_0x27153c['set']('search',String(_0x2fc718['search']));if(_0x2fc718['branch'])_0x27153c['set']('branch',String(_0x2fc718['branch']));const _0x4c17c9=API_BASE+'/environments/'+encodeURIComponent(_0xc0a49f)+'/repos/'+encodeURIComponent(_0x2b8605)+'/git/history',_0x4b8c3c=await fetch(''+_0x4c17c9+(_0x27153c['toString']()?'?'+_0x27153c['toString']():''));if(!_0x4b8c3c['ok']){const _0x4de6a0=await _0x4b8c3c['json']()['catch'](()=>({}));throw new Error(_0x4de6a0['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4b8c3c['statusText']);}return await _0x4b8c3c['json']();},async 'getEnvironmentRepoCommit'(_0x3879ce,_0x258fbf,_0xbf0d41){if(!_0x3879ce||!_0x258fbf||!_0xbf0d41)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4bee1a=API_BASE+'/environments/'+encodeURIComponent(_0x3879ce)+'/repos/'+encodeURIComponent(_0x258fbf)+'/git/commits/'+encodeURIComponent(_0xbf0d41),_0xce2de2=await fetch(_0x4bee1a);if(!_0xce2de2['ok']){const _0x41e758=await _0xce2de2['json']()['catch'](()=>({}));throw new Error(_0x41e758['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0xce2de2['statusText']);}return await _0xce2de2['json']();},async 'getEnvironmentRepoBranches'(_0x2ddfcf,_0x31cc08){if(!_0x2ddfcf||!_0x31cc08)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x506b17=API_BASE+'/environments/'+encodeURIComponent(_0x2ddfcf)+'/repos/'+encodeURIComponent(_0x31cc08)+'/git/branches',_0x447b5d=await fetch(_0x506b17);if(!_0x447b5d['ok']){const _0x585ac5=await _0x447b5d['json']()['catch'](()=>({}));throw new Error(_0x585ac5['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x447b5d['statusText']);}return await _0x447b5d['json']();},async 'revertEnvironmentRepoCommit'(_0x137770,_0x3a26c7,_0x2ec324,_0x2b3fe4={}){if(!_0x137770||!_0x3a26c7||!_0x2ec324)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2b1c62=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x137770)+'/repos/'+encodeURIComponent(_0x3a26c7)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2ec324,..._0x2b3fe4})});if(!_0x2b1c62['ok']){const _0x61a521=await _0x2b1c62['json']()['catch'](()=>({}));throw new Error(_0x61a521['message']||_0x61a521['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2b1c62['statusText']);}return await _0x2b1c62['json']();},async 'getTemplates'(_0x14b136={}){const _0x4bc08c=new URLSearchParams();if(_0x14b136['include']){const _0x1d06d6=Array['isArray'](_0x14b136['include'])?_0x14b136['include']['join'](','):String(_0x14b136['include']);if(_0x1d06d6)_0x4bc08c['set']('include',_0x1d06d6);}const _0x2d319f=await fetch(API_BASE+'/templates'+(_0x4bc08c['toString']()?'?'+_0x4bc08c['toString']():''));if(!_0x2d319f['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2d319f['statusText']);return await _0x2d319f['json']();},async 'getTemplatesForEnvironment'(_0x29c7e8,_0xc27596={}){if(!_0x29c7e8)throw new Error('Environment\x20name\x20is\x20required');const _0x22b6e2=new URLSearchParams();if(_0xc27596['include']){const _0x5af590=Array['isArray'](_0xc27596['include'])?_0xc27596['include']['join'](','):String(_0xc27596['include']);if(_0x5af590)_0x22b6e2['set']('include',_0x5af590);}const _0x2dc0a9=await fetch(API_BASE+'/templates/'+_0x29c7e8+(_0x22b6e2['toString']()?'?'+_0x22b6e2['toString']():''));if(!_0x2dc0a9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x29c7e8+':\x20'+_0x2dc0a9['statusText']);return await _0x2dc0a9['json']();},async 'getTemplate'(_0x3b4d56,_0x1ef3c2,_0x12ee8a={}){if(!_0x3b4d56||!_0x1ef3c2)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0xe1e7b5=new URLSearchParams();if(_0x12ee8a['include']){const _0x4db40f=Array['isArray'](_0x12ee8a['include'])?_0x12ee8a['include']['join'](','):String(_0x12ee8a['include']);if(_0x4db40f)_0xe1e7b5['set']('include',_0x4db40f);}const _0x453a12=await fetch(API_BASE+'/templates/'+_0x3b4d56+'/'+_0x1ef3c2+(_0xe1e7b5['toString']()?'?'+_0xe1e7b5['toString']():''));if(!_0x453a12['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x453a12['statusText']);return await _0x453a12['json']();},async 'getTaskLogs'(_0x165d3a,_0x57c0b8={}){if(!_0x165d3a)throw new Error('Task\x20ID\x20is\x20required');const _0x56060a=new URLSearchParams();_0x57c0b8['tail']&&_0x56060a['set']('tail',String(_0x57c0b8['tail']));const _0x42c386=await fetch(API_BASE+'/tasks/'+_0x165d3a+'/logs'+(_0x56060a['toString']()?'?'+_0x56060a['toString']():''));if(!_0x42c386['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x42c386['statusText']);return await _0x42c386['text']();},async 'getContainers'(){const _0x5e4d0f=await fetch(API_BASE+'/containers');if(!_0x5e4d0f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5e4d0f['statusText']);return await _0x5e4d0f['json']();},async 'getContainer'(_0x577b3b){const _0x33e663=await fetch(API_BASE+'/containers/'+_0x577b3b);if(!_0x33e663['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33e663['statusText']);return await _0x33e663['json']();},async 'startInteractiveContainer'(_0x2dc9c3){const _0x312882=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc9c3)});if(!_0x312882['ok']){const _0x51b62c=await _0x312882['json']()['catch'](()=>({}));throw new Error(_0x51b62c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x312882['statusText']);}return await _0x312882['json']();},async 'stopContainer'(_0x5e2053){const _0x4d1954=await fetch(API_BASE+'/containers/'+_0x5e2053,{'method':'DELETE'});if(!_0x4d1954['ok']){const _0x13f496=await _0x4d1954['json']()['catch'](()=>({}));throw new Error(_0x13f496['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4d1954['statusText']);}return await _0x4d1954['json']();},async 'stopTask'(_0x29586f){if(!_0x29586f)throw new Error('Task\x20ID\x20is\x20required');const _0x385f1e=await fetch(API_BASE+'/tasks/'+_0x29586f+'/stop',{'method':'POST'});if(!_0x385f1e['ok']){const _0x186518=await _0x385f1e['json']()['catch'](()=>({}));throw new Error(_0x186518['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x385f1e['statusText']);}return await _0x385f1e['json']();},async 'interruptTask'(_0x347371){if(!_0x347371)throw new Error('Task\x20ID\x20is\x20required');const _0x1c4069=await fetch(API_BASE+'/tasks/'+_0x347371+'/interrupt',{'method':'POST'});if(!_0x1c4069['ok']){const _0x2408cb=await _0x1c4069['json']()['catch'](()=>({}));throw new Error(_0x2408cb['error']||_0x2408cb['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x1c4069['statusText']);}return await _0x1c4069['json']();},async 'startTask'(_0x165412){if(!_0x165412)throw new Error('Task\x20ID\x20is\x20required');const _0x5125cb=await fetch(API_BASE+'/tasks/'+_0x165412+'/start',{'method':'POST'});if(!_0x5125cb['ok']){const _0x2102a9=await _0x5125cb['json']()['catch'](()=>({}));throw new Error(_0x2102a9['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5125cb['statusText']);}return await _0x5125cb['json']();},async 'deleteTask'(_0x1d69ee){if(!_0x1d69ee)throw new Error('Task\x20ID\x20is\x20required');const _0x48a762=await fetch(API_BASE+'/tasks/'+_0x1d69ee,{'method':'DELETE'});if(!_0x48a762['ok']){const _0x21467a=await _0x48a762['json']()['catch'](()=>({}));throw new Error(_0x21467a['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x48a762['statusText']);}return await _0x48a762['json']();},async 'refreshTasksFromDisk'(){const _0x3678e3=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3678e3['ok']){const _0x441e84=await _0x3678e3['json']()['catch'](()=>({}));throw new Error(_0x441e84['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3678e3['statusText']);}return await _0x3678e3['json']();},async 'approveTask'(_0x3638b4,_0x458334={}){if(!_0x3638b4)throw new Error('Task\x20ID\x20is\x20required');const _0x52c48e={'commit_message':_0x458334['commit_message']||'','pull':_0x458334['pull']??![],'push':_0x458334['push']??![]};_0x458334['new_branch']&&(_0x52c48e['new_branch']=_0x458334['new_branch']);const _0x4a77c6=await fetch(API_BASE+'/tasks/'+_0x3638b4+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52c48e)});if(!_0x4a77c6['ok']){const _0x484f89=await _0x4a77c6['json']()['catch'](()=>({}));let _0x2de24e=_0x484f89['error']||_0x484f89['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x4a77c6['statusText'];if(_0x484f89['results']&&Array['isArray'](_0x484f89['results'])){const _0x233467=_0x484f89['results']['filter'](_0x8df383=>!_0x8df383['success']&&_0x8df383['error']);_0x233467['length']>0x0&&(_0x2de24e=_0x233467[0x0]['error']);}throw new Error(_0x2de24e);}return await _0x4a77c6['json']();},async 'getPullRequestInfo'(_0x44b10c){if(!_0x44b10c)throw new Error('Task\x20ID\x20is\x20required');const _0x31b055=await fetch(API_BASE+'/tasks/'+_0x44b10c+'/pull-request-info');if(!_0x31b055['ok']){const _0x20888b=await _0x31b055['json']()['catch'](()=>({}));throw new Error(_0x20888b['error']||_0x20888b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x31b055['statusText']);}return await _0x31b055['json']();},async 'createPullRequests'(_0x1aeeb6,_0x28a4e2){if(!_0x1aeeb6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28a4e2||!Array['isArray'](_0x28a4e2))throw new Error('repos\x20array\x20is\x20required');const _0x3683e7=await fetch(API_BASE+'/tasks/'+_0x1aeeb6+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x28a4e2})});if(!_0x3683e7['ok']){const _0x5a9670=await _0x3683e7['json']()['catch'](()=>({}));let _0x1d3a4c=_0x5a9670['error']||_0x5a9670['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x3683e7['statusText'];if(_0x5a9670['results']&&Array['isArray'](_0x5a9670['results'])){const _0x5e3614=_0x5a9670['results']['filter'](_0x1f30f4=>!_0x1f30f4['success']&&_0x1f30f4['error']);_0x5e3614['length']>0x0&&(_0x1d3a4c=_0x5e3614[0x0]['error']);}throw new Error(_0x1d3a4c);}return await _0x3683e7['json']();},async 'syncRepos'(_0x37b37e){if(!_0x37b37e)throw new Error('Task\x20ID\x20is\x20required');const _0x467486=await fetch(API_BASE+'/tasks/'+_0x37b37e+'/sync-repos',{'method':'POST'});if(!_0x467486['ok']){const _0x1a5a92=await _0x467486['json']()['catch'](()=>({}));throw new Error(_0x1a5a92['error']||_0x1a5a92['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x467486['statusText']);}return await _0x467486['json']();},async 'getIbmiSyncInfo'(_0x36ed93){if(!_0x36ed93)throw new Error('Task\x20ID\x20is\x20required');const _0x1594c4=await fetch(API_BASE+'/tasks/'+_0x36ed93+'/ibmi-sync-info');if(!_0x1594c4['ok']){const _0x555c84=await _0x1594c4['json']()['catch'](()=>({}));throw new Error(_0x555c84['error']||_0x555c84['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1594c4['json']();},async 'getSyncFiles'(_0xcf8bd8){if(!_0xcf8bd8)throw new Error('Task\x20ID\x20is\x20required');const _0x5d4c59=await fetch(API_BASE+'/tasks/'+_0xcf8bd8+'/sync-to-ibmi/files');if(!_0x5d4c59['ok']){const _0xccc1aa=await _0x5d4c59['json']()['catch'](()=>({}));throw new Error(_0xccc1aa['error']||_0xccc1aa['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5d4c59['json']();},async 'syncToIbmi'(_0x54ae38,_0x550366,_0x3b7f5a=null,_0x573f8b=null,_0xefef92=null){if(!_0x54ae38)throw new Error('Task\x20ID\x20is\x20required');const _0x111789={'library':_0x550366};if(_0x3b7f5a)_0x111789['user']=_0x3b7f5a;if(_0x573f8b)_0x111789['password']=_0x573f8b;if(_0xefef92)_0x111789['files']=_0xefef92;const _0x42834f=await fetch(API_BASE+'/tasks/'+_0x54ae38+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x111789)});if(!_0x42834f['ok']){const _0x422c47=await _0x42834f['json']()['catch'](()=>({}));throw new Error(_0x422c47['error']||_0x422c47['message']||'Sync\x20failed');}return await _0x42834f['json']();},async 'getIbmiSyncLog'(_0x5b2c6e){if(!_0x5b2c6e)throw new Error('Task\x20ID\x20is\x20required');const _0x1706e3=await fetch(API_BASE+'/tasks/'+_0x5b2c6e+'/ibmi-sync-log');if(!_0x1706e3['ok']){const _0x4843c5=await _0x1706e3['json']()['catch'](()=>({}));throw new Error(_0x4843c5['error']||_0x4843c5['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1706e3['json']();},async 'pullChanges'(_0x5b50a1){if(!_0x5b50a1)throw new Error('Task\x20ID\x20is\x20required');const _0x10256b=await fetch(API_BASE+'/tasks/'+_0x5b50a1+'/pull-changes',{'method':'POST'});if(!_0x10256b['ok']){const _0x55a998=await _0x10256b['json']()['catch'](()=>({}));throw new Error(_0x55a998['error']||_0x55a998['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x10256b['statusText']);}return await _0x10256b['json']();},async 'readFile'(_0x49df15,_0x23ce0e){if(!_0x49df15)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23ce0e)throw new Error('File\x20path\x20is\x20required');const _0x421c6b=await fetch(API_BASE+'/tasks/'+_0x49df15+'/files?path='+encodeURIComponent(_0x23ce0e));if(!_0x421c6b['ok']){const _0x40de73=await _0x421c6b['json']()['catch'](()=>({}));throw new Error(_0x40de73['error']||_0x40de73['message']||'Failed\x20to\x20read\x20file:\x20'+_0x421c6b['statusText']);}return await _0x421c6b['json']();},'getTaskFileDownloadUrl'(_0x12552f,_0x34ca2f){if(!_0x12552f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34ca2f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x12552f+'/files/download?path='+encodeURIComponent(_0x34ca2f);},async 'writeFile'(_0x5a6d26,_0x49955b,_0x945752){if(!_0x5a6d26)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49955b)throw new Error('File\x20path\x20is\x20required');if(_0x945752===undefined)throw new Error('Content\x20is\x20required');const _0x2f157b=await fetch(API_BASE+'/tasks/'+_0x5a6d26+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49955b,'content':_0x945752})});if(!_0x2f157b['ok']){const _0x21dc3e=await _0x2f157b['json']()['catch'](()=>({}));throw new Error(_0x21dc3e['error']||_0x21dc3e['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2f157b['statusText']);}return await _0x2f157b['json']();},async 'uploadTaskFiles'(_0x17682d,_0x12d1b8,_0x73092f){if(!_0x17682d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x12d1b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x73092f||_0x73092f['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4b6a76=new FormData();_0x4b6a76['append']('targetDir',_0x12d1b8);for(const _0x54c681 of _0x73092f){_0x4b6a76['append']('files',_0x54c681,_0x54c681['name']);}const _0x279e07=await fetch(API_BASE+'/tasks/'+_0x17682d+'/files/upload',{'method':'POST','body':_0x4b6a76});if(!_0x279e07['ok']){const _0x2ed425=await _0x279e07['json']()['catch'](()=>({}));throw new Error(_0x2ed425['error']||_0x2ed425['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x279e07['statusText']);}return await _0x279e07['json']();},async 'deleteFile'(_0x4a2e47,_0x20211e){if(!_0x4a2e47)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20211e)throw new Error('File\x20path\x20is\x20required');const _0x5e5aa0=await fetch(API_BASE+'/tasks/'+_0x4a2e47+'/files?path='+encodeURIComponent(_0x20211e),{'method':'DELETE'});if(!_0x5e5aa0['ok']){const _0x1c1834=await _0x5e5aa0['json']()['catch'](()=>({}));throw new Error(_0x1c1834['error']||_0x1c1834['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5e5aa0['statusText']);}return await _0x5e5aa0['json']();},async 'discardFile'(_0x370a1a,_0x3f7fcb,_0x177409){if(!_0x370a1a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f7fcb)throw new Error('File\x20path\x20is\x20required');if(!_0x177409)throw new Error('Repository\x20path\x20is\x20required');const _0x5813f6=await fetch(API_BASE+'/tasks/'+_0x370a1a+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3f7fcb,'repoPath':_0x177409})});if(!_0x5813f6['ok']){const _0x3fd3ee=await _0x5813f6['json']()['catch'](()=>({}));throw new Error(_0x3fd3ee['error']||_0x3fd3ee['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x5813f6['statusText']);}return await _0x5813f6['json']();},async 'followUpTask'(_0x20fad1,_0x276fae={}){if(!_0x20fad1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x276fae['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2bb725,_0x27d68e={};if(_0x276fae['files']&&_0x276fae['files']['length']>0x0){const _0x4b3c6f=new FormData();_0x4b3c6f['append']('instructions',_0x276fae['instructions']);for(const _0x1a406b of _0x276fae['files']){_0x4b3c6f['append']('attachments',_0x1a406b);}_0x2bb725=_0x4b3c6f;}else _0x27d68e['Content-Type']='application/json',_0x2bb725=JSON['stringify']({'instructions':_0x276fae['instructions']});const _0x49f8f4=await fetch(API_BASE+'/tasks/'+_0x20fad1+'/follow-up',{'method':'POST','headers':_0x27d68e,'body':_0x2bb725});if(!_0x49f8f4['ok']){const _0xaf1962=await _0x49f8f4['json']()['catch'](()=>({}));throw new Error(_0xaf1962['error']||_0xaf1962['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x49f8f4['statusText']);}return await _0x49f8f4['json']();},async 'getTaskRewindPoints'(_0x4ced13){if(!_0x4ced13)throw new Error('Task\x20ID\x20is\x20required');const _0x517f81=await fetch(API_BASE+'/tasks/'+_0x4ced13+'/rewind-points');if(!_0x517f81['ok']){const _0x45a595=await _0x517f81['json']()['catch'](()=>({}));throw new Error(_0x45a595['error']||_0x45a595['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x517f81['statusText']);}return await _0x517f81['json']();},async 'rewindTask'(_0x4c7a04,_0x2fb75f={}){if(!_0x4c7a04)throw new Error('Task\x20ID\x20is\x20required');const _0x2dd541=Number['isInteger'](_0x2fb75f['targetFollowUpCount'])?_0x2fb75f['targetFollowUpCount']:0x0,_0x45a5a9={'targetFollowUpCount':_0x2dd541};typeof _0x2fb75f['instructions']==='string'&&_0x2fb75f['instructions']['trim']()&&(_0x45a5a9['instructions']=_0x2fb75f['instructions']['trim']());typeof _0x2fb75f['rewindFiles']==='boolean'&&(_0x45a5a9['rewindFiles']=_0x2fb75f['rewindFiles']);const _0x3c43dc=await fetch(API_BASE+'/tasks/'+_0x4c7a04+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45a5a9)});if(!_0x3c43dc['ok']){const _0x146cba=await _0x3c43dc['json']()['catch'](()=>({}));throw new Error(_0x146cba['error']||_0x146cba['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3c43dc['statusText']);}return await _0x3c43dc['json']();},async 'login'(_0x15766c,_0x2c7dd3){const _0x30aa0c=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x15766c,'password':_0x2c7dd3})});if(!_0x30aa0c['ok']){const _0x269f9d=await _0x30aa0c['json']();throw new Error(_0x269f9d['message']||'Login\x20failed');}return await _0x30aa0c['json']();},async 'logout'(){const _0x1b0dba=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1b0dba['ok']){const _0x47ddae=await _0x1b0dba['json']();throw new Error(_0x47ddae['message']||'Logout\x20failed');}return await _0x1b0dba['json']();},async 'getCurrentUser'(){const _0x1225dd=await fetch(API_BASE+'/auth/me');if(!_0x1225dd['ok'])throw new Error('Not\x20authenticated');const _0x296fbe=await _0x1225dd['json']();return _0x296fbe['user'];},async 'getRolesInfo'(){const _0x14bf93=await fetch(API_BASE+'/users/roles');if(!_0x14bf93['ok']){const _0x5d26f9=await _0x14bf93['json']();throw new Error(_0x5d26f9['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x14bf93['json']();},async 'getUsers'(){const _0x39f625=await fetch(API_BASE+'/users');if(!_0x39f625['ok']){const _0x527ee6=await _0x39f625['json']();throw new Error(_0x527ee6['message']||'Failed\x20to\x20get\x20users');}return await _0x39f625['json']();},async 'getUser'(_0x43f269){const _0x24ca2b=await fetch(API_BASE+'/users/'+_0x43f269);if(!_0x24ca2b['ok']){const _0x2c3cde=await _0x24ca2b['json']();throw new Error(_0x2c3cde['message']||'Failed\x20to\x20get\x20user');}return await _0x24ca2b['json']();},async 'createUser'(_0x4daa85){const _0x1165ce=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4daa85)});if(!_0x1165ce['ok']){const _0x27b9f3=await _0x1165ce['json']();throw new Error(_0x27b9f3['message']||'Failed\x20to\x20create\x20user');}return await _0x1165ce['json']();},async 'updateUser'(_0x3ceca6,_0x39d1c0){const _0x3166f3=await fetch(API_BASE+'/users/'+_0x3ceca6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39d1c0)});if(!_0x3166f3['ok']){const _0x44b6ba=await _0x3166f3['json']();throw new Error(_0x44b6ba['message']||'Failed\x20to\x20update\x20user');}return await _0x3166f3['json']();},async 'deleteUser'(_0x4a6013){const _0x23456b=await fetch(API_BASE+'/users/'+_0x4a6013,{'method':'DELETE'});if(!_0x23456b['ok']){const _0x28a75e=await _0x23456b['json']();throw new Error(_0x28a75e['message']||'Failed\x20to\x20delete\x20user');}return await _0x23456b['json']();},async 'stopAllContainers'(){const _0x11326a=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1dabeb=await _0x11326a['json']()['catch'](()=>({}));if(!_0x11326a['ok'])throw new Error(_0x1dabeb['message']||_0x1dabeb['error']||'Failed\x20to\x20stop\x20containers');return _0x1dabeb;},async 'removeStoppedContainers'(){const _0xb1fd42=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x15164c=await _0xb1fd42['json']()['catch'](()=>({}));if(!_0xb1fd42['ok'])throw new Error(_0x15164c['message']||_0x15164c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x15164c;},async 'pruneDockerResources'(){const _0x4d8b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x47003c=await _0x4d8b22['json']()['catch'](()=>({}));if(!_0x4d8b22['ok'])throw new Error(_0x47003c['message']||_0x47003c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x47003c;},async 'createPasswordToken'(_0x47269d,_0x476d15='setup',_0x1cbe0d=![]){const _0x533ec0=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x47269d,'type':_0x476d15,'sendEmail':_0x1cbe0d})});if(!_0x533ec0['ok']){const _0x5640c8=await _0x533ec0['json']();throw new Error(_0x5640c8['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x533ec0['json']();},async 'getEmailConfig'(){const _0x3e49a3=await fetch(API_BASE+'/password/email-config');if(!_0x3e49a3['ok']){const _0x327801=await _0x3e49a3['json']();throw new Error(_0x327801['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3e49a3['json']();},async 'updateTaskName'(_0x36e4a6,_0x26dae9){const _0x3456a3=await fetch(API_BASE+'/tasks/'+_0x36e4a6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x26dae9})});if(!_0x3456a3['ok']){const _0x545280=await _0x3456a3['json']();throw new Error(_0x545280['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x3456a3['json']();},async 'pinTask'(_0x1c7ec2,_0x4511cb,_0x1be4cd=null){if(!_0x1c7ec2)throw new Error('Task\x20ID\x20is\x20required');const _0x36894f={'pinned':_0x4511cb};_0x1be4cd&&_0x1be4cd['length']>0x0&&(_0x36894f['additionalTaskIds']=_0x1be4cd);const _0x1c2489=await fetch(API_BASE+'/tasks/'+_0x1c7ec2+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36894f)});if(!_0x1c2489['ok']){const _0x4d6914=await _0x1c2489['json']();throw new Error(_0x4d6914['error']||'Failed\x20to\x20pin\x20task');}return await _0x1c2489['json']();},async 'setTaskWinner'(_0x37ebf2,_0x43d372,_0x10182c=[]){if(!_0x37ebf2)throw new Error('Task\x20ID\x20is\x20required');const _0xfc475b=await fetch(API_BASE+'/tasks/'+_0x37ebf2+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x43d372,'siblings':_0x10182c})});if(!_0xfc475b['ok']){const _0x2006fb=await _0xfc475b['json']();throw new Error(_0x2006fb['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xfc475b['json']();},async 'setTaskLoser'(_0x58ae58,_0x44157a){if(!_0x58ae58)throw new Error('Task\x20ID\x20is\x20required');const _0x2a3ec7=await fetch(API_BASE+'/tasks/'+_0x58ae58+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x44157a})});if(!_0x2a3ec7['ok']){const _0x93b631=await _0x2a3ec7['json']();throw new Error(_0x93b631['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2a3ec7['json']();},async 'createTaskGroup'(_0x29e317){const _0x11415f=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29e317)});if(!_0x11415f['ok']){const _0x22f022=await _0x11415f['json']();throw new Error(_0x22f022['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x11415f['json']();},async 'getTaskGroups'(_0x3127c0={}){const _0x188901=new URLSearchParams();if(_0x3127c0['userId'])_0x188901['set']('userId',String(_0x3127c0['userId']));if(_0x3127c0['status'])_0x188901['set']('status',String(_0x3127c0['status']));if(_0x3127c0['limit'])_0x188901['set']('limit',String(_0x3127c0['limit']));const _0x1bd8e9=API_BASE+'/tasks/groups'+(_0x188901['toString']()?'?'+_0x188901['toString']():''),_0x5aad7b=await fetch(_0x1bd8e9);if(!_0x5aad7b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x5aad7b['json']();},async 'getTaskGroup'(_0x33e9a1){const _0x525107=await fetch(API_BASE+'/tasks/groups/'+_0x33e9a1);if(!_0x525107['ok']){const _0x5f2c83=await _0x525107['json']();throw new Error(_0x5f2c83['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x525107['json']();},async 'updateTaskGroup'(_0x501319,_0x59200b,_0x5166a9){const _0x237de0=await fetch(API_BASE+'/tasks/'+_0x501319+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x59200b,'groupIndex':_0x5166a9})});if(!_0x237de0['ok']){const _0x306bee=await _0x237de0['json']();throw new Error(_0x306bee['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x237de0['json']();},async 'removeTaskFromGroup'(_0x950e58){return this['updateTaskGroup'](_0x950e58,null,null);},async 'deleteTaskGroup'(_0x3e68b8,_0x1eadba=![]){const _0x6d33de=_0x1eadba?'?deleteTasks=true':'',_0x2910c0=await fetch(API_BASE+'/tasks/groups/'+_0x3e68b8+_0x6d33de,{'method':'DELETE'});if(!_0x2910c0['ok']){const _0x346d38=await _0x2910c0['json']();throw new Error(_0x346d38['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5f0e35,_0x101a44){const _0x165d17=await fetch(API_BASE+'/tasks/groups/'+_0x5f0e35+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x101a44})});if(!_0x165d17['ok']){const _0x49acc3=await _0x165d17['json']();throw new Error(_0x49acc3['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x165d17['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4ba4e5){if(!_0x4ba4e5)throw new Error('Task\x20ID\x20is\x20required');const _0x32ad6d=await fetch(API_BASE+'/tasks/'+_0x4ba4e5+'/comments');if(!_0x32ad6d['ok']){const _0x39b98d=await _0x32ad6d['json']()['catch'](()=>({}));throw new Error(_0x39b98d['error']||'Failed\x20to\x20get\x20comments');}return await _0x32ad6d['json']();},async 'addComment'(_0x4115d2,_0x46962a){if(!_0x4115d2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x46962a)throw new Error('Comment\x20content\x20is\x20required');const _0x4fbb94=await fetch(API_BASE+'/tasks/'+_0x4115d2+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x46962a})});if(!_0x4fbb94['ok']){const _0x5b7202=await _0x4fbb94['json']()['catch'](()=>({}));throw new Error(_0x5b7202['error']||'Failed\x20to\x20add\x20comment');}return await _0x4fbb94['json']();},async 'updateComment'(_0x201be8,_0xbe843a,_0x543c81){if(!_0x201be8)throw new Error('Task\x20ID\x20is\x20required');if(!_0xbe843a)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x543c81)throw new Error('Comment\x20content\x20is\x20required');const _0x49f589=await fetch(API_BASE+'/tasks/'+_0x201be8+'/comments/'+_0xbe843a,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x543c81})});if(!_0x49f589['ok']){const _0x2746bc=await _0x49f589['json']()['catch'](()=>({}));throw new Error(_0x2746bc['error']||'Failed\x20to\x20update\x20comment');}return await _0x49f589['json']();},async 'deleteComment'(_0x32cd1e,_0x284fe4){if(!_0x32cd1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x284fe4)throw new Error('Comment\x20ID\x20is\x20required');const _0x46655c=await fetch(API_BASE+'/tasks/'+_0x32cd1e+'/comments/'+_0x284fe4,{'method':'DELETE'});if(!_0x46655c['ok']){const _0x3707fa=await _0x46655c['json']()['catch'](()=>({}));throw new Error(_0x3707fa['error']||'Failed\x20to\x20delete\x20comment');}return await _0x46655c['json']();},async 'createObjective'(_0x29eddf){const _0x500a80={'objective':!![],'name':_0x29eddf['name']||'','environment':_0x29eddf['environment']||null,'agents':_0x29eddf['agents']||[],'branches':_0x29eddf['branches']||{},'isPinned':_0x29eddf['isPinned']||![],'parentObjectiveId':_0x29eddf['parentObjectiveId']||null,'env_vars':_0x29eddf['envVars']||{},'parameters':{'instructions':_0x29eddf['instructions']||''},'files':_0x29eddf['files']||[],'jira':_0x29eddf['jira']||null};return this['createTask'](_0x500a80);},async 'updateObjective'(_0x15d0ad,_0x575fe5,_0x59beee=[],_0x2be62b=[]){let _0x592aaa,_0x261421={};const _0x5c986e={..._0x575fe5};_0x2be62b&&_0x2be62b['length']>0x0&&(_0x5c986e['removeAttachments']=_0x2be62b);if(_0x59beee&&_0x59beee['length']>0x0){const _0x27f57d=new FormData();for(const [_0x39345b,_0x2d61d9]of Object['entries'](_0x5c986e)){if(_0x2d61d9==null)continue;typeof _0x2d61d9==='object'?_0x27f57d['append'](_0x39345b,JSON['stringify'](_0x2d61d9)):_0x27f57d['append'](_0x39345b,String(_0x2d61d9));}for(const _0x36782b of _0x59beee){_0x27f57d['append']('attachments',_0x36782b);}_0x592aaa=_0x27f57d;}else _0x261421['Content-Type']='application/json',_0x592aaa=JSON['stringify'](_0x5c986e);const _0x1c6d1a=await fetch(API_BASE+'/tasks/'+_0x15d0ad,{'method':'PATCH','headers':_0x261421,'body':_0x592aaa});if(!_0x1c6d1a['ok']){const _0x5f486e=await _0x1c6d1a['json']();throw new Error(_0x5f486e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1c6d1a['json']();},async 'deleteObjective'(_0x14ae77){return this['deleteTask'](_0x14ae77);},async 'launchObjective'(_0xc2d6a8,_0x3d62eb={}){const _0x5c871d=await fetch(API_BASE+'/tasks/'+_0xc2d6a8+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d62eb)});if(!_0x5c871d['ok']){const _0xf37aea=await _0x5c871d['json']();throw new Error(_0xf37aea['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5c871d['json']();},async 'getObjectiveAttachments'(_0x5af6d6){return this['getTaskAttachments'](_0x5af6d6);},async 'createJudgeTask'({environment:_0x3bbe96,judgeAgent:_0x35451a,groupId:_0x4a301c,taskIds:_0x148068,judgeCustomInstructions:_0x310ca5,isPinned:_0x200351}){const _0x2ab129=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3bbe96,'judgeAgent':_0x35451a,'groupId':_0x4a301c,'taskIds':_0x148068,'judgeCustomInstructions':_0x310ca5,'isPinned':_0x200351})});if(!_0x2ab129['ok']){const _0x2a398a=await _0x2ab129['json']();throw new Error(_0x2a398a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2ab129['json']();},async 'getJudgeTasks'(_0x2aa7f1){const _0x8f4e80=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2aa7f1));if(!_0x8f4e80['ok']){const _0x58131f=await _0x8f4e80['json']();throw new Error(_0x58131f['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x8f4e80['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3688c0,_0x3389f7,_0x81d991=''){const _0x4d47e9=await fetch(API_BASE+'/tasks/'+_0x3688c0+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3389f7,'customPreamble':_0x81d991})});if(!_0x4d47e9['ok']){const _0x525550=await _0x4d47e9['json']();throw new Error(_0x525550['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x4d47e9['json']();},async 'getJiraConfig'(){const _0x2adc88=await fetch(API_BASE+'/jira/config');if(!_0x2adc88['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2adc88['json']();},async 'getJiraIssue'(_0x144976){const _0x284da2=await fetch(API_BASE+'/jira/issues/'+_0x144976);if(!_0x284da2['ok']){const _0x46c181=await _0x284da2['json']()['catch'](()=>({}));throw new Error(_0x46c181['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x284da2['statusText']);}return await _0x284da2['json']();},async 'searchJiraIssues'(_0x5b0d15,_0x3f4a69=0x14){const _0x10fcbf=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5b0d15,'maxResults':_0x3f4a69})});if(!_0x10fcbf['ok']){const _0x166e3a=await _0x10fcbf['json']()['catch'](()=>({}));throw new Error(_0x166e3a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x10fcbf['statusText']);}return await _0x10fcbf['json']();},async 'postJiraComment'(_0x10241d,_0x413bfc){const _0x5b788b=await fetch(API_BASE+'/jira/issues/'+_0x10241d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x413bfc})});if(!_0x5b788b['ok']){const _0x59196d=await _0x5b788b['json']()['catch'](()=>({}));throw new Error(_0x59196d['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5b788b['statusText']);}return await _0x5b788b['json']();},async 'getJiraComments'(_0x387d5b){const _0x5664cf=await fetch(API_BASE+'/jira/issues/'+_0x387d5b+'/comments');if(!_0x5664cf['ok']){const _0x3bde7a=await _0x5664cf['json']()['catch'](()=>({}));throw new Error(_0x3bde7a['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5664cf['statusText']);}return await _0x5664cf['json']();},async 'promptParameter'({environment:_0x4244af,command:_0x5b844d,parser:parser='json'}){const _0x2c6be2=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4244af,'command':_0x5b844d,'parser':parser})});if(!_0x2c6be2['ok']){const _0x1c2db5=await _0x2c6be2['json']()['catch'](()=>({}));throw new Error(_0x1c2db5['message']||_0x1c2db5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2c6be2['statusText']);}return await _0x2c6be2['json']();},async 'promptParameterStream'(_0x331e46,_0x1fdd21){const _0x190f01=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x331e46)});if(!_0x190f01['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x190f01['statusText']);const _0x3f766f=_0x190f01['body']['getReader'](),_0x1e13d4=new TextDecoder();let _0x22442a='';return new Promise((_0xc6885b,_0x123033)=>{const _0x2beff3=async()=>{try{const {done:_0xb56072,value:_0x36afb9}=await _0x3f766f['read']();if(_0xb56072)return;_0x22442a+=_0x1e13d4['decode'](_0x36afb9,{'stream':!![]});const _0x51292a=_0x22442a['split']('\x0a\x0a');_0x22442a=_0x51292a['pop']()||'';for(const _0x368c37 of _0x51292a){if(!_0x368c37['trim']())continue;const _0x93fad3=_0x368c37['split']('\x0a');let _0x411463='message',_0x175f2a='';for(const _0x18fa20 of _0x93fad3){if(_0x18fa20['startsWith']('event:'))_0x411463=_0x18fa20['substring'](0x6)['trim']();else _0x18fa20['startsWith']('data:')&&(_0x175f2a=_0x18fa20['substring'](0x5)['trim']());}if(!_0x175f2a)continue;try{const _0x2b87a1=JSON['parse'](_0x175f2a);if(_0x411463==='progress'&&_0x1fdd21)_0x1fdd21(_0x2b87a1['stage'],_0x2b87a1['message']);else{if(_0x411463==='result'){_0xc6885b(_0x2b87a1);return;}else{if(_0x411463==='error'){let _0x1f7040=_0x2b87a1['message']||_0x2b87a1['error']||'Prompt\x20command\x20failed';_0x2b87a1['rawOutput']&&(_0x1f7040+='\x0a\x0aRaw\x20output:\x0a'+_0x2b87a1['rawOutput']);_0x123033(new Error(_0x1f7040));return;}}}}catch(_0x179c03){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x179c03),console['error']('Event\x20type:',_0x411463),console['error']('Event\x20data:',_0x175f2a),console['error']('First\x20200\x20chars:',_0x175f2a['substring'](0x0,0xc8)),_0x123033(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x179c03['message']+'\x0a\x0aData:\x20'+_0x175f2a['substring'](0x0,0x1f4)));return;}}_0x2beff3();}catch(_0x4050a1){_0x123033(_0x4050a1);}};_0x2beff3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xac358d){const _0x55f5f1=await fetch(''+API_BASE+_0xac358d);if(!_0x55f5f1['ok']){const _0x1ae59f=await _0x55f5f1['json']()['catch'](()=>({'error':_0x55f5f1['statusText']})),_0x3d0e7d=new Error(_0x1ae59f['error']||_0x1ae59f['message']||_0x55f5f1['statusText']);if(_0x1ae59f['detail']!==undefined)_0x3d0e7d['detail']=_0x1ae59f['detail'];throw _0x3d0e7d;}return await _0x55f5f1['json']();},async 'post'(_0x39394a,_0x3c8f37){const _0x53501a=await fetch(''+API_BASE+_0x39394a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c8f37)});if(!_0x53501a['ok']){const _0x486fef=await _0x53501a['json']()['catch'](()=>({'error':_0x53501a['statusText']})),_0x35f7b3=new Error(_0x486fef['error']||_0x486fef['message']||_0x53501a['statusText']);if(_0x486fef['detail']!==undefined)_0x35f7b3['detail']=_0x486fef['detail'];throw _0x35f7b3;}return await _0x53501a['json']();},async 'put'(_0x3fc3b2,_0x11dd02){const _0xe18d14=await fetch(''+API_BASE+_0x3fc3b2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11dd02)});if(!_0xe18d14['ok']){const _0x1706cb=await _0xe18d14['json']()['catch'](()=>({'error':_0xe18d14['statusText']})),_0x179465=new Error(_0x1706cb['error']||_0x1706cb['message']||_0xe18d14['statusText']);if(_0x1706cb['detail']!==undefined)_0x179465['detail']=_0x1706cb['detail'];throw _0x179465;}return await _0xe18d14['json']();},async 'delete'(_0x5eaef7,_0x264372){const _0x305c9f={'method':'DELETE'};_0x264372&&(_0x305c9f['headers']={'Content-Type':'application/json'},_0x305c9f['body']=JSON['stringify'](_0x264372));const _0x16bf74=await fetch(''+API_BASE+_0x5eaef7,_0x305c9f);if(!_0x16bf74['ok']){const _0x2e3d03=await _0x16bf74['json']()['catch'](()=>({'error':_0x16bf74['statusText']})),_0x58ba81=new Error(_0x2e3d03['error']||_0x2e3d03['message']||_0x16bf74['statusText']);if(_0x2e3d03['detail']!==undefined)_0x58ba81['detail']=_0x2e3d03['detail'];throw _0x58ba81;}return await _0x16bf74['json']();},async 'getSkills'(){const _0x2491af=await fetch(API_BASE+'/skills');if(!_0x2491af['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2491af['statusText']);return await _0x2491af['json']();},async 'getSkill'(_0x13534a){const _0x103416=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x13534a));if(!_0x103416['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x103416['statusText']);return await _0x103416['json']();},async 'createSkill'(_0x2faff1){const _0x4f1b7a=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2faff1)});if(!_0x4f1b7a['ok']){const _0x1a1d96=await _0x4f1b7a['json']()['catch'](()=>({'error':_0x4f1b7a['statusText']})),_0x1170b2=new Error(_0x1a1d96['error']||_0x1a1d96['message']||_0x4f1b7a['statusText']);if(_0x1a1d96['detail']!==undefined)_0x1170b2['detail']=_0x1a1d96['detail'];throw _0x1170b2;}return await _0x4f1b7a['json']();},async 'updateSkill'(_0x4c4a9d,_0x1b7ac6){const _0x43af57=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c4a9d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b7ac6)});if(!_0x43af57['ok']){const _0x380304=await _0x43af57['json']()['catch'](()=>({'error':_0x43af57['statusText']})),_0x58bc48=new Error(_0x380304['error']||_0x380304['message']||_0x43af57['statusText']);if(_0x380304['detail']!==undefined)_0x58bc48['detail']=_0x380304['detail'];throw _0x58bc48;}return await _0x43af57['json']();},async 'deleteSkill'(_0x1b5bcf){const _0x304678=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b5bcf),{'method':'DELETE'});if(!_0x304678['ok']){const _0x34c4af=await _0x304678['json']()['catch'](()=>({'error':_0x304678['statusText']})),_0x286a4c=new Error(_0x34c4af['error']||_0x34c4af['message']||_0x304678['statusText']);if(_0x34c4af['detail']!==undefined)_0x286a4c['detail']=_0x34c4af['detail'];throw _0x286a4c;}return await _0x304678['json']();},async 'getSkillFile'(_0x237a34,_0x22497f){const _0x87b7a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x237a34)+'/files/'+_0x22497f);if(!_0x87b7a7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x87b7a7['statusText']);return await _0x87b7a7['json']();},async 'saveSkillFile'(_0x48f82a,_0x8d6636,_0xe1521a){const _0x35245f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x48f82a)+'/files/'+_0x8d6636,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xe1521a})});if(!_0x35245f['ok']){const _0x445f65=await _0x35245f['json']()['catch'](()=>({'error':_0x35245f['statusText']})),_0x1bae1e=new Error(_0x445f65['error']||_0x445f65['message']||_0x35245f['statusText']);if(_0x445f65['detail']!==undefined)_0x1bae1e['detail']=_0x445f65['detail'];throw _0x1bae1e;}return await _0x35245f['json']();},async 'deleteSkillFile'(_0x1ae384,_0x59b5a0){const _0x5a1b3c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1ae384)+'/files/'+_0x59b5a0,{'method':'DELETE'});if(!_0x5a1b3c['ok']){const _0x1a1028=await _0x5a1b3c['json']()['catch'](()=>({'error':_0x5a1b3c['statusText']})),_0x42b5e1=new Error(_0x1a1028['error']||_0x1a1028['message']||_0x5a1b3c['statusText']);if(_0x1a1028['detail']!==undefined)_0x42b5e1['detail']=_0x1a1028['detail'];throw _0x42b5e1;}return await _0x5a1b3c['json']();},async 'pullSkills'(){const _0x47dea8=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x47dea8['ok']){const _0x2faa87=await _0x47dea8['json']()['catch'](()=>({'error':_0x47dea8['statusText']})),_0x190a5b=new Error(_0x2faa87['error']||_0x2faa87['message']||_0x47dea8['statusText']);if(_0x2faa87['detail']!==undefined)_0x190a5b['detail']=_0x2faa87['detail'];throw _0x190a5b;}return await _0x47dea8['json']();},async 'commitSkills'(_0x54fae4,_0x1dcc2d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1dcc2d,_0x40ba77=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x54fae4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x40ba77['ok']){const _0x4bce4d=await _0x40ba77['json']()['catch'](()=>({'error':_0x40ba77['statusText']})),_0x5c7004=new Error(_0x4bce4d['error']||_0x4bce4d['message']||_0x40ba77['statusText']);if(_0x4bce4d['detail']!==undefined)_0x5c7004['detail']=_0x4bce4d['detail'];throw _0x5c7004;}return await _0x40ba77['json']();},async 'discardSkillsChanges'(){const _0x4b663d=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4b663d['ok']){const _0x55a82b=await _0x4b663d['json']()['catch'](()=>({'error':_0x4b663d['statusText']})),_0x293012=new Error(_0x55a82b['error']||_0x55a82b['message']||_0x4b663d['statusText']);if(_0x55a82b['detail']!==undefined)_0x293012['detail']=_0x55a82b['detail'];throw _0x293012;}return await _0x4b663d['json']();},async 'getSkillCatalog'(){const _0x2a3c76=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2a3c76['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2a3c76['statusText']);return await _0x2a3c76['json']();},async 'getImportedSkillsRegistry'(){const _0x470d29=await fetch(API_BASE+'/external-skills/registry');if(!_0x470d29['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x470d29['statusText']);return await _0x470d29['json']();},async 'importCatalogSkill'(_0x4faf84){const _0x4492f0=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4faf84})});if(!_0x4492f0['ok']){const _0x58d37e=await _0x4492f0['json']()['catch'](()=>({'error':_0x4492f0['statusText']})),_0x10c7de=new Error(_0x58d37e['error']||_0x58d37e['message']||_0x4492f0['statusText']);if(_0x58d37e['detail']!==undefined)_0x10c7de['detail']=_0x58d37e['detail'];throw _0x10c7de;}return await _0x4492f0['json']();},async 'importSkillFromGit'(_0xbeb341,_0x3846bf,_0x554b4b='main',_0x1e7393=null){const _0x197308=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xbeb341,'skillPath':_0x3846bf,'branch':_0x554b4b,'skillId':_0x1e7393})});if(!_0x197308['ok']){const _0x546cdb=await _0x197308['json']()['catch'](()=>({'error':_0x197308['statusText']})),_0x536b03=new Error(_0x546cdb['error']||_0x546cdb['message']||_0x197308['statusText']);if(_0x546cdb['detail']!==undefined)_0x536b03['detail']=_0x546cdb['detail'];throw _0x536b03;}return await _0x197308['json']();},async 'probeMarketplace'(_0x83c51b,_0x2b3e5a='main'){const _0x2a3afc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x83c51b,'branch':_0x2b3e5a})});if(!_0x2a3afc['ok']){const _0x455cad=await _0x2a3afc['json']()['catch'](()=>({'error':_0x2a3afc['statusText']})),_0x3ba411=new Error(_0x455cad['error']||_0x455cad['message']||_0x2a3afc['statusText']);if(_0x455cad['detail']!==undefined)_0x3ba411['detail']=_0x455cad['detail'];throw _0x3ba411;}return await _0x2a3afc['json']();},async 'importMarketplaceBundle'(_0x49f218,_0x4430cc,_0x256344,_0x4ede12=null){const _0x6d251f=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x49f218,'branch':_0x4430cc,'bundleId':_0x256344,'selectedSkills':_0x4ede12})});if(!_0x6d251f['ok']){const _0x4a7da2=await _0x6d251f['json']()['catch'](()=>({'error':_0x6d251f['statusText']})),_0x10fd3b=new Error(_0x4a7da2['error']||_0x4a7da2['message']||_0x6d251f['statusText']);if(_0x4a7da2['detail']!==undefined)_0x10fd3b['detail']=_0x4a7da2['detail'];throw _0x10fd3b;}return await _0x6d251f['json']();},async 'importSkillFromFolder'(_0x4f2293,_0x7bce71=null){const _0xd586f8=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4f2293,'skillId':_0x7bce71})});if(!_0xd586f8['ok']){const _0x3504f5=await _0xd586f8['json']()['catch'](()=>({'error':_0xd586f8['statusText']})),_0x21e5ed=new Error(_0x3504f5['error']||_0x3504f5['message']||_0xd586f8['statusText']);if(_0x3504f5['detail']!==undefined)_0x21e5ed['detail']=_0x3504f5['detail'];throw _0x21e5ed;}return await _0xd586f8['json']();},async 'importSkillFromNpm'(_0x22980e,_0x2e3c68='latest',_0x93fe2=null,_0x18eb8e=null){const _0x1fa6c7=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x22980e,'version':_0x2e3c68,'skillId':_0x93fe2,'registry':_0x18eb8e})});if(!_0x1fa6c7['ok']){const _0x305daf=await _0x1fa6c7['json']()['catch'](()=>({'error':_0x1fa6c7['statusText']})),_0x12050c=new Error(_0x305daf['error']||_0x305daf['message']||_0x1fa6c7['statusText']);if(_0x305daf['detail']!==undefined)_0x12050c['detail']=_0x305daf['detail'];throw _0x12050c;}return await _0x1fa6c7['json']();},async 'checkSkillUpdates'(_0x26b47e){const _0x5c75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26b47e)+'/check-updates',{'method':'POST'});if(!_0x5c75f3['ok']){const _0xa4c4e6=await _0x5c75f3['json']()['catch'](()=>({'error':_0x5c75f3['statusText']})),_0x4786be=new Error(_0xa4c4e6['error']||_0xa4c4e6['message']||_0x5c75f3['statusText']);if(_0xa4c4e6['detail']!==undefined)_0x4786be['detail']=_0xa4c4e6['detail'];throw _0x4786be;}return await _0x5c75f3['json']();},async 'updateExternalSkill'(_0x26fd08){const _0x506104=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26fd08)+'/update',{'method':'POST'});if(!_0x506104['ok']){const _0x5070cb=await _0x506104['json']()['catch'](()=>({'error':_0x506104['statusText']})),_0x3413ea=new Error(_0x5070cb['error']||_0x5070cb['message']||_0x506104['statusText']);if(_0x5070cb['detail']!==undefined)_0x3413ea['detail']=_0x5070cb['detail'];throw _0x3413ea;}return await _0x506104['json']();},async 'updateSkillFlags'(_0xe9b717,_0x308bc1){const _0x392e42=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xe9b717)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x308bc1})});if(!_0x392e42['ok']){const _0x17a012=await _0x392e42['json']()['catch'](()=>({'error':_0x392e42['statusText']})),_0x431579=new Error(_0x17a012['error']||_0x17a012['message']||_0x392e42['statusText']);if(_0x17a012['detail']!==undefined)_0x431579['detail']=_0x17a012['detail'];throw _0x431579;}return await _0x392e42['json']();},async 'removeFromImportedRegistry'(_0x525b7c){const _0x48ee06=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x525b7c)+'/registry',{'method':'DELETE'});if(!_0x48ee06['ok']){const _0x41511b=await _0x48ee06['json']()['catch'](()=>({'error':_0x48ee06['statusText']})),_0x4e78dc=new Error(_0x41511b['error']||_0x41511b['message']||_0x48ee06['statusText']);if(_0x41511b['detail']!==undefined)_0x4e78dc['detail']=_0x41511b['detail'];throw _0x4e78dc;}return await _0x48ee06['json']();},async 'getTeams'(){const _0x310db5=await fetch(API_BASE+'/teams');if(!_0x310db5['ok']){const _0x43098b=await _0x310db5['json']()['catch'](()=>({'message':_0x310db5['statusText']}));throw new Error(_0x43098b['message']||'Failed\x20to\x20get\x20teams');}return await _0x310db5['json']();},async 'getTeam'(_0x488878){const _0x5c9012=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x488878));if(!_0x5c9012['ok']){const _0x14f3c4=await _0x5c9012['json']()['catch'](()=>({'message':_0x5c9012['statusText']}));throw new Error(_0x14f3c4['message']||'Failed\x20to\x20get\x20team');}return await _0x5c9012['json']();},async 'createTeam'(_0x5b1d23){const _0x15fd32=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b1d23)});if(!_0x15fd32['ok']){const _0x5edf0e=await _0x15fd32['json']()['catch'](()=>({'message':_0x15fd32['statusText']}));throw new Error(_0x5edf0e['message']||'Failed\x20to\x20create\x20team');}return await _0x15fd32['json']();},async 'updateTeam'(_0x23203a,_0x3837ae){const _0x4431d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x23203a),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3837ae)});if(!_0x4431d1['ok']){const _0x1733c4=await _0x4431d1['json']()['catch'](()=>({'message':_0x4431d1['statusText']}));throw new Error(_0x1733c4['message']||'Failed\x20to\x20update\x20team');}return await _0x4431d1['json']();},async 'deleteTeam'(_0x51105d){const _0x367fac=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x51105d),{'method':'DELETE'});if(!_0x367fac['ok']){const _0x327993=await _0x367fac['json']()['catch'](()=>({'message':_0x367fac['statusText']}));throw new Error(_0x327993['message']||'Failed\x20to\x20delete\x20team');}return await _0x367fac['json']();},async 'addTeamMember'(_0x443512,_0x59d3cc){const _0x11e4d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x443512)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x59d3cc})});if(!_0x11e4d1['ok']){const _0x356175=await _0x11e4d1['json']()['catch'](()=>({'message':_0x11e4d1['statusText']}));throw new Error(_0x356175['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x11e4d1['json']();},async 'removeTeamMember'(_0x14edf8,_0x58b6f5){const _0x44c6e8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x14edf8)+'/members/'+encodeURIComponent(_0x58b6f5),{'method':'DELETE'});if(!_0x44c6e8['ok']){const _0x2d2245=await _0x44c6e8['json']()['catch'](()=>({'message':_0x44c6e8['statusText']}));throw new Error(_0x2d2245['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x44c6e8['json']();},async 'getBindings'(_0x2ae079={}){const _0x535efb=new URLSearchParams();if(_0x2ae079['resource_type'])_0x535efb['set']('resource_type',_0x2ae079['resource_type']);if(_0x2ae079['resource_id'])_0x535efb['set']('resource_id',_0x2ae079['resource_id']);if(_0x2ae079['subject_type'])_0x535efb['set']('subject_type',_0x2ae079['subject_type']);if(_0x2ae079['subject_id'])_0x535efb['set']('subject_id',_0x2ae079['subject_id']);const _0x3d2d6e=_0x535efb['toString'](),_0x5d1eea=await fetch(API_BASE+'/bindings'+(_0x3d2d6e?'?'+_0x3d2d6e:''));if(!_0x5d1eea['ok']){const _0x563b1a=await _0x5d1eea['json']()['catch'](()=>({'message':_0x5d1eea['statusText']}));throw new Error(_0x563b1a['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5d1eea['json']();},async 'createBinding'(_0x12c7ee){const _0x463a54=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12c7ee)});if(!_0x463a54['ok']){const _0xdef47c=await _0x463a54['json']()['catch'](()=>({'message':_0x463a54['statusText']}));throw new Error(_0xdef47c['message']||'Failed\x20to\x20create\x20binding');}return await _0x463a54['json']();},async 'updateBinding'(_0x49a29b,_0x53eb94){const _0x194f52=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x49a29b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53eb94)});if(!_0x194f52['ok']){const _0x3db875=await _0x194f52['json']()['catch'](()=>({'message':_0x194f52['statusText']}));throw new Error(_0x3db875['message']||'Failed\x20to\x20update\x20binding');}return await _0x194f52['json']();},async 'deleteBinding'(_0x6ddad){const _0x4af93b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x6ddad),{'method':'DELETE'});if(!_0x4af93b['ok']){const _0xfcdf12=await _0x4af93b['json']()['catch'](()=>({'message':_0x4af93b['statusText']}));throw new Error(_0xfcdf12['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4af93b['json']();},async 'getRoleDefinitions'(){const _0x2cb92e=await fetch(API_BASE+'/roles');if(!_0x2cb92e['ok']){const _0x9756e9=await _0x2cb92e['json']()['catch'](()=>({'message':_0x2cb92e['statusText']}));throw new Error(_0x9756e9['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2cb92e['json']();},async 'getRoleDefinition'(_0x1b051f){const _0x3a6a2a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1b051f));if(!_0x3a6a2a['ok']){const _0x49b658=await _0x3a6a2a['json']()['catch'](()=>({'message':_0x3a6a2a['statusText']}));throw new Error(_0x49b658['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3a6a2a['json']();},async 'createRoleDefinition'(_0x33a108){const _0x442291=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33a108)});if(!_0x442291['ok']){const _0x43263d=await _0x442291['json']()['catch'](()=>({'message':_0x442291['statusText']}));throw new Error(_0x43263d['message']||_0x43263d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x442291['json']();},async 'updateRoleDefinition'(_0x1e6683,_0xe65239){const _0x45a5c0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1e6683),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe65239)});if(!_0x45a5c0['ok']){const _0x6500f4=await _0x45a5c0['json']()['catch'](()=>({'message':_0x45a5c0['statusText']}));throw new Error(_0x6500f4['message']||_0x6500f4['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x45a5c0['json']();},async 'deleteRoleDefinition'(_0x4945fd){const _0x140e6b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4945fd),{'method':'DELETE'});if(!_0x140e6b['ok']){const _0x290bef=await _0x140e6b['json']()['catch'](()=>({'message':_0x140e6b['statusText']}));throw new Error(_0x290bef['message']||_0x290bef['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x140e6b['json']();},async 'getAvailablePermissions'(){const _0x9dede0=await fetch(API_BASE+'/roles/available-permissions');if(!_0x9dede0['ok']){const _0x3a081c=await _0x9dede0['json']()['catch'](()=>({'message':_0x9dede0['statusText']}));throw new Error(_0x3a081c['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x9dede0['json']();},async 'getGitProviderAllowedTeams'(_0x31f3b3){const _0x3b28c5=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x31f3b3)+'/allowed-teams');if(!_0x3b28c5['ok']){const _0x186185=await _0x3b28c5['json']()['catch'](()=>({'message':_0x3b28c5['statusText']}));throw new Error(_0x186185['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3b28c5['json']();},async 'setGitProviderAllowedTeams'(_0x3b0a3f,_0x3eb949){const _0x1cccc1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3b0a3f)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3eb949})});if(!_0x1cccc1['ok']){const _0x33b5e4=await _0x1cccc1['json']()['catch'](()=>({'message':_0x1cccc1['statusText']}));throw new Error(_0x33b5e4['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1cccc1['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 _0xe408c6=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4f19c7=>{_0x4f19c7['el']['style']['bottom']=_0xe408c6+'px';const _0x54495a=_0x4f19c7['el']['offsetHeight']||toastState['defaultHeight'];_0xe408c6+=_0x54495a+toastState['gap'];});});}function removeToastById(_0x28857c){const _0x2de654=toastState['toasts']['findIndex'](_0x1760ae=>_0x1760ae['id']===_0x28857c);if(_0x2de654===-0x1)return;const _0x3b9501=toastState['toasts'][_0x2de654];if(_0x3b9501['timeoutId'])clearTimeout(_0x3b9501['timeoutId']);_0x3b9501['el']['classList']['remove']('show'),setTimeout(()=>_0x3b9501['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2de654,0x1),repositionAllToasts();}function registerToast(_0x3a67bc){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x3a67bc),repositionAllToasts(),_0x3a67bc['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(_0x421d63){if(_0x421d63===null||_0x421d63===undefined)return'';return String(_0x421d63)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x2d79e8,_0x1c6188){if(_0x2d79e8&&typeof _0x2d79e8==='object'&&!Array['isArray'](_0x2d79e8))return{'code':typeof _0x2d79e8['text']==='string'?_0x2d79e8['text']:'','language':typeof _0x2d79e8['lang']==='string'?_0x2d79e8['lang']:''};return{'code':typeof _0x2d79e8==='string'?_0x2d79e8:'','language':typeof _0x1c6188==='string'?_0x1c6188:''};}function buildMermaidBlock(_0x394d40){const _0xe98077=String(_0x394d40||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0xe98077))+'\x22>'+escapeHtmlValue(_0xe98077)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x5509e0=new marked['Renderer'](),_0x4ac7da=_0x5509e0['code']['bind'](_0x5509e0);return _0x5509e0['code']=function(_0x2af773,_0x2eaba3,..._0x408687){const {code:_0x5ecbb2,language:_0x496d12}=getMarkdownCodeBlockPayload(_0x2af773,_0x2eaba3),_0x280a25=String(_0x496d12||'')['trim']()['toLowerCase']();if(_0x280a25==='mermaid')return buildMermaidBlock(_0x5ecbb2);const _0x367b4f=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x367b4f&&_0x280a25)try{const _0xb4ba68=_0x367b4f['getLanguage'](_0x280a25)?_0x280a25:'plaintext',_0x428dcf=_0x367b4f['highlight'](_0x5ecbb2,{'language':_0xb4ba68})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x280a25)+'\x22>'+_0x428dcf+'</code></pre>';}catch(_0xde0ddc){console['error']('Syntax\x20highlighting\x20error:',_0xde0ddc);}return _0x4ac7da(_0x2af773,_0x2eaba3,..._0x408687);},sharedMarkedRenderer=_0x5509e0,_0x5509e0;}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 _0x34d3f7=window['mermaid'];if(!_0x34d3f7||typeof _0x34d3f7['initialize']!=='function')return _0x34d3f7||null;return _0x34d3f7['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x34d3f7;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2c48c4,_0x2380f4)=>{const _0x40b8e2=()=>_0x2c48c4(configureMermaidInstance()),_0x19446b=()=>{mermaidLoadPromise=null,_0x2380f4(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x191e21=document['getElementById'](MERMAID_SCRIPT_ID);!_0x191e21&&(_0x191e21=document['createElement']('script'),_0x191e21['id']=MERMAID_SCRIPT_ID,_0x191e21['src']=MERMAID_SCRIPT_SRC,_0x191e21['async']=!![],document['head']['appendChild'](_0x191e21));if(window['mermaid']){_0x40b8e2();return;}_0x191e21['addEventListener']('load',_0x40b8e2,{'once':!![]}),_0x191e21['addEventListener']('error',_0x19446b,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x307e0b){const _0x2bbcf6=_0x307e0b['getAttribute']('data-mermaid-source');if(!_0x2bbcf6)return null;let _0x336bfd=_0x2bbcf6;try{_0x336bfd=decodeURIComponent(_0x2bbcf6);}catch{}return _0x307e0b['textContent']=_0x336bfd,_0x307e0b['removeAttribute']('data-processed'),_0x307e0b['removeAttribute']('aria-roledescription'),_0x307e0b['removeAttribute']('role'),_0x307e0b['removeAttribute']('aria-label'),_0x336bfd;}function collectMermaidNodes(_0x4ac068,_0x3342bd){if(!(_0x4ac068 instanceof Element))return;_0x4ac068['matches']('.mermaid[data-mermaid-source]')&&_0x3342bd['add'](_0x4ac068),_0x4ac068['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f2cb9=>{_0x3342bd['add'](_0x5f2cb9);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3457a7=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x1206cf=>setTimeout(_0x1206cf,0x0);_0x3457a7(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1fbf75=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1fbf75);});});}function queueMermaidRender(_0x455046){const _0x3ef73c=new Set();_0x455046 instanceof Document||_0x455046 instanceof DocumentFragment?_0x455046['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2a4d34=>_0x3ef73c['add'](_0x2a4d34)):collectMermaidNodes(_0x455046,_0x3ef73c);if(_0x3ef73c['size']===0x0)return;_0x3ef73c['forEach'](_0x2d4190=>pendingMermaidNodes['add'](_0x2d4190)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x41a111=Array['from'](pendingMermaidNodes)['filter'](_0x50228c=>_0x50228c['isConnected']);pendingMermaidNodes['clear']();if(_0x41a111['length']===0x0)return;const _0x256015=await loadMermaid();if(!_0x256015)return;configureMermaidInstance();const _0x50b689=getMermaidTheme();for(const _0x27fe25 of _0x41a111){const _0xd44390=_0x27fe25['getAttribute']('data-mermaid-source');if(!_0xd44390)continue;const _0x522a93=_0x27fe25['getAttribute']('data-processed')==='true';if(_0x522a93&&_0x27fe25['dataset']['mermaidTheme']===_0x50b689)continue;restoreMermaidSource(_0x27fe25);try{if(typeof _0x256015['run']==='function')await _0x256015['run']({'nodes':[_0x27fe25]});else typeof _0x256015['init']==='function'&&_0x256015['init'](undefined,[_0x27fe25]);_0x27fe25['dataset']['mermaidTheme']=_0x50b689,delete _0x27fe25['dataset']['mermaidError'];}catch(_0x25a0cd){console['error']('Mermaid\x20render\x20failed:',_0x25a0cd),restoreMermaidSource(_0x27fe25),_0x27fe25['dataset']['mermaidError']='true',delete _0x27fe25['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3de15b=>{_0x3de15b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3de15b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x47d08f=>{_0x47d08f['forEach'](_0x3cf580=>{_0x3cf580['addedNodes']['forEach'](_0x5422cc=>{_0x5422cc['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x5422cc);});});}),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'(_0x41d91b){const _0x480a74=new Date(_0x41d91b),_0x3bbd83=new Date(),_0x468d59=_0x3bbd83-_0x480a74,_0x544ae1=Math['floor'](_0x468d59/0x3e8),_0x5b153c=Math['floor'](_0x544ae1/0x3c),_0x4c1082=Math['floor'](_0x5b153c/0x3c),_0x10d9c3=Math['floor'](_0x4c1082/0x18);if(_0x544ae1<0x3c)return'now';if(_0x5b153c<0x3c)return _0x5b153c+'m\x20ago';if(_0x4c1082<0x18)return _0x4c1082+'h\x20ago';return _0x10d9c3+'d\x20ago';},'getStatusIcon'(_0x2c4035){switch(_0x2c4035){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x34d555){switch(_0x34d555){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'(_0x222621,_0x42a1ce=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x49a6b4={};_0x49a6b4['text/plain']=new Blob([_0x222621],{'type':'text/plain'});_0x42a1ce&&(_0x49a6b4['text/html']=new Blob([_0x42a1ce],{'type':'text/html'}));const _0x47fa48=new ClipboardItem(_0x49a6b4);return await navigator['clipboard']['write']([_0x47fa48]),!![];}catch(_0x35ecc3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x35ecc3);}try{const _0x242f75=_0x2648fd=>{_0x2648fd['preventDefault'](),_0x2648fd['clipboardData']['setData']('text/plain',_0x222621),_0x42a1ce&&_0x2648fd['clipboardData']['setData']('text/html',_0x42a1ce);};document['addEventListener']('copy',_0x242f75);const _0x5eb457=document['execCommand']('copy');document['removeEventListener']('copy',_0x242f75);if(_0x5eb457)return!![];}catch(_0x3db46e){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x3db46e);}try{const _0x33a471=document['createElement']('textarea');_0x33a471['value']=_0x222621,_0x33a471['style']['position']='fixed',_0x33a471['style']['opacity']='0',_0x33a471['style']['pointerEvents']='none',document['body']['appendChild'](_0x33a471),_0x33a471['select']();const _0x51ae2b=document['execCommand']('copy');return document['body']['removeChild'](_0x33a471),_0x51ae2b;}catch(_0x482671){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x482671),![];}},'showToast'(_0x26ef86,_0x5f577b='info'){const _0x20fa1a=getNextToastId(),_0x42d080=document['createElement']('div');_0x42d080['className']='toast\x20toast-'+_0x5f577b,_0x42d080['textContent']=_0x26ef86,_0x42d080['dataset']['toastId']=_0x20fa1a,document['body']['appendChild'](_0x42d080);const _0x17c5ae=_0x5f577b==='error'?0x2710:0xbb8,_0x5030e1=setTimeout(()=>{removeToastById(_0x20fa1a);},_0x17c5ae),_0x3c7714={'id':_0x20fa1a,'el':_0x42d080,'timeoutId':_0x5030e1};return registerToast(_0x3c7714),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x42d080['classList']['add']('show');});}),_0x20fa1a;},'showError'(_0x4c4341){console['error'](_0x4c4341);const _0x4ff189=typeof _0x4c4341==='string'?_0x4c4341:_0x4c4341['message']||'An\x20error\x20occurred';this['showToast'](_0x4ff189,'error');},'showSuccess'(_0x2e4e23){this['showToast'](_0x2e4e23,'success');},'capitalize'(_0x347320){if(!_0x347320)return'';return _0x347320['charAt'](0x0)['toUpperCase']()+_0x347320['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x47000f){return escapeHtmlValue(_0x47000f);},'ansiToHtml'(_0x23b0e0){if(_0x23b0e0===null||_0x23b0e0===undefined)return'';let _0x2a747d=this['escapeHtml'](_0x23b0e0);const _0x22f154={'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'},_0x137e3d={'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 _0x12b9e3=0x0;return _0x2a747d=_0x2a747d['replace'](/\x1b\[([0-9;]*)m/g,(_0x208646,_0x51473f)=>{if(!_0x51473f||_0x51473f==='0'){const _0xaa3c42='</span>'['repeat'](_0x12b9e3);return _0x12b9e3=0x0,_0xaa3c42;}const _0x5eb5b2=_0x51473f['split'](';'),_0x3e4261=[];for(const _0x26aa98 of _0x5eb5b2){if(_0x26aa98==='1')_0x3e4261['push']('font-weight:bold');else{if(_0x26aa98==='2')_0x3e4261['push']('opacity:0.7');else{if(_0x26aa98==='3')_0x3e4261['push']('font-style:italic');else{if(_0x26aa98==='4')_0x3e4261['push']('text-decoration:underline');else{if(_0x26aa98==='9')_0x3e4261['push']('text-decoration:line-through');else{if(_0x22f154[_0x26aa98])_0x3e4261['push']('color:'+_0x22f154[_0x26aa98]);else{if(_0x137e3d[_0x26aa98])_0x3e4261['push']('background-color:'+_0x137e3d[_0x26aa98]);}}}}}}}if(_0x3e4261['length']>0x0)return _0x12b9e3++,'<span\x20style=\x22'+_0x3e4261['join'](';')+'\x22>';return'';}),_0x2a747d+='</span>'['repeat'](_0x12b9e3),_0x2a747d=_0x2a747d['replace'](/\\u001b\[([0-9;]*)m/g,(_0x235b39,_0x356d68)=>{if(!_0x356d68||_0x356d68==='0')return'';const _0x5cb999=_0x356d68['split'](';'),_0x5e3532=[];for(const _0x363084 of _0x5cb999){if(_0x363084==='1')_0x5e3532['push']('font-weight:bold');else{if(_0x22f154[_0x363084])_0x5e3532['push']('color:'+_0x22f154[_0x363084]);else{if(_0x137e3d[_0x363084])_0x5e3532['push']('background-color:'+_0x137e3d[_0x363084]);}}}if(_0x5e3532['length']>0x0)return'<span\x20style=\x22'+_0x5e3532['join'](';')+'\x22>';return'';}),_0x2a747d;},'showModal'({title:_0x172c94,content:_0x4400df,buttons:buttons=[]}){const _0x371e1a='\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'](_0x172c94)+'</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'+_0x4400df+'\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']((_0x121503,_0xe3ceed)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x121503['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xe3ceed+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x121503['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',_0x4290b7=document['createElement']('div');_0x4290b7['id']='utils-modal',_0x4290b7['className']='modal',_0x4290b7['innerHTML']=_0x371e1a,document['body']['appendChild'](_0x4290b7);const _0x51b66d=document['getElementById']('utils-modal-close');_0x51b66d&&_0x51b66d['addEventListener']('click',()=>this['hideModal']());const _0x51ebb0=_0x4290b7['querySelectorAll']('[data-btn-index]');_0x51ebb0['forEach'](_0x1d3c42=>{const _0x13e87e=parseInt(_0x1d3c42['dataset']['btnIndex']);buttons[_0x13e87e]?.['onClick']&&_0x1d3c42['addEventListener']('click',buttons[_0x13e87e]['onClick']);});const _0xba7c87=document['getElementById']('utils-modal-overlay');_0xba7c87&&_0xba7c87['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x32feb2=document['getElementById']('utils-modal');_0x32feb2&&_0x32feb2['remove']();},'parseKeyValuePairs'(_0x3fb9a2){const _0x307e8b={};if(!_0x3fb9a2)return _0x307e8b;return _0x3fb9a2['split'](/\r?\n/)['map'](_0x5ef0ce=>_0x5ef0ce['trim']())['filter'](Boolean)['forEach'](_0x1d87b1=>{const _0x426371=_0x1d87b1['indexOf']('=');if(_0x426371>0x0){const _0x2146ff=_0x1d87b1['slice'](0x0,_0x426371)['trim'](),_0x43e440=_0x1d87b1['slice'](_0x426371+0x1)['trim']();if(_0x2146ff)_0x307e8b[_0x2146ff]=_0x43e440;}}),_0x307e8b;},'debounce'(_0x4cd06b,_0x268790=0xfa){let _0x440117=null;return(..._0x34ad65)=>{clearTimeout(_0x440117),_0x440117=setTimeout(()=>_0x4cd06b['apply'](this,_0x34ad65),_0x268790);};},'formatTimestamp'(_0x1f4b32){if(!_0x1f4b32)return'N/A';const _0x1c3fef=new Date(_0x1f4b32);return _0x1c3fef['toLocaleDateString']()+'\x20'+_0x1c3fef['toLocaleTimeString']();},'getQueryParams'(){const _0x3b4e42=new URLSearchParams(window['location']['search']),_0x401593={};for(const [_0x39fbcb,_0xe61a6b]of _0x3b4e42){_0x401593[_0x39fbcb]=_0xe61a6b;}return _0x401593;},'formatDuration'(_0x3e0d33,_0x445b97){if(!_0x3e0d33)return'N/A';const _0x375355=new Date(_0x3e0d33),_0x368f01=_0x445b97?new Date(_0x445b97):new Date(),_0x550a43=_0x368f01-_0x375355;if(_0x550a43<0x0)return'0s';const _0x46e784=Math['floor'](_0x550a43/0x3e8),_0x46ecd5=Math['floor'](_0x46e784/0x3c),_0x56c039=Math['floor'](_0x46ecd5/0x3c),_0x571da4=Math['floor'](_0x56c039/0x18);if(_0x46e784<0x3c)return _0x46e784+'s';if(_0x46ecd5<0x3c)return _0x46ecd5+'m\x20'+_0x46e784%0x3c+'s';if(_0x56c039<0x18)return _0x56c039+'h\x20'+_0x46ecd5%0x3c+'m\x20'+_0x46e784%0x3c+'s';return _0x571da4+'d\x20'+_0x56c039%0x18+'h\x20'+_0x46ecd5%0x3c+'m';},'renderMarkdown'(_0x2c9e17,_0x2ac7d2={}){if(!_0x2c9e17)return'';_0x2c9e17=this['rewriteAttachmentLinks'](_0x2c9e17,_0x2ac7d2),_0x2c9e17=this['rewriteColorSyntax'](_0x2c9e17);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x2c9e17);}catch(_0x2ea72f){return console['error']('Markdown\x20parsing\x20error:',_0x2ea72f),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);}},'rewriteAttachmentLinks'(_0x629bc5,_0x41dc5c={}){const _0x46a46b=typeof _0x41dc5c['resolveAttachmentUrl']==='function'?_0x41dc5c['resolveAttachmentUrl']:_0x41dc5c['taskId']?_0x43d3d3=>API_BASE+'/tasks/'+_0x41dc5c['taskId']+'/attachments/'+encodeURIComponent(_0x43d3d3):null;if(!_0x46a46b)return _0x629bc5;return String(_0x629bc5)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x348bef,_0x50595b)=>{const _0x18d3db=String(_0x50595b||'')['trim']();if(!_0x18d3db)return _0x348bef;let _0x40b60e=_0x18d3db;try{_0x40b60e=decodeURIComponent(_0x18d3db);}catch{}const _0x372632=_0x46a46b(_0x40b60e);if(!_0x372632)return _0x348bef;return']('+_0x372632+')';});},'rewriteColorSyntax'(_0x186798){if(!_0x186798)return _0x186798;return String(_0x186798)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x12c87e,_0x403e1c,_0x56f372)=>{const _0x4d19ec=this['rewriteColorSyntax'](_0x56f372);return'<span\x20style=\x22color:\x20'+_0x403e1c+'\x22>'+_0x4d19ec+'</span>';});},'renderMarkdownFallback'(_0x5209d2,_0x24bc4d={}){if(!_0x5209d2)return'';_0x5209d2=_0x5209d2['replace'](/\r\n/g,'\x0a'),_0x5209d2=_0x5209d2['replace'](/\r/g,'\x0a'),_0x5209d2=this['rewriteAttachmentLinks'](_0x5209d2,_0x24bc4d);let _0x3b5dd3=this['escapeHtml'](_0x5209d2);return _0x3b5dd3=_0x3b5dd3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3b5dd3=_0x3b5dd3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3b5dd3=_0x3b5dd3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3b5dd3=_0x3b5dd3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3b5dd3=_0x3b5dd3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3b5dd3=_0x3b5dd3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3b5dd3=_0x3b5dd3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n\n/g,'</p><p>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n/g,'<br>'),'<p>'+_0x3b5dd3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x923f6d=new Uint8Array(0x10);crypto['getRandomValues'](_0x923f6d),_0x923f6d[0x6]=_0x923f6d[0x6]&0xf|0x40,_0x923f6d[0x8]=_0x923f6d[0x8]&0x3f|0x80;const _0x5115bb=Array['from'](_0x923f6d,_0x354249=>_0x354249['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5115bb['slice'](0x0,0x8)+'-'+_0x5115bb['slice'](0x8,0xc)+'-'+_0x5115bb['slice'](0xc,0x10)+'-'+_0x5115bb['slice'](0x10,0x14)+'-'+_0x5115bb['slice'](0x14);}};export class CustomSelect{constructor(_0x919831,_0x463a7f={}){this['nativeSelect']=_0x919831,this['options']=_0x463a7f,this['isOpen']=![],this['selectedValue']=_0x919831['value']||'',this['searchable']=_0x463a7f['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4c58ff=document['createElement']('div');_0x4c58ff['className']='custom-select';const _0x518ebc=document['createElement']('div');_0x518ebc['className']='custom-select-trigger',_0x518ebc['setAttribute']('tabindex','0'),_0x518ebc['setAttribute']('role','button'),_0x518ebc['setAttribute']('aria-haspopup','listbox');const _0x3c05ba=document['createElement']('span');_0x3c05ba['className']='custom-select-trigger-text';const _0x512fe8=document['createElement']('span');_0x512fe8['className']='custom-select-arrow',_0x512fe8['textContent']='▼',_0x518ebc['appendChild'](_0x3c05ba),_0x518ebc['appendChild'](_0x512fe8);const _0x241d1f=document['createElement']('div');_0x241d1f['className']='custom-select-dropdown',_0x241d1f['setAttribute']('role','listbox');if(this['searchable']){const _0x360cf9=document['createElement']('div');_0x360cf9['className']='custom-select-search';const _0x1e0533=document['createElement']('input');_0x1e0533['type']='text',_0x1e0533['className']='custom-select-search-input',_0x1e0533['placeholder']='Type\x20to\x20search...',_0x1e0533['setAttribute']('aria-label','Search\x20options'),_0x1e0533['addEventListener']('input',_0x4e75e3=>{this['searchQuery']=_0x4e75e3['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1e0533['addEventListener']('keydown',_0x49e84e=>{if(_0x49e84e['key']==='Escape')_0x49e84e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x49e84e['key']==='Enter'){_0x49e84e['preventDefault'](),_0x49e84e['stopPropagation']();const _0xc39400=_0x241d1f['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0xc39400){const _0xbd42f4=_0xc39400['getAttribute']('data-value');this['select'](_0xbd42f4);}}}}),_0x360cf9['appendChild'](_0x1e0533),_0x241d1f['appendChild'](_0x360cf9),this['searchInput']=_0x1e0533;}const _0x56a7a6=document['createElement']('div');_0x56a7a6['className']='custom-select-options',_0x241d1f['appendChild'](_0x56a7a6),_0x4c58ff['appendChild'](_0x518ebc),_0x4c58ff['appendChild'](_0x241d1f),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4c58ff,this['nativeSelect']),this['wrapper']=_0x4c58ff,this['trigger']=_0x518ebc,this['triggerText']=_0x3c05ba,this['dropdown']=_0x241d1f,this['optionsContainer']=_0x56a7a6,_0x518ebc['addEventListener']('click',()=>this['toggle']()),_0x518ebc['addEventListener']('keydown',_0x3a20a5=>this['handleKeydown'](_0x3a20a5)),document['addEventListener']('click',_0x127481=>{!_0x4c58ff['contains'](_0x127481['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x1d486a=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x1d486a['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x411c08=new MutationObserver(()=>{this['updateDisabledState']();});_0x411c08['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5edfe9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5edfe9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x83351d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x83351d),this['trigger']['setAttribute']('aria-disabled',_0x83351d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x83351d?'-1':'0'),_0x83351d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x90593c=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4da6c4=_0x90593c['filter'](_0x1f13e=>!_0x1f13e['disabled']&&!_0x1f13e['hidden']);_0x90593c['forEach']((_0x434c81,_0x19c10d)=>{const _0x5b7b89=document['createElement']('div');_0x5b7b89['className']='custom-select-option',_0x5b7b89['textContent']=_0x434c81['textContent'],_0x5b7b89['setAttribute']('data-value',_0x434c81['value']),_0x5b7b89['setAttribute']('data-index',_0x19c10d),_0x5b7b89['setAttribute']('role','option'),_0x434c81['disabled']?_0x5b7b89['classList']['add']('disabled'):_0x5b7b89['addEventListener']('click',()=>this['select'](_0x434c81['value'])),_0x434c81['value']===this['selectedValue']&&_0x5b7b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x5b7b89),this['allOptions']['push']({'element':_0x5b7b89,'text':_0x434c81['textContent']['toLowerCase'](),'value':_0x434c81['value'],'disabled':_0x434c81['disabled']});});if(this['searchable']&&this['searchInput']){const _0x13369d=this['searchInput']['parentElement'];_0x4da6c4['length']>0x3?_0x13369d['style']['display']='':_0x13369d['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4f9a76=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x20184e=>{if(!_0x4f9a76||_0x20184e['disabled'])_0x20184e['element']['style']['display']='';else{const _0x2ae4e7=_0x20184e['text']['includes'](_0x4f9a76);_0x20184e['element']['style']['display']=_0x2ae4e7?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0xc60e15){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0xc60e15,this['nativeSelect']['value']=_0xc60e15;const _0x484460=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x484460),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x458e0e=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x458e0e&&(this['triggerText']['textContent']=_0x458e0e['textContent'],_0x458e0e['disabled']||_0x458e0e['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3505b0=>{_0x3505b0['getAttribute']('data-value')===this['selectedValue']?_0x3505b0['classList']['add']('selected'):_0x3505b0['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 _0x41d82a=window['getComputedStyle'](this['dropdown']);if(_0x41d82a['position']==='fixed'){const _0x5918d1=this['trigger']['getBoundingClientRect'](),_0x3e89d4=parseInt(_0x41d82a['maxHeight'])||0xc8,_0x33dd12=window['innerHeight'],_0x39096a=_0x33dd12-_0x5918d1['bottom'],_0x20c1ea=_0x5918d1['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x16acb5;_0x39096a<_0x3e89d4&&_0x20c1ea>_0x39096a?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x33dd12-_0x5918d1['top']+'px',_0x16acb5=Math['min'](_0x3e89d4,_0x20c1ea-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5918d1['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x16acb5=Math['min'](_0x3e89d4,_0x39096a-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px');if(this['optionsContainer']){let _0x116345=_0x16acb5;if(this['searchInput']){const _0x5534ee=this['searchInput']['parentElement'];_0x5534ee&&(_0x116345-=_0x5534ee['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x116345)+'px';}this['dropdown']['style']['left']=_0x5918d1['left']+'px',this['dropdown']['style']['width']=_0x5918d1['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x44bf77=this['searchInput']['parentElement'];_0x44bf77&&_0x44bf77['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'](_0x150bdb){if(this['nativeSelect']['disabled'])return;if(_0x150bdb['key']==='Enter'||_0x150bdb['key']==='\x20')_0x150bdb['preventDefault'](),this['toggle']();else _0x150bdb['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x58db7f='\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',_0x58db7f),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2677b6=document['getElementById']('confirm-dialog-close'),_0x53becd=document['getElementById']('confirm-dialog-cancel'),_0x1767a8=document['getElementById']('confirm-dialog-confirm'),_0x4d7176=this['_modal']['querySelector']('.modal-overlay');_0x2677b6['addEventListener']('click',()=>this['_resolve'](![])),_0x53becd['addEventListener']('click',()=>this['_resolve'](![])),_0x1767a8['addEventListener']('click',()=>this['_resolve'](!![])),_0x4d7176['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x64230=>{if(_0x64230['key']==='Escape')_0x64230['preventDefault'](),this['_resolve'](![]);else _0x64230['key']==='Enter'&&(_0x64230['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x152b50,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x64604c=>{this['_resolvePromise']=_0x64604c,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x152b50;const _0x3d59c4=document['getElementById']('confirm-dialog-cancel'),_0x35cec2=document['getElementById']('confirm-dialog-confirm');_0x3d59c4['textContent']=cancelText,_0x35cec2['textContent']=confirmText,_0x35cec2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x35cec2['focus']();});},'_resolve'(_0x1d80d1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1d80d1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0xb14834,_0x389c4f={}){this['container']=_0xb14834,this['options']={'placeholder':_0x389c4f['placeholder']||'Type\x20to\x20search...','maxItems':_0x389c4f['maxItems']||0x64,'loadItems':_0x389c4f['loadItems']||(async()=>[]),'renderItem':_0x389c4f['renderItem']||(_0x26b262=>({'primary':String(_0x26b262),'secondary':''})),'onSelect':_0x389c4f['onSelect']||(()=>{}),'filterItems':_0x389c4f['filterItems']||null,'getItemValue':_0x389c4f['getItemValue']||(_0x484c82=>_0x484c82),'sortItems':_0x389c4f['sortItems']||null,'debounceMs':_0x389c4f['debounceMs']||0xc8,'minCharsForSearch':_0x389c4f['minCharsForSearch']||0x0,'emptyMessage':_0x389c4f['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x389c4f['loadingMessage']||'Loading...','preload':_0x389c4f['preload']!==![],'searchMode':_0x389c4f['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',_0x3c431a=>this['onBlur'](_0x3c431a)),this['input']['addEventListener']('input',_0xd4a5f7=>this['onInput'](_0xd4a5f7)),this['input']['addEventListener']('keydown',_0x126f21=>this['onKeydown'](_0x126f21)),this['clearBtn']['addEventListener']('mousedown',_0x1b3292=>{_0x1b3292['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4477bd=>{_0x4477bd['preventDefault']();}),document['addEventListener']('click',_0x1c7445=>{!this['wrapper']['contains'](_0x1c7445['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(_0x318d46){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x318d46);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x4fca3e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x399e7c){const _0x1598e5=_0x399e7c['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1598e5);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1598e5):this['loadAndShow'](_0x1598e5);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x140a40){switch(_0x140a40['key']){case'ArrowDown':_0x140a40['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x140a40['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x140a40['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x140a40['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x26ec6f){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x228b5f=this['selectedIndex']+_0x26ec6f;if(_0x228b5f>=0x0&&_0x228b5f<this['filteredItems']['length']){this['selectedIndex']=_0x228b5f,this['updateSelectionHighlight']();const _0x158124=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x158124[this['selectedIndex']]&&_0x158124[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x54f9ae=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x54f9ae['forEach']((_0x43cc24,_0x57cd84)=>{_0x43cc24['classList']['toggle']('keyboard-selected',_0x57cd84===this['selectedIndex']);});}async['loadAndShow'](_0x225fc4){this['showLoading']();try{const _0x7e355b=await this['options']['loadItems'](_0x225fc4);if(this['options']['searchMode']==='server'){let _0x55d72f=_0x7e355b;this['options']['sortItems']&&(_0x55d72f=this['options']['sortItems']([..._0x7e355b]));this['filteredItems']=_0x55d72f;const _0x160684=this['filteredItems']['length']>=this['options']['maxItems'];_0x160684&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x160684),this['open']();}else this['allItems']=_0x7e355b,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x225fc4);}catch(_0x390726){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x390726),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3c1978){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3c1978):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x49fc1b=this['filteredItems']['length']>=this['options']['maxItems'];_0x49fc1b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x49fc1b),this['open']();}['renderItems'](_0x5bcb){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']((_0x290be0,_0x3aabd3)=>{const _0x16103f=document['createElement']('div');_0x16103f['className']='autocomplete-select-item',_0x16103f['setAttribute']('role','option'),_0x16103f['setAttribute']('data-index',_0x3aabd3);const _0x198075=this['options']['renderItem'](_0x290be0);let _0x232837='';_0x198075['icon']&&(_0x232837='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x198075['iconClass']||'')+'\x22>'+_0x198075['icon']+'</span>'),_0x16103f['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x232837+'\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'](_0x198075['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x198075['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x198075['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x16103f['addEventListener']('click',()=>{this['selectItem'](_0x290be0);}),_0x16103f['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3aabd3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x16103f);}),_0x5bcb?(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'](_0x414312){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x414312)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x5a880b){this['selectedItem']=_0x5a880b;const _0x3091cd=this['options']['renderItem'](_0x5a880b);this['input']['value']=_0x3091cd['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x5a880b);}['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'](_0x57678c){if(_0x57678c){this['selectedItem']=_0x57678c;const _0x4292ef=this['options']['renderItem'](_0x57678c);this['input']['value']=_0x4292ef['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x476c4b){this['allItems']=_0x476c4b,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'](_0x334b4a){this['input']['placeholder']=_0x334b4a;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3d6792=null){const _0x399757=document['getElementById']('admin-menu-container'),_0x2d5499=document['getElementById']('admin-menu-btn'),_0xec0951=document['getElementById']('admin-menu');if(!_0x399757||!_0x2d5499||!_0xec0951)return;try{!_0x3d6792&&(_0x3d6792=await API['getCurrentUser']());if(_0x3d6792){const _0x1d9b96=window['Permissions'],_0x1db6f1=_0x1d9b96['hasServerPermission'](_0x3d6792,'*')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:manage')||_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')||_0x1d9b96['hasTeamPermission'](_0x3d6792,'teams:manage')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:view_details');if(!_0x1db6f1)return;_0x399757['hidden']=![];if(!_0x1d9b96['hasServerPermission'](_0x3d6792,'*')){const _0x37e46f=_0xec0951['querySelectorAll']('.admin-menu-item');_0x37e46f['forEach'](_0x5e4dbf=>{const _0x184fb8=_0x5e4dbf['querySelector']('.option-text')?.['textContent']?.['trim']();_0x184fb8==='Users'&&!_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Skills'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Settings'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Health'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Git\x20History'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Roles'&&(_0x5e4dbf['hidden']=!![]);});}_0x2d5499['addEventListener']('click',_0x5bbd7e=>{_0x5bbd7e['stopPropagation']();const _0x58a6ca=document['getElementById']('actions-menu');if(_0x58a6ca)_0x58a6ca['hidden']=!![];_0xec0951['hidden']=!_0xec0951['hidden'];}),document['addEventListener']('click',_0x5a7159=>{!_0xec0951['hidden']&&!_0x2d5499['contains'](_0x5a7159['target'])&&!_0xec0951['contains'](_0x5a7159['target'])&&(_0xec0951['hidden']=!![]);}),document['addEventListener']('keydown',_0x544058=>{_0x544058['key']==='Escape'&&!_0xec0951['hidden']&&(_0xec0951['hidden']=!![]);});const _0xf93d10=document['getElementById']('server-health-btn');_0xf93d10&&_0xf93d10['addEventListener']('click',async()=>{_0xec0951['hidden']=!![];const {openServerHealthModal:_0x1dbb7e}=await import('./server-health.js');_0x1dbb7e();});}}catch(_0x2037e3){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x2037e3['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 _0x478d1e=window['location']['pathname'],_0x153d9d=_0x478d1e['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x153d9d)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x153d9d[0x1]),_0x153d9d[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x3ff65b={}){const _0x4cfaa5=new URLSearchParams();_0x3ff65b['userId']&&_0x4cfaa5['set']('userId',String(_0x3ff65b['userId']));_0x3ff65b['automation']&&_0x4cfaa5['set']('automation',String(_0x3ff65b['automation']));const _0x3a46e9=API_BASE+'/tasks/stats'+(_0x4cfaa5['toString']()?'?'+_0x4cfaa5['toString']():''),_0x42fbc8=await fetch(_0x3a46e9);if(!_0x42fbc8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x42fbc8['statusText']);return await _0x42fbc8['json']();},async 'getTasks'(_0x2f8d20={}){const _0x3a356c=new URLSearchParams();_0x2f8d20['status']&&_0x3a356c['set']('status',String(_0x2f8d20['status']));_0x2f8d20['environment']&&_0x3a356c['set']('environment',String(_0x2f8d20['environment']));_0x2f8d20['automation']&&_0x3a356c['set']('automation',String(_0x2f8d20['automation']));if(_0x2f8d20['include']){const _0x2ee5c9=Array['isArray'](_0x2f8d20['include'])?_0x2f8d20['include']['join'](','):String(_0x2f8d20['include']);_0x2ee5c9&&_0x3a356c['set']('include',_0x2ee5c9);}_0x2f8d20['filter']&&_0x3a356c['set']('filter',String(_0x2f8d20['filter']));_0x2f8d20['page']&&_0x3a356c['set']('page',String(_0x2f8d20['page']));_0x2f8d20['limit']&&_0x3a356c['set']('limit',String(_0x2f8d20['limit']));_0x2f8d20['userId']&&_0x3a356c['set']('userId',String(_0x2f8d20['userId']));_0x2f8d20['search']&&_0x3a356c['set']('search',String(_0x2f8d20['search']));_0x2f8d20['includeChildTasks']&&_0x3a356c['set']('includeChildTasks','true');const _0x105b79=API_BASE+'/tasks'+(_0x3a356c['toString']()?'?'+_0x3a356c['toString']():''),_0x22c0e2=await fetch(_0x105b79);if(!_0x22c0e2['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x22c0e2['statusText']);return await _0x22c0e2['json']();},async 'getAutomations'(_0x32a1ef={}){const _0x29f5a1=new URLSearchParams();_0x32a1ef['environment']&&_0x29f5a1['set']('environment',String(_0x32a1ef['environment']));const _0x2ba613=await fetch(API_BASE+'/api/automations'+(_0x29f5a1['toString']()?'?'+_0x29f5a1['toString']():''));if(!_0x2ba613['ok']){const _0x595f2a=await _0x2ba613['json']()['catch'](()=>({}));throw new Error(_0x595f2a['message']||_0x595f2a['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ba613['statusText']);}return await _0x2ba613['json']();},async 'getAutomation'(_0x5c18ad){const _0x1453c0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c18ad));if(!_0x1453c0['ok']){const _0x1e0774=await _0x1453c0['json']()['catch'](()=>({}));throw new Error(_0x1e0774['message']||_0x1e0774['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x1453c0['statusText']);}return await _0x1453c0['json']();},async 'createAutomation'(_0x935aab){const _0x54bec9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x935aab||{})});if(!_0x54bec9['ok']){const _0x21906d=await _0x54bec9['json']()['catch'](()=>({}));throw new Error(_0x21906d['message']||_0x21906d['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x54bec9['statusText']);}return await _0x54bec9['json']();},async 'updateAutomation'(_0x27a019,_0x18897f){const _0x410181=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x27a019),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18897f||{})});if(!_0x410181['ok']){const _0x4d3072=await _0x410181['json']()['catch'](()=>({}));throw new Error(_0x4d3072['message']||_0x4d3072['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x410181['statusText']);}return await _0x410181['json']();},async 'deleteAutomation'(_0x588e6e){const _0x4ae845=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x588e6e),{'method':'DELETE'});if(!_0x4ae845['ok']){const _0x41e3e7=await _0x4ae845['json']()['catch'](()=>({}));throw new Error(_0x41e3e7['message']||_0x41e3e7['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x4ae845['statusText']);}return await _0x4ae845['json']();},async 'triggerAutomation'(_0x38bf14){const _0x1495e4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x38bf14)+'/trigger',{'method':'POST'});if(!_0x1495e4['ok']){const _0x3a88a2=await _0x1495e4['json']()['catch'](()=>({}));throw new Error(_0x3a88a2['message']||_0x3a88a2['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x1495e4['statusText']);}return await _0x1495e4['json']();},async 'setAutomationEnabled'(_0xa81284,_0x47a1e7){const _0x3c8250=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa81284)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x47a1e7})});if(!_0x3c8250['ok']){const _0x109bc9=await _0x3c8250['json']()['catch'](()=>({}));throw new Error(_0x109bc9['message']||_0x109bc9['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x3c8250['statusText']);}return await _0x3c8250['json']();},async 'getAutomationHistory'(_0x5c1913,_0x4c8a57=0x32){const _0x5cbbd3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c1913)+'/history?limit='+encodeURIComponent(String(_0x4c8a57)));if(!_0x5cbbd3['ok']){const _0x5c004a=await _0x5cbbd3['json']()['catch'](()=>({}));throw new Error(_0x5c004a['message']||_0x5c004a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5cbbd3['statusText']);}return await _0x5cbbd3['json']();},async 'getTask'(_0x5d599a,_0x40dc7c={}){const _0x187bfb=new URLSearchParams();if(_0x40dc7c['include']){const _0x2adef7=Array['isArray'](_0x40dc7c['include'])?_0x40dc7c['include']['join'](','):String(_0x40dc7c['include']);if(_0x2adef7)_0x187bfb['set']('include',_0x2adef7);}const _0x39b1c3=await fetch(API_BASE+'/tasks/'+_0x5d599a+(_0x187bfb['toString']()?'?'+_0x187bfb['toString']():''));if(!_0x39b1c3['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x39b1c3['statusText']);return await _0x39b1c3['json']();},async 'getTaskResults'(_0x47268b){const _0x4af2e7=await fetch(API_BASE+'/tasks/'+_0x47268b+'/results');if(!_0x4af2e7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4af2e7['statusText']);return await _0x4af2e7['json']();},async 'getTaskPatches'(_0x2332e8){const _0x833c3a=await fetch(API_BASE+'/tasks/'+_0x2332e8+'/patches');if(!_0x833c3a['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x833c3a['statusText']);return await _0x833c3a['json']();},async 'getTaskAttachments'(_0x44218b){const _0x241683=await fetch(API_BASE+'/tasks/'+_0x44218b+'/attachments');if(!_0x241683['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x241683['statusText']);return await _0x241683['json']();},async 'uploadAttachments'(_0x57d105,_0x3cd3c9){const _0x1e2d84=new FormData();for(const _0x31c505 of _0x3cd3c9){_0x1e2d84['append']('attachments',_0x31c505);}const _0x1bd0d0=await fetch(API_BASE+'/tasks/'+_0x57d105+'/attachments',{'method':'POST','body':_0x1e2d84});if(!_0x1bd0d0['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x1bd0d0['statusText']);return await _0x1bd0d0['json']();},async 'isAINameGenerationAvailable'(){try{const _0x102192=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x102192['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x102192['json']();}catch(_0x424296){return{'available':![],'reason':_0x424296['message']};}},async 'generateTaskName'(_0x41406a){try{const _0x197bb5=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x41406a})});return await _0x197bb5['json']();}catch(_0x2f5643){return{'success':![],'error':_0x2f5643['message']};}},async 'createTask'(_0x507fc2){let _0x149dc2,_0x14a113={};if(_0x507fc2['files']&&_0x507fc2['files']['length']>0x0){const _0x243c40=new FormData();for(const [_0x5844d8,_0x306da0]of Object['entries'](_0x507fc2)){if(_0x5844d8!=='files'){if(_0x306da0==null)continue;typeof _0x306da0==='object'?_0x243c40['append'](_0x5844d8,JSON['stringify'](_0x306da0)):_0x243c40['append'](_0x5844d8,String(_0x306da0));}}for(const _0x2e90fc of _0x507fc2['files']){_0x243c40['append']('attachments',_0x2e90fc);}_0x149dc2=_0x243c40;}else _0x14a113['Content-Type']='application/json',_0x149dc2=JSON['stringify'](_0x507fc2);const _0x4aee42=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x14a113,'body':_0x149dc2});if(!_0x4aee42['ok']){const _0x154b75=await _0x4aee42['json'](),_0xeaefba=new Error(_0x154b75['error']||'Failed\x20to\x20create\x20task:\x20'+_0x4aee42['statusText']),{message:_0x3882cd,..._0x42d185}=_0x154b75;Object['assign'](_0xeaefba,_0x42d185);throw _0xeaefba;}return await _0x4aee42['json']();},async 'createTestTask'(_0x55758a){const _0xf7e1e3=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55758a)});if(!_0xf7e1e3['ok']){const _0x222c35=await _0xf7e1e3['json']();throw new Error(_0x222c35['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0xf7e1e3['statusText']);}return await _0xf7e1e3['json']();},async 'createEphemeralTest'(_0x3adca3){const _0x31b14e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3adca3)});if(!_0x31b14e['ok']){const _0x400f20=await _0x31b14e['json']();throw new Error(_0x400f20['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x31b14e['statusText']);}return await _0x31b14e['json']();},async 'createDeployTask'(_0xe54a85){const _0x2bfd99=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe54a85)});if(!_0x2bfd99['ok']){const _0x14dba9=await _0x2bfd99['json']();throw new Error(_0x14dba9['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2bfd99['statusText']);}return await _0x2bfd99['json']();},async 'getEnvironments'(){const _0x227c4e=await fetch(API_BASE+'/environments');if(!_0x227c4e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x227c4e['statusText']);return await _0x227c4e['json']();},async 'getEnvironment'(_0x4f6c1f){const _0x462327=await fetch(API_BASE+'/environments/'+_0x4f6c1f);if(!_0x462327['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x462327['statusText']);return await _0x462327['json']();},async 'getEnvironmentRepoHistory'(_0x3b3a35,_0x58cc79,_0x228cad={}){if(!_0x3b3a35||!_0x58cc79)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x8d9089=new URLSearchParams();if(_0x228cad['limit'])_0x8d9089['set']('limit',String(_0x228cad['limit']));if(_0x228cad['offset'])_0x8d9089['set']('offset',String(_0x228cad['offset']));if(_0x228cad['search'])_0x8d9089['set']('search',String(_0x228cad['search']));if(_0x228cad['branch'])_0x8d9089['set']('branch',String(_0x228cad['branch']));const _0x56c47a=API_BASE+'/environments/'+encodeURIComponent(_0x3b3a35)+'/repos/'+encodeURIComponent(_0x58cc79)+'/git/history',_0x25b399=await fetch(''+_0x56c47a+(_0x8d9089['toString']()?'?'+_0x8d9089['toString']():''));if(!_0x25b399['ok']){const _0x82d95f=await _0x25b399['json']()['catch'](()=>({}));throw new Error(_0x82d95f['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x25b399['statusText']);}return await _0x25b399['json']();},async 'getEnvironmentRepoCommit'(_0x27ab5b,_0x1cee47,_0x50d100){if(!_0x27ab5b||!_0x1cee47||!_0x50d100)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4c74c8=API_BASE+'/environments/'+encodeURIComponent(_0x27ab5b)+'/repos/'+encodeURIComponent(_0x1cee47)+'/git/commits/'+encodeURIComponent(_0x50d100),_0x273ad4=await fetch(_0x4c74c8);if(!_0x273ad4['ok']){const _0x4b81b9=await _0x273ad4['json']()['catch'](()=>({}));throw new Error(_0x4b81b9['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x273ad4['statusText']);}return await _0x273ad4['json']();},async 'getEnvironmentRepoBranches'(_0x3763d6,_0x4674ab){if(!_0x3763d6||!_0x4674ab)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a1378=API_BASE+'/environments/'+encodeURIComponent(_0x3763d6)+'/repos/'+encodeURIComponent(_0x4674ab)+'/git/branches',_0x51040d=await fetch(_0x3a1378);if(!_0x51040d['ok']){const _0x558c54=await _0x51040d['json']()['catch'](()=>({}));throw new Error(_0x558c54['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x51040d['statusText']);}return await _0x51040d['json']();},async 'revertEnvironmentRepoCommit'(_0x62487,_0x14cc89,_0x40d5df,_0xfc9fec={}){if(!_0x62487||!_0x14cc89||!_0x40d5df)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4e1099=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x62487)+'/repos/'+encodeURIComponent(_0x14cc89)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x40d5df,..._0xfc9fec})});if(!_0x4e1099['ok']){const _0x2ee149=await _0x4e1099['json']()['catch'](()=>({}));throw new Error(_0x2ee149['message']||_0x2ee149['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4e1099['statusText']);}return await _0x4e1099['json']();},async 'getTemplates'(_0x21a608={}){const _0x480d7e=new URLSearchParams();if(_0x21a608['include']){const _0x528cce=Array['isArray'](_0x21a608['include'])?_0x21a608['include']['join'](','):String(_0x21a608['include']);if(_0x528cce)_0x480d7e['set']('include',_0x528cce);}const _0x3b2e36=await fetch(API_BASE+'/templates'+(_0x480d7e['toString']()?'?'+_0x480d7e['toString']():''));if(!_0x3b2e36['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3b2e36['statusText']);return await _0x3b2e36['json']();},async 'getTemplatesForEnvironment'(_0x21843a,_0x39bdc1={}){if(!_0x21843a)throw new Error('Environment\x20name\x20is\x20required');const _0x157094=new URLSearchParams();if(_0x39bdc1['include']){const _0x15bd24=Array['isArray'](_0x39bdc1['include'])?_0x39bdc1['include']['join'](','):String(_0x39bdc1['include']);if(_0x15bd24)_0x157094['set']('include',_0x15bd24);}const _0x771b78=await fetch(API_BASE+'/templates/'+_0x21843a+(_0x157094['toString']()?'?'+_0x157094['toString']():''));if(!_0x771b78['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x21843a+':\x20'+_0x771b78['statusText']);return await _0x771b78['json']();},async 'getTemplate'(_0x56760e,_0x207dce,_0x3356f0={}){if(!_0x56760e||!_0x207dce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x4cba66=new URLSearchParams();if(_0x3356f0['include']){const _0x50a5e7=Array['isArray'](_0x3356f0['include'])?_0x3356f0['include']['join'](','):String(_0x3356f0['include']);if(_0x50a5e7)_0x4cba66['set']('include',_0x50a5e7);}const _0x940645=await fetch(API_BASE+'/templates/'+_0x56760e+'/'+_0x207dce+(_0x4cba66['toString']()?'?'+_0x4cba66['toString']():''));if(!_0x940645['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x940645['statusText']);return await _0x940645['json']();},async 'getTaskLogs'(_0x33c9ba,_0x3dbdc4={}){if(!_0x33c9ba)throw new Error('Task\x20ID\x20is\x20required');const _0xfe3a8b=new URLSearchParams();_0x3dbdc4['tail']&&_0xfe3a8b['set']('tail',String(_0x3dbdc4['tail']));const _0x49f4b4=await fetch(API_BASE+'/tasks/'+_0x33c9ba+'/logs'+(_0xfe3a8b['toString']()?'?'+_0xfe3a8b['toString']():''));if(!_0x49f4b4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x49f4b4['statusText']);return await _0x49f4b4['text']();},async 'getContainers'(){const _0x1b43ae=await fetch(API_BASE+'/containers');if(!_0x1b43ae['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1b43ae['statusText']);return await _0x1b43ae['json']();},async 'getContainer'(_0x3ece04){const _0x5ea67b=await fetch(API_BASE+'/containers/'+_0x3ece04);if(!_0x5ea67b['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ea67b['statusText']);return await _0x5ea67b['json']();},async 'startInteractiveContainer'(_0x3ae865){const _0x1bf748=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ae865)});if(!_0x1bf748['ok']){const _0x298881=await _0x1bf748['json']()['catch'](()=>({}));throw new Error(_0x298881['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1bf748['statusText']);}return await _0x1bf748['json']();},async 'stopContainer'(_0x3f5861){const _0x3a3c7f=await fetch(API_BASE+'/containers/'+_0x3f5861,{'method':'DELETE'});if(!_0x3a3c7f['ok']){const _0xc359ff=await _0x3a3c7f['json']()['catch'](()=>({}));throw new Error(_0xc359ff['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3a3c7f['statusText']);}return await _0x3a3c7f['json']();},async 'stopTask'(_0x45a5b8){if(!_0x45a5b8)throw new Error('Task\x20ID\x20is\x20required');const _0x11f746=await fetch(API_BASE+'/tasks/'+_0x45a5b8+'/stop',{'method':'POST'});if(!_0x11f746['ok']){const _0x1f76e8=await _0x11f746['json']()['catch'](()=>({}));throw new Error(_0x1f76e8['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x11f746['statusText']);}return await _0x11f746['json']();},async 'interruptTask'(_0x4bf36b){if(!_0x4bf36b)throw new Error('Task\x20ID\x20is\x20required');const _0x40cc74=await fetch(API_BASE+'/tasks/'+_0x4bf36b+'/interrupt',{'method':'POST'});if(!_0x40cc74['ok']){const _0xd5edfc=await _0x40cc74['json']()['catch'](()=>({}));throw new Error(_0xd5edfc['error']||_0xd5edfc['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x40cc74['statusText']);}return await _0x40cc74['json']();},async 'startTask'(_0x5b15a5){if(!_0x5b15a5)throw new Error('Task\x20ID\x20is\x20required');const _0x4e261f=await fetch(API_BASE+'/tasks/'+_0x5b15a5+'/start',{'method':'POST'});if(!_0x4e261f['ok']){const _0x138eb2=await _0x4e261f['json']()['catch'](()=>({}));throw new Error(_0x138eb2['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4e261f['statusText']);}return await _0x4e261f['json']();},async 'deleteTask'(_0x1804d1){if(!_0x1804d1)throw new Error('Task\x20ID\x20is\x20required');const _0x23fc56=await fetch(API_BASE+'/tasks/'+_0x1804d1,{'method':'DELETE'});if(!_0x23fc56['ok']){const _0x11866b=await _0x23fc56['json']()['catch'](()=>({}));throw new Error(_0x11866b['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x23fc56['statusText']);}return await _0x23fc56['json']();},async 'refreshTasksFromDisk'(){const _0x1f02d9=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1f02d9['ok']){const _0x11038c=await _0x1f02d9['json']()['catch'](()=>({}));throw new Error(_0x11038c['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1f02d9['statusText']);}return await _0x1f02d9['json']();},async 'approveTask'(_0x388316,_0x4652b8={}){if(!_0x388316)throw new Error('Task\x20ID\x20is\x20required');const _0x512a4c={'commit_message':_0x4652b8['commit_message']||'','pull':_0x4652b8['pull']??![],'push':_0x4652b8['push']??![]};_0x4652b8['new_branch']&&(_0x512a4c['new_branch']=_0x4652b8['new_branch']);const _0x1411e7=await fetch(API_BASE+'/tasks/'+_0x388316+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x512a4c)});if(!_0x1411e7['ok']){const _0x49c7ba=await _0x1411e7['json']()['catch'](()=>({}));let _0xfe6d92=_0x49c7ba['error']||_0x49c7ba['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1411e7['statusText'];if(_0x49c7ba['results']&&Array['isArray'](_0x49c7ba['results'])){const _0x44ea70=_0x49c7ba['results']['filter'](_0x5e6f0f=>!_0x5e6f0f['success']&&_0x5e6f0f['error']);_0x44ea70['length']>0x0&&(_0xfe6d92=_0x44ea70[0x0]['error']);}throw new Error(_0xfe6d92);}return await _0x1411e7['json']();},async 'getPullRequestInfo'(_0x550a89){if(!_0x550a89)throw new Error('Task\x20ID\x20is\x20required');const _0x4fbdae=await fetch(API_BASE+'/tasks/'+_0x550a89+'/pull-request-info');if(!_0x4fbdae['ok']){const _0x42916b=await _0x4fbdae['json']()['catch'](()=>({}));throw new Error(_0x42916b['error']||_0x42916b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4fbdae['statusText']);}return await _0x4fbdae['json']();},async 'createPullRequests'(_0x32ebe2,_0x1a1262){if(!_0x32ebe2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1262||!Array['isArray'](_0x1a1262))throw new Error('repos\x20array\x20is\x20required');const _0x33772e=await fetch(API_BASE+'/tasks/'+_0x32ebe2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1a1262})});if(!_0x33772e['ok']){const _0x1c2cf3=await _0x33772e['json']()['catch'](()=>({}));let _0x397e4f=_0x1c2cf3['error']||_0x1c2cf3['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x33772e['statusText'];if(_0x1c2cf3['results']&&Array['isArray'](_0x1c2cf3['results'])){const _0x5044f3=_0x1c2cf3['results']['filter'](_0x2d9cb7=>!_0x2d9cb7['success']&&_0x2d9cb7['error']);_0x5044f3['length']>0x0&&(_0x397e4f=_0x5044f3[0x0]['error']);}throw new Error(_0x397e4f);}return await _0x33772e['json']();},async 'syncRepos'(_0x5b8e57){if(!_0x5b8e57)throw new Error('Task\x20ID\x20is\x20required');const _0x102493=await fetch(API_BASE+'/tasks/'+_0x5b8e57+'/sync-repos',{'method':'POST'});if(!_0x102493['ok']){const _0x38c2b5=await _0x102493['json']()['catch'](()=>({}));throw new Error(_0x38c2b5['error']||_0x38c2b5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x102493['statusText']);}return await _0x102493['json']();},async 'getIbmiSyncInfo'(_0x4e702d){if(!_0x4e702d)throw new Error('Task\x20ID\x20is\x20required');const _0x328ec3=await fetch(API_BASE+'/tasks/'+_0x4e702d+'/ibmi-sync-info');if(!_0x328ec3['ok']){const _0x3ebb49=await _0x328ec3['json']()['catch'](()=>({}));throw new Error(_0x3ebb49['error']||_0x3ebb49['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x328ec3['json']();},async 'getSyncFiles'(_0x44c55e){if(!_0x44c55e)throw new Error('Task\x20ID\x20is\x20required');const _0x5368f9=await fetch(API_BASE+'/tasks/'+_0x44c55e+'/sync-to-ibmi/files');if(!_0x5368f9['ok']){const _0x533ccc=await _0x5368f9['json']()['catch'](()=>({}));throw new Error(_0x533ccc['error']||_0x533ccc['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5368f9['json']();},async 'syncToIbmi'(_0x14f191,_0x27ee64,_0x53319f=null,_0x252fa2=null,_0x28f3a4=null){if(!_0x14f191)throw new Error('Task\x20ID\x20is\x20required');const _0x106abb={'library':_0x27ee64};if(_0x53319f)_0x106abb['user']=_0x53319f;if(_0x252fa2)_0x106abb['password']=_0x252fa2;if(_0x28f3a4)_0x106abb['files']=_0x28f3a4;const _0x13cb17=await fetch(API_BASE+'/tasks/'+_0x14f191+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x106abb)});if(!_0x13cb17['ok']){const _0x146f83=await _0x13cb17['json']()['catch'](()=>({}));throw new Error(_0x146f83['error']||_0x146f83['message']||'Sync\x20failed');}return await _0x13cb17['json']();},async 'getIbmiSyncLog'(_0x7894f9){if(!_0x7894f9)throw new Error('Task\x20ID\x20is\x20required');const _0x3d813c=await fetch(API_BASE+'/tasks/'+_0x7894f9+'/ibmi-sync-log');if(!_0x3d813c['ok']){const _0xf1373c=await _0x3d813c['json']()['catch'](()=>({}));throw new Error(_0xf1373c['error']||_0xf1373c['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3d813c['json']();},async 'pullChanges'(_0x40265e){if(!_0x40265e)throw new Error('Task\x20ID\x20is\x20required');const _0x3685aa=await fetch(API_BASE+'/tasks/'+_0x40265e+'/pull-changes',{'method':'POST'});if(!_0x3685aa['ok']){const _0x567a1b=await _0x3685aa['json']()['catch'](()=>({}));throw new Error(_0x567a1b['error']||_0x567a1b['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x3685aa['statusText']);}return await _0x3685aa['json']();},async 'readFile'(_0x14152c,_0x41264c){if(!_0x14152c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41264c)throw new Error('File\x20path\x20is\x20required');const _0x31ff5d=await fetch(API_BASE+'/tasks/'+_0x14152c+'/files?path='+encodeURIComponent(_0x41264c));if(!_0x31ff5d['ok']){const _0xe3b6d2=await _0x31ff5d['json']()['catch'](()=>({}));throw new Error(_0xe3b6d2['error']||_0xe3b6d2['message']||'Failed\x20to\x20read\x20file:\x20'+_0x31ff5d['statusText']);}return await _0x31ff5d['json']();},'getTaskFileDownloadUrl'(_0x53c797,_0x3fc7a4){if(!_0x53c797)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3fc7a4)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x53c797+'/files/download?path='+encodeURIComponent(_0x3fc7a4);},async 'writeFile'(_0x196fad,_0x5668d9,_0x3dc05c){if(!_0x196fad)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5668d9)throw new Error('File\x20path\x20is\x20required');if(_0x3dc05c===undefined)throw new Error('Content\x20is\x20required');const _0x2ec565=await fetch(API_BASE+'/tasks/'+_0x196fad+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5668d9,'content':_0x3dc05c})});if(!_0x2ec565['ok']){const _0x48f841=await _0x2ec565['json']()['catch'](()=>({}));throw new Error(_0x48f841['error']||_0x48f841['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2ec565['statusText']);}return await _0x2ec565['json']();},async 'uploadTaskFiles'(_0x261279,_0x4292b8,_0x557588){if(!_0x261279)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4292b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x557588||_0x557588['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4fd1a9=new FormData();_0x4fd1a9['append']('targetDir',_0x4292b8);for(const _0x3d9f49 of _0x557588){_0x4fd1a9['append']('files',_0x3d9f49,_0x3d9f49['name']);}const _0x4d9563=await fetch(API_BASE+'/tasks/'+_0x261279+'/files/upload',{'method':'POST','body':_0x4fd1a9});if(!_0x4d9563['ok']){const _0x628efd=await _0x4d9563['json']()['catch'](()=>({}));throw new Error(_0x628efd['error']||_0x628efd['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x4d9563['statusText']);}return await _0x4d9563['json']();},async 'deleteFile'(_0x31668f,_0x336777){if(!_0x31668f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x336777)throw new Error('File\x20path\x20is\x20required');const _0x2ed69f=await fetch(API_BASE+'/tasks/'+_0x31668f+'/files?path='+encodeURIComponent(_0x336777),{'method':'DELETE'});if(!_0x2ed69f['ok']){const _0x45efe8=await _0x2ed69f['json']()['catch'](()=>({}));throw new Error(_0x45efe8['error']||_0x45efe8['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2ed69f['statusText']);}return await _0x2ed69f['json']();},async 'discardFile'(_0x5a5548,_0x5d871e,_0xf17b6e){if(!_0x5a5548)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d871e)throw new Error('File\x20path\x20is\x20required');if(!_0xf17b6e)throw new Error('Repository\x20path\x20is\x20required');const _0x2fad69=await fetch(API_BASE+'/tasks/'+_0x5a5548+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d871e,'repoPath':_0xf17b6e})});if(!_0x2fad69['ok']){const _0x15c8ce=await _0x2fad69['json']()['catch'](()=>({}));throw new Error(_0x15c8ce['error']||_0x15c8ce['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2fad69['statusText']);}return await _0x2fad69['json']();},async 'followUpTask'(_0xb73778,_0x59d33d={}){if(!_0xb73778)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59d33d['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x50f9ed,_0x448a27={};if(_0x59d33d['files']&&_0x59d33d['files']['length']>0x0){const _0xa2540=new FormData();_0xa2540['append']('instructions',_0x59d33d['instructions']);for(const _0xd99d5 of _0x59d33d['files']){_0xa2540['append']('attachments',_0xd99d5);}_0x50f9ed=_0xa2540;}else _0x448a27['Content-Type']='application/json',_0x50f9ed=JSON['stringify']({'instructions':_0x59d33d['instructions']});const _0xa6a7e7=await fetch(API_BASE+'/tasks/'+_0xb73778+'/follow-up',{'method':'POST','headers':_0x448a27,'body':_0x50f9ed});if(!_0xa6a7e7['ok']){const _0x306711=await _0xa6a7e7['json']()['catch'](()=>({}));throw new Error(_0x306711['error']||_0x306711['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xa6a7e7['statusText']);}return await _0xa6a7e7['json']();},async 'getTaskRewindPoints'(_0x4449cb){if(!_0x4449cb)throw new Error('Task\x20ID\x20is\x20required');const _0x8b7d2d=await fetch(API_BASE+'/tasks/'+_0x4449cb+'/rewind-points');if(!_0x8b7d2d['ok']){const _0x32b5a6=await _0x8b7d2d['json']()['catch'](()=>({}));throw new Error(_0x32b5a6['error']||_0x32b5a6['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x8b7d2d['statusText']);}return await _0x8b7d2d['json']();},async 'rewindTask'(_0x3c582e,_0x3e648d={}){if(!_0x3c582e)throw new Error('Task\x20ID\x20is\x20required');const _0x222d55=Number['isInteger'](_0x3e648d['targetFollowUpCount'])?_0x3e648d['targetFollowUpCount']:0x0,_0x5ecc1e={'targetFollowUpCount':_0x222d55};typeof _0x3e648d['instructions']==='string'&&_0x3e648d['instructions']['trim']()&&(_0x5ecc1e['instructions']=_0x3e648d['instructions']['trim']());typeof _0x3e648d['rewindFiles']==='boolean'&&(_0x5ecc1e['rewindFiles']=_0x3e648d['rewindFiles']);const _0x409255=await fetch(API_BASE+'/tasks/'+_0x3c582e+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ecc1e)});if(!_0x409255['ok']){const _0x16c682=await _0x409255['json']()['catch'](()=>({}));throw new Error(_0x16c682['error']||_0x16c682['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x409255['statusText']);}return await _0x409255['json']();},async 'login'(_0x1282aa,_0x12309c){const _0x120204=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1282aa,'password':_0x12309c})});if(!_0x120204['ok']){const _0x353846=await _0x120204['json']();throw new Error(_0x353846['message']||'Login\x20failed');}return await _0x120204['json']();},async 'logout'(){const _0x4b66a2=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4b66a2['ok']){const _0x18f285=await _0x4b66a2['json']();throw new Error(_0x18f285['message']||'Logout\x20failed');}return await _0x4b66a2['json']();},async 'getCurrentUser'(){const _0x4687f1=await fetch(API_BASE+'/auth/me');if(!_0x4687f1['ok'])throw new Error('Not\x20authenticated');const _0x362de1=await _0x4687f1['json']();return _0x362de1['user'];},async 'getRolesInfo'(){const _0x42b66f=await fetch(API_BASE+'/users/roles');if(!_0x42b66f['ok']){const _0x132c3b=await _0x42b66f['json']();throw new Error(_0x132c3b['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x42b66f['json']();},async 'getUsers'(){const _0x5c87b8=await fetch(API_BASE+'/users');if(!_0x5c87b8['ok']){const _0x5d19cb=await _0x5c87b8['json']();throw new Error(_0x5d19cb['message']||'Failed\x20to\x20get\x20users');}return await _0x5c87b8['json']();},async 'getUser'(_0x51cfd9){const _0x3b4068=await fetch(API_BASE+'/users/'+_0x51cfd9);if(!_0x3b4068['ok']){const _0x1cf0ed=await _0x3b4068['json']();throw new Error(_0x1cf0ed['message']||'Failed\x20to\x20get\x20user');}return await _0x3b4068['json']();},async 'createUser'(_0x37e4f5){const _0x46d3d3=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37e4f5)});if(!_0x46d3d3['ok']){const _0x3e8c09=await _0x46d3d3['json']();throw new Error(_0x3e8c09['message']||'Failed\x20to\x20create\x20user');}return await _0x46d3d3['json']();},async 'updateUser'(_0x3524c7,_0x3f2f06){const _0x1ff7ff=await fetch(API_BASE+'/users/'+_0x3524c7,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f2f06)});if(!_0x1ff7ff['ok']){const _0x3f6581=await _0x1ff7ff['json']();throw new Error(_0x3f6581['message']||'Failed\x20to\x20update\x20user');}return await _0x1ff7ff['json']();},async 'deleteUser'(_0x388463){const _0x32c54d=await fetch(API_BASE+'/users/'+_0x388463,{'method':'DELETE'});if(!_0x32c54d['ok']){const _0x491413=await _0x32c54d['json']();throw new Error(_0x491413['message']||'Failed\x20to\x20delete\x20user');}return await _0x32c54d['json']();},async 'stopAllContainers'(){const _0x10ce30=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x344f5c=await _0x10ce30['json']()['catch'](()=>({}));if(!_0x10ce30['ok'])throw new Error(_0x344f5c['message']||_0x344f5c['error']||'Failed\x20to\x20stop\x20containers');return _0x344f5c;},async 'removeStoppedContainers'(){const _0x2e2e45=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x56180d=await _0x2e2e45['json']()['catch'](()=>({}));if(!_0x2e2e45['ok'])throw new Error(_0x56180d['message']||_0x56180d['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x56180d;},async 'pruneDockerResources'(){const _0x326b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x2f868c=await _0x326b22['json']()['catch'](()=>({}));if(!_0x326b22['ok'])throw new Error(_0x2f868c['message']||_0x2f868c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x2f868c;},async 'createPasswordToken'(_0x55af5f,_0x2a6570='setup',_0x199008=![]){const _0x33bb5f=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x55af5f,'type':_0x2a6570,'sendEmail':_0x199008})});if(!_0x33bb5f['ok']){const _0x3b8911=await _0x33bb5f['json']();throw new Error(_0x3b8911['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x33bb5f['json']();},async 'getEmailConfig'(){const _0x265ec1=await fetch(API_BASE+'/password/email-config');if(!_0x265ec1['ok']){const _0x1ba1f2=await _0x265ec1['json']();throw new Error(_0x1ba1f2['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x265ec1['json']();},async 'updateTaskName'(_0x4ed290,_0x4defd9){const _0x5bd402=await fetch(API_BASE+'/tasks/'+_0x4ed290,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4defd9})});if(!_0x5bd402['ok']){const _0x47cfeb=await _0x5bd402['json']();throw new Error(_0x47cfeb['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5bd402['json']();},async 'pinTask'(_0x32901b,_0x34943d,_0x439880=null){if(!_0x32901b)throw new Error('Task\x20ID\x20is\x20required');const _0x2aeb38={'pinned':_0x34943d};_0x439880&&_0x439880['length']>0x0&&(_0x2aeb38['additionalTaskIds']=_0x439880);const _0x1b40b1=await fetch(API_BASE+'/tasks/'+_0x32901b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2aeb38)});if(!_0x1b40b1['ok']){const _0xf80518=await _0x1b40b1['json']();throw new Error(_0xf80518['error']||'Failed\x20to\x20pin\x20task');}return await _0x1b40b1['json']();},async 'setTaskWinner'(_0x599f72,_0x771bde,_0x85571=[]){if(!_0x599f72)throw new Error('Task\x20ID\x20is\x20required');const _0x1a1352=await fetch(API_BASE+'/tasks/'+_0x599f72+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x771bde,'siblings':_0x85571})});if(!_0x1a1352['ok']){const _0x2560e3=await _0x1a1352['json']();throw new Error(_0x2560e3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1a1352['json']();},async 'setTaskLoser'(_0x1237c2,_0x570e49){if(!_0x1237c2)throw new Error('Task\x20ID\x20is\x20required');const _0x2c89c0=await fetch(API_BASE+'/tasks/'+_0x1237c2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x570e49})});if(!_0x2c89c0['ok']){const _0x22c4da=await _0x2c89c0['json']();throw new Error(_0x22c4da['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2c89c0['json']();},async 'createTaskGroup'(_0x4b8468){const _0xe6a20c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b8468)});if(!_0xe6a20c['ok']){const _0x12be75=await _0xe6a20c['json']();throw new Error(_0x12be75['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0xe6a20c['json']();},async 'getTaskGroups'(_0x224168={}){const _0x373637=new URLSearchParams();if(_0x224168['userId'])_0x373637['set']('userId',String(_0x224168['userId']));if(_0x224168['status'])_0x373637['set']('status',String(_0x224168['status']));if(_0x224168['limit'])_0x373637['set']('limit',String(_0x224168['limit']));const _0x48e606=API_BASE+'/tasks/groups'+(_0x373637['toString']()?'?'+_0x373637['toString']():''),_0x2a0f05=await fetch(_0x48e606);if(!_0x2a0f05['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2a0f05['json']();},async 'getTaskGroup'(_0x3f6028){const _0x448032=await fetch(API_BASE+'/tasks/groups/'+_0x3f6028);if(!_0x448032['ok']){const _0x1213fc=await _0x448032['json']();throw new Error(_0x1213fc['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x448032['json']();},async 'updateTaskGroup'(_0x4991ea,_0x2f943b,_0x38b937){const _0x2a1ecc=await fetch(API_BASE+'/tasks/'+_0x4991ea+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x2f943b,'groupIndex':_0x38b937})});if(!_0x2a1ecc['ok']){const _0x2344f9=await _0x2a1ecc['json']();throw new Error(_0x2344f9['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2a1ecc['json']();},async 'removeTaskFromGroup'(_0x1b6eab){return this['updateTaskGroup'](_0x1b6eab,null,null);},async 'deleteTaskGroup'(_0x22de05,_0x1f8f32=![]){const _0x4d18fd=_0x1f8f32?'?deleteTasks=true':'',_0x563c09=await fetch(API_BASE+'/tasks/groups/'+_0x22de05+_0x4d18fd,{'method':'DELETE'});if(!_0x563c09['ok']){const _0x63c96a=await _0x563c09['json']();throw new Error(_0x63c96a['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xb93960,_0x22a8f5){const _0x29bdd2=await fetch(API_BASE+'/tasks/groups/'+_0xb93960+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x22a8f5})});if(!_0x29bdd2['ok']){const _0x128778=await _0x29bdd2['json']();throw new Error(_0x128778['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x29bdd2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x1a55cf){if(!_0x1a55cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4b1c2f=await fetch(API_BASE+'/tasks/'+_0x1a55cf+'/comments');if(!_0x4b1c2f['ok']){const _0x8bca60=await _0x4b1c2f['json']()['catch'](()=>({}));throw new Error(_0x8bca60['error']||'Failed\x20to\x20get\x20comments');}return await _0x4b1c2f['json']();},async 'addComment'(_0x3bc104,_0x45fa70){if(!_0x3bc104)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45fa70)throw new Error('Comment\x20content\x20is\x20required');const _0x542e4a=await fetch(API_BASE+'/tasks/'+_0x3bc104+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x45fa70})});if(!_0x542e4a['ok']){const _0xf4ca22=await _0x542e4a['json']()['catch'](()=>({}));throw new Error(_0xf4ca22['error']||'Failed\x20to\x20add\x20comment');}return await _0x542e4a['json']();},async 'updateComment'(_0x2d2277,_0x429515,_0x25a90a){if(!_0x2d2277)throw new Error('Task\x20ID\x20is\x20required');if(!_0x429515)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x25a90a)throw new Error('Comment\x20content\x20is\x20required');const _0x4940ca=await fetch(API_BASE+'/tasks/'+_0x2d2277+'/comments/'+_0x429515,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x25a90a})});if(!_0x4940ca['ok']){const _0x4c04f1=await _0x4940ca['json']()['catch'](()=>({}));throw new Error(_0x4c04f1['error']||'Failed\x20to\x20update\x20comment');}return await _0x4940ca['json']();},async 'deleteComment'(_0x59ec5f,_0x2ababe){if(!_0x59ec5f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ababe)throw new Error('Comment\x20ID\x20is\x20required');const _0x371d68=await fetch(API_BASE+'/tasks/'+_0x59ec5f+'/comments/'+_0x2ababe,{'method':'DELETE'});if(!_0x371d68['ok']){const _0x393a29=await _0x371d68['json']()['catch'](()=>({}));throw new Error(_0x393a29['error']||'Failed\x20to\x20delete\x20comment');}return await _0x371d68['json']();},async 'createObjective'(_0x112975){const _0x70ac76={'objective':!![],'name':_0x112975['name']||'','environment':_0x112975['environment']||null,'agents':_0x112975['agents']||[],'branches':_0x112975['branches']||{},'isPinned':_0x112975['isPinned']||![],'parentObjectiveId':_0x112975['parentObjectiveId']||null,'env_vars':_0x112975['envVars']||{},'parameters':{'instructions':_0x112975['instructions']||''},'files':_0x112975['files']||[],'jira':_0x112975['jira']||null};return this['createTask'](_0x70ac76);},async 'updateObjective'(_0x33afe8,_0x25fc71,_0x435aed=[],_0x382922=[]){let _0x216e9c,_0x51979c={};const _0x3c2eb2={..._0x25fc71};_0x382922&&_0x382922['length']>0x0&&(_0x3c2eb2['removeAttachments']=_0x382922);if(_0x435aed&&_0x435aed['length']>0x0){const _0x1da3a2=new FormData();for(const [_0x1517df,_0x2ac6b0]of Object['entries'](_0x3c2eb2)){if(_0x2ac6b0==null)continue;typeof _0x2ac6b0==='object'?_0x1da3a2['append'](_0x1517df,JSON['stringify'](_0x2ac6b0)):_0x1da3a2['append'](_0x1517df,String(_0x2ac6b0));}for(const _0x16e12f of _0x435aed){_0x1da3a2['append']('attachments',_0x16e12f);}_0x216e9c=_0x1da3a2;}else _0x51979c['Content-Type']='application/json',_0x216e9c=JSON['stringify'](_0x3c2eb2);const _0x1a0f15=await fetch(API_BASE+'/tasks/'+_0x33afe8,{'method':'PATCH','headers':_0x51979c,'body':_0x216e9c});if(!_0x1a0f15['ok']){const _0x37785e=await _0x1a0f15['json']();throw new Error(_0x37785e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1a0f15['json']();},async 'deleteObjective'(_0x172d63){return this['deleteTask'](_0x172d63);},async 'launchObjective'(_0x1c54d7,_0x19a519={}){const _0x37053d=await fetch(API_BASE+'/tasks/'+_0x1c54d7+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19a519)});if(!_0x37053d['ok']){const _0x1e9b00=await _0x37053d['json']();throw new Error(_0x1e9b00['error']||'Failed\x20to\x20launch\x20objective');}return await _0x37053d['json']();},async 'getObjectiveAttachments'(_0xecd05a){return this['getTaskAttachments'](_0xecd05a);},async 'createJudgeTask'({environment:_0x15a809,judgeAgent:_0x183d8e,groupId:_0xd86d3a,taskIds:_0x4c97b2,judgeCustomInstructions:_0x556405,isPinned:_0x1144ab}){const _0x159ac0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x15a809,'judgeAgent':_0x183d8e,'groupId':_0xd86d3a,'taskIds':_0x4c97b2,'judgeCustomInstructions':_0x556405,'isPinned':_0x1144ab})});if(!_0x159ac0['ok']){const _0x54a30a=await _0x159ac0['json']();throw new Error(_0x54a30a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x159ac0['json']();},async 'getJudgeTasks'(_0x120bbb){const _0x460e65=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x120bbb));if(!_0x460e65['ok']){const _0xb03103=await _0x460e65['json']();throw new Error(_0xb03103['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x460e65['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x578006,_0x30dbf0,_0x67a9b3=''){const _0x12e187=await fetch(API_BASE+'/tasks/'+_0x578006+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x30dbf0,'customPreamble':_0x67a9b3})});if(!_0x12e187['ok']){const _0x54f8ce=await _0x12e187['json']();throw new Error(_0x54f8ce['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x12e187['json']();},async 'getJiraConfig'(){const _0x7c1243=await fetch(API_BASE+'/jira/config');if(!_0x7c1243['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x7c1243['json']();},async 'getJiraIssue'(_0x1decd1){const _0x1fd023=await fetch(API_BASE+'/jira/issues/'+_0x1decd1);if(!_0x1fd023['ok']){const _0x20a8c8=await _0x1fd023['json']()['catch'](()=>({}));throw new Error(_0x20a8c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1fd023['statusText']);}return await _0x1fd023['json']();},async 'searchJiraIssues'(_0x57206c,_0x2aea51=0x14){const _0x46651f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x57206c,'maxResults':_0x2aea51})});if(!_0x46651f['ok']){const _0xe3359e=await _0x46651f['json']()['catch'](()=>({}));throw new Error(_0xe3359e['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x46651f['statusText']);}return await _0x46651f['json']();},async 'postJiraComment'(_0x116920,_0x584dbb){const _0x980f41=await fetch(API_BASE+'/jira/issues/'+_0x116920+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x584dbb})});if(!_0x980f41['ok']){const _0x280041=await _0x980f41['json']()['catch'](()=>({}));throw new Error(_0x280041['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x980f41['statusText']);}return await _0x980f41['json']();},async 'getJiraComments'(_0x922dba){const _0x4e5a7a=await fetch(API_BASE+'/jira/issues/'+_0x922dba+'/comments');if(!_0x4e5a7a['ok']){const _0xc35359=await _0x4e5a7a['json']()['catch'](()=>({}));throw new Error(_0xc35359['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x4e5a7a['statusText']);}return await _0x4e5a7a['json']();},async 'promptParameter'({environment:_0xbea5a2,command:_0x172554,parser:parser='json'}){const _0x310551=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xbea5a2,'command':_0x172554,'parser':parser})});if(!_0x310551['ok']){const _0xeb14e2=await _0x310551['json']()['catch'](()=>({}));throw new Error(_0xeb14e2['message']||_0xeb14e2['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x310551['statusText']);}return await _0x310551['json']();},async 'promptParameterStream'(_0x1abee0,_0x5f10a6){const _0x251005=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1abee0)});if(!_0x251005['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x251005['statusText']);const _0x242da5=_0x251005['body']['getReader'](),_0x4d3b34=new TextDecoder();let _0x22af1d='';return new Promise((_0x19568c,_0x367abc)=>{const _0x461f58=async()=>{try{const {done:_0x44cdfe,value:_0x4164b3}=await _0x242da5['read']();if(_0x44cdfe)return;_0x22af1d+=_0x4d3b34['decode'](_0x4164b3,{'stream':!![]});const _0x3dfb79=_0x22af1d['split']('\x0a\x0a');_0x22af1d=_0x3dfb79['pop']()||'';for(const _0x36a639 of _0x3dfb79){if(!_0x36a639['trim']())continue;const _0x5daa9f=_0x36a639['split']('\x0a');let _0x156131='message',_0x114808='';for(const _0x1307a2 of _0x5daa9f){if(_0x1307a2['startsWith']('event:'))_0x156131=_0x1307a2['substring'](0x6)['trim']();else _0x1307a2['startsWith']('data:')&&(_0x114808=_0x1307a2['substring'](0x5)['trim']());}if(!_0x114808)continue;try{const _0x2bca7c=JSON['parse'](_0x114808);if(_0x156131==='progress'&&_0x5f10a6)_0x5f10a6(_0x2bca7c['stage'],_0x2bca7c['message']);else{if(_0x156131==='result'){_0x19568c(_0x2bca7c);return;}else{if(_0x156131==='error'){let _0x506802=_0x2bca7c['message']||_0x2bca7c['error']||'Prompt\x20command\x20failed';_0x2bca7c['rawOutput']&&(_0x506802+='\x0a\x0aRaw\x20output:\x0a'+_0x2bca7c['rawOutput']);_0x367abc(new Error(_0x506802));return;}}}}catch(_0x5c7eb3){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5c7eb3),console['error']('Event\x20type:',_0x156131),console['error']('Event\x20data:',_0x114808),console['error']('First\x20200\x20chars:',_0x114808['substring'](0x0,0xc8)),_0x367abc(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5c7eb3['message']+'\x0a\x0aData:\x20'+_0x114808['substring'](0x0,0x1f4)));return;}}_0x461f58();}catch(_0x29235a){_0x367abc(_0x29235a);}};_0x461f58();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x1673ae){const _0x58082f=await fetch(''+API_BASE+_0x1673ae);if(!_0x58082f['ok']){const _0xb1a72e=await _0x58082f['json']()['catch'](()=>({'error':_0x58082f['statusText']})),_0x4f8acf=new Error(_0xb1a72e['error']||_0xb1a72e['message']||_0x58082f['statusText']);if(_0xb1a72e['detail']!==undefined)_0x4f8acf['detail']=_0xb1a72e['detail'];throw _0x4f8acf;}return await _0x58082f['json']();},async 'post'(_0x510ea6,_0x5bb817){const _0x5aabb1=await fetch(''+API_BASE+_0x510ea6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5bb817)});if(!_0x5aabb1['ok']){const _0x5a3a85=await _0x5aabb1['json']()['catch'](()=>({'error':_0x5aabb1['statusText']})),_0x37bc97=new Error(_0x5a3a85['error']||_0x5a3a85['message']||_0x5aabb1['statusText']);if(_0x5a3a85['detail']!==undefined)_0x37bc97['detail']=_0x5a3a85['detail'];throw _0x37bc97;}return await _0x5aabb1['json']();},async 'put'(_0x7a594c,_0x413681){const _0x40c66a=await fetch(''+API_BASE+_0x7a594c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x413681)});if(!_0x40c66a['ok']){const _0x5a8ae7=await _0x40c66a['json']()['catch'](()=>({'error':_0x40c66a['statusText']})),_0x516a44=new Error(_0x5a8ae7['error']||_0x5a8ae7['message']||_0x40c66a['statusText']);if(_0x5a8ae7['detail']!==undefined)_0x516a44['detail']=_0x5a8ae7['detail'];throw _0x516a44;}return await _0x40c66a['json']();},async 'delete'(_0x2ec75f,_0x3aee42){const _0x6019d8={'method':'DELETE'};_0x3aee42&&(_0x6019d8['headers']={'Content-Type':'application/json'},_0x6019d8['body']=JSON['stringify'](_0x3aee42));const _0x1df987=await fetch(''+API_BASE+_0x2ec75f,_0x6019d8);if(!_0x1df987['ok']){const _0x1a88bd=await _0x1df987['json']()['catch'](()=>({'error':_0x1df987['statusText']})),_0x216189=new Error(_0x1a88bd['error']||_0x1a88bd['message']||_0x1df987['statusText']);if(_0x1a88bd['detail']!==undefined)_0x216189['detail']=_0x1a88bd['detail'];throw _0x216189;}return await _0x1df987['json']();},async 'getSkills'(){const _0x2b8603=await fetch(API_BASE+'/skills');if(!_0x2b8603['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2b8603['statusText']);return await _0x2b8603['json']();},async 'getSkill'(_0x36e7c9){const _0x11faff=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36e7c9));if(!_0x11faff['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x11faff['statusText']);return await _0x11faff['json']();},async 'createSkill'(_0x241aac){const _0x511d69=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x241aac)});if(!_0x511d69['ok']){const _0x4ec2e6=await _0x511d69['json']()['catch'](()=>({'error':_0x511d69['statusText']})),_0x2b5b7a=new Error(_0x4ec2e6['error']||_0x4ec2e6['message']||_0x511d69['statusText']);if(_0x4ec2e6['detail']!==undefined)_0x2b5b7a['detail']=_0x4ec2e6['detail'];throw _0x2b5b7a;}return await _0x511d69['json']();},async 'updateSkill'(_0x1b8136,_0x498246){const _0x746197=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b8136),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498246)});if(!_0x746197['ok']){const _0x517806=await _0x746197['json']()['catch'](()=>({'error':_0x746197['statusText']})),_0x6ffc56=new Error(_0x517806['error']||_0x517806['message']||_0x746197['statusText']);if(_0x517806['detail']!==undefined)_0x6ffc56['detail']=_0x517806['detail'];throw _0x6ffc56;}return await _0x746197['json']();},async 'deleteSkill'(_0x5d8ecf){const _0x2859cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5d8ecf),{'method':'DELETE'});if(!_0x2859cc['ok']){const _0x2948cb=await _0x2859cc['json']()['catch'](()=>({'error':_0x2859cc['statusText']})),_0x21f66e=new Error(_0x2948cb['error']||_0x2948cb['message']||_0x2859cc['statusText']);if(_0x2948cb['detail']!==undefined)_0x21f66e['detail']=_0x2948cb['detail'];throw _0x21f66e;}return await _0x2859cc['json']();},async 'getSkillFile'(_0x2c9e0f,_0x4cf69d){const _0x2818f9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2c9e0f)+'/files/'+_0x4cf69d);if(!_0x2818f9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2818f9['statusText']);return await _0x2818f9['json']();},async 'saveSkillFile'(_0xd461c7,_0x485430,_0x54a846){const _0x42aea0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xd461c7)+'/files/'+_0x485430,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x54a846})});if(!_0x42aea0['ok']){const _0x1c3837=await _0x42aea0['json']()['catch'](()=>({'error':_0x42aea0['statusText']})),_0x19f50e=new Error(_0x1c3837['error']||_0x1c3837['message']||_0x42aea0['statusText']);if(_0x1c3837['detail']!==undefined)_0x19f50e['detail']=_0x1c3837['detail'];throw _0x19f50e;}return await _0x42aea0['json']();},async 'deleteSkillFile'(_0x3d5712,_0x262c8b){const _0x112a6f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3d5712)+'/files/'+_0x262c8b,{'method':'DELETE'});if(!_0x112a6f['ok']){const _0x409863=await _0x112a6f['json']()['catch'](()=>({'error':_0x112a6f['statusText']})),_0x2fa625=new Error(_0x409863['error']||_0x409863['message']||_0x112a6f['statusText']);if(_0x409863['detail']!==undefined)_0x2fa625['detail']=_0x409863['detail'];throw _0x2fa625;}return await _0x112a6f['json']();},async 'pullSkills'(){const _0x5a8e77=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5a8e77['ok']){const _0x2b42fe=await _0x5a8e77['json']()['catch'](()=>({'error':_0x5a8e77['statusText']})),_0x17b8db=new Error(_0x2b42fe['error']||_0x2b42fe['message']||_0x5a8e77['statusText']);if(_0x2b42fe['detail']!==undefined)_0x17b8db['detail']=_0x2b42fe['detail'];throw _0x17b8db;}return await _0x5a8e77['json']();},async 'commitSkills'(_0x1ae3bf,_0x6e2275={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x6e2275,_0x1e210d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1ae3bf,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x1e210d['ok']){const _0x48e66e=await _0x1e210d['json']()['catch'](()=>({'error':_0x1e210d['statusText']})),_0x4b5b64=new Error(_0x48e66e['error']||_0x48e66e['message']||_0x1e210d['statusText']);if(_0x48e66e['detail']!==undefined)_0x4b5b64['detail']=_0x48e66e['detail'];throw _0x4b5b64;}return await _0x1e210d['json']();},async 'discardSkillsChanges'(){const _0x495e50=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x495e50['ok']){const _0x141f96=await _0x495e50['json']()['catch'](()=>({'error':_0x495e50['statusText']})),_0x448eab=new Error(_0x141f96['error']||_0x141f96['message']||_0x495e50['statusText']);if(_0x141f96['detail']!==undefined)_0x448eab['detail']=_0x141f96['detail'];throw _0x448eab;}return await _0x495e50['json']();},async 'getSkillCatalog'(){const _0x1b4f86=await fetch(API_BASE+'/external-skills/catalog');if(!_0x1b4f86['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x1b4f86['statusText']);return await _0x1b4f86['json']();},async 'getImportedSkillsRegistry'(){const _0x51b350=await fetch(API_BASE+'/external-skills/registry');if(!_0x51b350['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x51b350['statusText']);return await _0x51b350['json']();},async 'importCatalogSkill'(_0x562ef1){const _0x3ec80d=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x562ef1})});if(!_0x3ec80d['ok']){const _0x2493fb=await _0x3ec80d['json']()['catch'](()=>({'error':_0x3ec80d['statusText']})),_0x17a4e8=new Error(_0x2493fb['error']||_0x2493fb['message']||_0x3ec80d['statusText']);if(_0x2493fb['detail']!==undefined)_0x17a4e8['detail']=_0x2493fb['detail'];throw _0x17a4e8;}return await _0x3ec80d['json']();},async 'importSkillFromGit'(_0x26fb8a,_0x254f35,_0x1d04ef='main',_0x5e6671=null){const _0x264d73=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x26fb8a,'skillPath':_0x254f35,'branch':_0x1d04ef,'skillId':_0x5e6671})});if(!_0x264d73['ok']){const _0x5235d1=await _0x264d73['json']()['catch'](()=>({'error':_0x264d73['statusText']})),_0x2a1f76=new Error(_0x5235d1['error']||_0x5235d1['message']||_0x264d73['statusText']);if(_0x5235d1['detail']!==undefined)_0x2a1f76['detail']=_0x5235d1['detail'];throw _0x2a1f76;}return await _0x264d73['json']();},async 'probeMarketplace'(_0x384a9d,_0x36e3c6='main'){const _0x2561bc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x384a9d,'branch':_0x36e3c6})});if(!_0x2561bc['ok']){const _0x3b1bb3=await _0x2561bc['json']()['catch'](()=>({'error':_0x2561bc['statusText']})),_0x5bdf7a=new Error(_0x3b1bb3['error']||_0x3b1bb3['message']||_0x2561bc['statusText']);if(_0x3b1bb3['detail']!==undefined)_0x5bdf7a['detail']=_0x3b1bb3['detail'];throw _0x5bdf7a;}return await _0x2561bc['json']();},async 'importMarketplaceBundle'(_0x4dd592,_0x29234f,_0x4960dd,_0x6cd29c=null){const _0x5069c4=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4dd592,'branch':_0x29234f,'bundleId':_0x4960dd,'selectedSkills':_0x6cd29c})});if(!_0x5069c4['ok']){const _0xd93c66=await _0x5069c4['json']()['catch'](()=>({'error':_0x5069c4['statusText']})),_0x1ceabb=new Error(_0xd93c66['error']||_0xd93c66['message']||_0x5069c4['statusText']);if(_0xd93c66['detail']!==undefined)_0x1ceabb['detail']=_0xd93c66['detail'];throw _0x1ceabb;}return await _0x5069c4['json']();},async 'importSkillFromFolder'(_0x44b1a1,_0x58f937=null){const _0x1dd59a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x44b1a1,'skillId':_0x58f937})});if(!_0x1dd59a['ok']){const _0x4a65ca=await _0x1dd59a['json']()['catch'](()=>({'error':_0x1dd59a['statusText']})),_0xf5444=new Error(_0x4a65ca['error']||_0x4a65ca['message']||_0x1dd59a['statusText']);if(_0x4a65ca['detail']!==undefined)_0xf5444['detail']=_0x4a65ca['detail'];throw _0xf5444;}return await _0x1dd59a['json']();},async 'importSkillFromNpm'(_0x75588d,_0x2385dd='latest',_0x548244=null,_0x5da076=null){const _0x2fa580=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x75588d,'version':_0x2385dd,'skillId':_0x548244,'registry':_0x5da076})});if(!_0x2fa580['ok']){const _0x1041dc=await _0x2fa580['json']()['catch'](()=>({'error':_0x2fa580['statusText']})),_0x17cb4e=new Error(_0x1041dc['error']||_0x1041dc['message']||_0x2fa580['statusText']);if(_0x1041dc['detail']!==undefined)_0x17cb4e['detail']=_0x1041dc['detail'];throw _0x17cb4e;}return await _0x2fa580['json']();},async 'checkSkillUpdates'(_0xfea491){const _0x347aeb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xfea491)+'/check-updates',{'method':'POST'});if(!_0x347aeb['ok']){const _0x29a941=await _0x347aeb['json']()['catch'](()=>({'error':_0x347aeb['statusText']})),_0x274148=new Error(_0x29a941['error']||_0x29a941['message']||_0x347aeb['statusText']);if(_0x29a941['detail']!==undefined)_0x274148['detail']=_0x29a941['detail'];throw _0x274148;}return await _0x347aeb['json']();},async 'updateExternalSkill'(_0x399983){const _0xbf3477=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x399983)+'/update',{'method':'POST'});if(!_0xbf3477['ok']){const _0x1777f1=await _0xbf3477['json']()['catch'](()=>({'error':_0xbf3477['statusText']})),_0x3fddca=new Error(_0x1777f1['error']||_0x1777f1['message']||_0xbf3477['statusText']);if(_0x1777f1['detail']!==undefined)_0x3fddca['detail']=_0x1777f1['detail'];throw _0x3fddca;}return await _0xbf3477['json']();},async 'updateSkillFlags'(_0xf2d9e,_0x34fe8a){const _0x3631fe=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xf2d9e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x34fe8a})});if(!_0x3631fe['ok']){const _0x1ea90c=await _0x3631fe['json']()['catch'](()=>({'error':_0x3631fe['statusText']})),_0x4b13ff=new Error(_0x1ea90c['error']||_0x1ea90c['message']||_0x3631fe['statusText']);if(_0x1ea90c['detail']!==undefined)_0x4b13ff['detail']=_0x1ea90c['detail'];throw _0x4b13ff;}return await _0x3631fe['json']();},async 'removeFromImportedRegistry'(_0x22afe1){const _0x349a20=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x22afe1)+'/registry',{'method':'DELETE'});if(!_0x349a20['ok']){const _0x7a509=await _0x349a20['json']()['catch'](()=>({'error':_0x349a20['statusText']})),_0x5c2113=new Error(_0x7a509['error']||_0x7a509['message']||_0x349a20['statusText']);if(_0x7a509['detail']!==undefined)_0x5c2113['detail']=_0x7a509['detail'];throw _0x5c2113;}return await _0x349a20['json']();},async 'getTeams'(){const _0x4532fd=await fetch(API_BASE+'/teams');if(!_0x4532fd['ok']){const _0x58cffe=await _0x4532fd['json']()['catch'](()=>({'message':_0x4532fd['statusText']}));throw new Error(_0x58cffe['message']||'Failed\x20to\x20get\x20teams');}return await _0x4532fd['json']();},async 'getTeam'(_0x101a1c){const _0x25d435=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x101a1c));if(!_0x25d435['ok']){const _0x51966d=await _0x25d435['json']()['catch'](()=>({'message':_0x25d435['statusText']}));throw new Error(_0x51966d['message']||'Failed\x20to\x20get\x20team');}return await _0x25d435['json']();},async 'createTeam'(_0x18ea8d){const _0x2e22bb=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18ea8d)});if(!_0x2e22bb['ok']){const _0x3d93d8=await _0x2e22bb['json']()['catch'](()=>({'message':_0x2e22bb['statusText']}));throw new Error(_0x3d93d8['message']||'Failed\x20to\x20create\x20team');}return await _0x2e22bb['json']();},async 'updateTeam'(_0x30006c,_0x452dc2){const _0x64b631=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x30006c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x452dc2)});if(!_0x64b631['ok']){const _0x4ccc6c=await _0x64b631['json']()['catch'](()=>({'message':_0x64b631['statusText']}));throw new Error(_0x4ccc6c['message']||'Failed\x20to\x20update\x20team');}return await _0x64b631['json']();},async 'deleteTeam'(_0x5f3ead){const _0x63792b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5f3ead),{'method':'DELETE'});if(!_0x63792b['ok']){const _0x53fe4d=await _0x63792b['json']()['catch'](()=>({'message':_0x63792b['statusText']}));throw new Error(_0x53fe4d['message']||'Failed\x20to\x20delete\x20team');}return await _0x63792b['json']();},async 'addTeamMember'(_0xf47a21,_0x4ef7f8){const _0x2dc554=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xf47a21)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ef7f8})});if(!_0x2dc554['ok']){const _0x49fe8e=await _0x2dc554['json']()['catch'](()=>({'message':_0x2dc554['statusText']}));throw new Error(_0x49fe8e['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2dc554['json']();},async 'removeTeamMember'(_0x397080,_0x33efb6){const _0x1c2df5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x397080)+'/members/'+encodeURIComponent(_0x33efb6),{'method':'DELETE'});if(!_0x1c2df5['ok']){const _0x1ac12e=await _0x1c2df5['json']()['catch'](()=>({'message':_0x1c2df5['statusText']}));throw new Error(_0x1ac12e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1c2df5['json']();},async 'getBindings'(_0x4e544c={}){const _0x4c328e=new URLSearchParams();if(_0x4e544c['resource_type'])_0x4c328e['set']('resource_type',_0x4e544c['resource_type']);if(_0x4e544c['resource_id'])_0x4c328e['set']('resource_id',_0x4e544c['resource_id']);if(_0x4e544c['subject_type'])_0x4c328e['set']('subject_type',_0x4e544c['subject_type']);if(_0x4e544c['subject_id'])_0x4c328e['set']('subject_id',_0x4e544c['subject_id']);const _0x19dcb9=_0x4c328e['toString'](),_0x72a4b4=await fetch(API_BASE+'/bindings'+(_0x19dcb9?'?'+_0x19dcb9:''));if(!_0x72a4b4['ok']){const _0x217fee=await _0x72a4b4['json']()['catch'](()=>({'message':_0x72a4b4['statusText']}));throw new Error(_0x217fee['message']||'Failed\x20to\x20get\x20bindings');}return await _0x72a4b4['json']();},async 'createBinding'(_0x365128){const _0x563c31=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x365128)});if(!_0x563c31['ok']){const _0x5387a6=await _0x563c31['json']()['catch'](()=>({'message':_0x563c31['statusText']}));throw new Error(_0x5387a6['message']||'Failed\x20to\x20create\x20binding');}return await _0x563c31['json']();},async 'updateBinding'(_0x35530f,_0x118eae){const _0xf1ec49=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x35530f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x118eae)});if(!_0xf1ec49['ok']){const _0xa33993=await _0xf1ec49['json']()['catch'](()=>({'message':_0xf1ec49['statusText']}));throw new Error(_0xa33993['message']||'Failed\x20to\x20update\x20binding');}return await _0xf1ec49['json']();},async 'deleteBinding'(_0x14c553){const _0x4e3998=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x14c553),{'method':'DELETE'});if(!_0x4e3998['ok']){const _0x579f22=await _0x4e3998['json']()['catch'](()=>({'message':_0x4e3998['statusText']}));throw new Error(_0x579f22['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4e3998['json']();},async 'getRoleDefinitions'(){const _0x1ec491=await fetch(API_BASE+'/roles');if(!_0x1ec491['ok']){const _0x1edf4e=await _0x1ec491['json']()['catch'](()=>({'message':_0x1ec491['statusText']}));throw new Error(_0x1edf4e['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1ec491['json']();},async 'getRoleDefinition'(_0x178d7b){const _0x1395bd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x178d7b));if(!_0x1395bd['ok']){const _0x39376c=await _0x1395bd['json']()['catch'](()=>({'message':_0x1395bd['statusText']}));throw new Error(_0x39376c['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x1395bd['json']();},async 'createRoleDefinition'(_0x5ac8ff){const _0x1e80c3=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ac8ff)});if(!_0x1e80c3['ok']){const _0x3d4868=await _0x1e80c3['json']()['catch'](()=>({'message':_0x1e80c3['statusText']}));throw new Error(_0x3d4868['message']||_0x3d4868['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e80c3['json']();},async 'updateRoleDefinition'(_0x2797ba,_0x33b5b5){const _0x343199=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2797ba),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33b5b5)});if(!_0x343199['ok']){const _0x1dc135=await _0x343199['json']()['catch'](()=>({'message':_0x343199['statusText']}));throw new Error(_0x1dc135['message']||_0x1dc135['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x343199['json']();},async 'deleteRoleDefinition'(_0x11d47b){const _0x241294=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x11d47b),{'method':'DELETE'});if(!_0x241294['ok']){const _0x2a0995=await _0x241294['json']()['catch'](()=>({'message':_0x241294['statusText']}));throw new Error(_0x2a0995['message']||_0x2a0995['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x241294['json']();},async 'getAvailablePermissions'(){const _0x5b7259=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5b7259['ok']){const _0x2618c0=await _0x5b7259['json']()['catch'](()=>({'message':_0x5b7259['statusText']}));throw new Error(_0x2618c0['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5b7259['json']();},async 'getGitProviderAllowedTeams'(_0x8acf7a){const _0x13e573=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x8acf7a)+'/allowed-teams');if(!_0x13e573['ok']){const _0x3e0909=await _0x13e573['json']()['catch'](()=>({'message':_0x13e573['statusText']}));throw new Error(_0x3e0909['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x13e573['json']();},async 'setGitProviderAllowedTeams'(_0x130592,_0x783c2e){const _0x3cacf3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x130592)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x783c2e})});if(!_0x3cacf3['ok']){const _0x1f829b=await _0x3cacf3['json']()['catch'](()=>({'message':_0x3cacf3['statusText']}));throw new Error(_0x1f829b['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3cacf3['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 _0x7a1c3b=toastState['baseBottom'];toastState['toasts']['forEach'](_0x555fa5=>{_0x555fa5['el']['style']['bottom']=_0x7a1c3b+'px';const _0x366e53=_0x555fa5['el']['offsetHeight']||toastState['defaultHeight'];_0x7a1c3b+=_0x366e53+toastState['gap'];});});}function removeToastById(_0x5be30f){const _0x4f3ebb=toastState['toasts']['findIndex'](_0x37bcd3=>_0x37bcd3['id']===_0x5be30f);if(_0x4f3ebb===-0x1)return;const _0x3df90f=toastState['toasts'][_0x4f3ebb];if(_0x3df90f['timeoutId'])clearTimeout(_0x3df90f['timeoutId']);_0x3df90f['el']['classList']['remove']('show'),setTimeout(()=>_0x3df90f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4f3ebb,0x1),repositionAllToasts();}function registerToast(_0x22a844){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x22a844),repositionAllToasts(),_0x22a844['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(_0x5f2afe){if(_0x5f2afe===null||_0x5f2afe===undefined)return'';return String(_0x5f2afe)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x2349c4,_0x235733){if(_0x2349c4&&typeof _0x2349c4==='object'&&!Array['isArray'](_0x2349c4))return{'code':typeof _0x2349c4['text']==='string'?_0x2349c4['text']:'','language':typeof _0x2349c4['lang']==='string'?_0x2349c4['lang']:''};return{'code':typeof _0x2349c4==='string'?_0x2349c4:'','language':typeof _0x235733==='string'?_0x235733:''};}function buildMermaidBlock(_0x13488c){const _0x1c385f=String(_0x13488c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1c385f))+'\x22>'+escapeHtmlValue(_0x1c385f)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x36843b=new marked['Renderer'](),_0x471606=_0x36843b['code']['bind'](_0x36843b);return _0x36843b['code']=function(_0x3f8c17,_0x14f3f4,..._0x4972af){const {code:_0x4cd2c8,language:_0x52ba1b}=getMarkdownCodeBlockPayload(_0x3f8c17,_0x14f3f4),_0x4b1da9=String(_0x52ba1b||'')['trim']()['toLowerCase']();if(_0x4b1da9==='mermaid')return buildMermaidBlock(_0x4cd2c8);const _0x24f09a=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x24f09a&&_0x4b1da9)try{const _0x529c0b=_0x24f09a['getLanguage'](_0x4b1da9)?_0x4b1da9:'plaintext',_0x50b472=_0x24f09a['highlight'](_0x4cd2c8,{'language':_0x529c0b})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4b1da9)+'\x22>'+_0x50b472+'</code></pre>';}catch(_0x2f6889){console['error']('Syntax\x20highlighting\x20error:',_0x2f6889);}return _0x471606(_0x3f8c17,_0x14f3f4,..._0x4972af);},sharedMarkedRenderer=_0x36843b,_0x36843b;}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 _0x5a70ed=window['mermaid'];if(!_0x5a70ed||typeof _0x5a70ed['initialize']!=='function')return _0x5a70ed||null;return _0x5a70ed['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x5a70ed;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4c7667,_0x5d540b)=>{const _0x4172b9=()=>_0x4c7667(configureMermaidInstance()),_0xcff783=()=>{mermaidLoadPromise=null,_0x5d540b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x5cde29=document['getElementById'](MERMAID_SCRIPT_ID);!_0x5cde29&&(_0x5cde29=document['createElement']('script'),_0x5cde29['id']=MERMAID_SCRIPT_ID,_0x5cde29['src']=MERMAID_SCRIPT_SRC,_0x5cde29['async']=!![],document['head']['appendChild'](_0x5cde29));if(window['mermaid']){_0x4172b9();return;}_0x5cde29['addEventListener']('load',_0x4172b9,{'once':!![]}),_0x5cde29['addEventListener']('error',_0xcff783,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x57da33){const _0x19825b=_0x57da33['getAttribute']('data-mermaid-source');if(!_0x19825b)return null;let _0x1cd5ca=_0x19825b;try{_0x1cd5ca=decodeURIComponent(_0x19825b);}catch{}return _0x57da33['textContent']=_0x1cd5ca,_0x57da33['removeAttribute']('data-processed'),_0x57da33['removeAttribute']('aria-roledescription'),_0x57da33['removeAttribute']('role'),_0x57da33['removeAttribute']('aria-label'),_0x1cd5ca;}function collectMermaidNodes(_0x2277b7,_0x1dde4d){if(!(_0x2277b7 instanceof Element))return;_0x2277b7['matches']('.mermaid[data-mermaid-source]')&&_0x1dde4d['add'](_0x2277b7),_0x2277b7['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x361a8d=>{_0x1dde4d['add'](_0x361a8d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x58855a=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x2c41f6=>setTimeout(_0x2c41f6,0x0);_0x58855a(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5d06c2=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5d06c2);});});}function queueMermaidRender(_0x178706){const _0x4b5044=new Set();_0x178706 instanceof Document||_0x178706 instanceof DocumentFragment?_0x178706['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x26865c=>_0x4b5044['add'](_0x26865c)):collectMermaidNodes(_0x178706,_0x4b5044);if(_0x4b5044['size']===0x0)return;_0x4b5044['forEach'](_0x7a9fb8=>pendingMermaidNodes['add'](_0x7a9fb8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5130f3=Array['from'](pendingMermaidNodes)['filter'](_0x5e9c7a=>_0x5e9c7a['isConnected']);pendingMermaidNodes['clear']();if(_0x5130f3['length']===0x0)return;const _0x11b6f4=await loadMermaid();if(!_0x11b6f4)return;configureMermaidInstance();const _0x5271b7=getMermaidTheme();for(const _0x58c4f8 of _0x5130f3){const _0x1c011d=_0x58c4f8['getAttribute']('data-mermaid-source');if(!_0x1c011d)continue;const _0x5d13a9=_0x58c4f8['getAttribute']('data-processed')==='true';if(_0x5d13a9&&_0x58c4f8['dataset']['mermaidTheme']===_0x5271b7)continue;restoreMermaidSource(_0x58c4f8);try{if(typeof _0x11b6f4['run']==='function')await _0x11b6f4['run']({'nodes':[_0x58c4f8]});else typeof _0x11b6f4['init']==='function'&&_0x11b6f4['init'](undefined,[_0x58c4f8]);_0x58c4f8['dataset']['mermaidTheme']=_0x5271b7,delete _0x58c4f8['dataset']['mermaidError'];}catch(_0xa54d46){console['error']('Mermaid\x20render\x20failed:',_0xa54d46),restoreMermaidSource(_0x58c4f8),_0x58c4f8['dataset']['mermaidError']='true',delete _0x58c4f8['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1c3fce=>{_0x1c3fce['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1c3fce);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4d4c6f=>{_0x4d4c6f['forEach'](_0x5ee531=>{_0x5ee531['addedNodes']['forEach'](_0x2e7972=>{_0x2e7972['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2e7972);});});}),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'(_0x548f61){const _0x3ebbba=new Date(_0x548f61),_0xf2393d=new Date(),_0x348018=_0xf2393d-_0x3ebbba,_0x3194c1=Math['floor'](_0x348018/0x3e8),_0x4b470a=Math['floor'](_0x3194c1/0x3c),_0x5a3303=Math['floor'](_0x4b470a/0x3c),_0x40b7a6=Math['floor'](_0x5a3303/0x18);if(_0x3194c1<0x3c)return'now';if(_0x4b470a<0x3c)return _0x4b470a+'m\x20ago';if(_0x5a3303<0x18)return _0x5a3303+'h\x20ago';return _0x40b7a6+'d\x20ago';},'getStatusIcon'(_0x18b265){switch(_0x18b265){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x125a19){switch(_0x125a19){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'(_0x3e825d,_0xba4590=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x53ef66={};_0x53ef66['text/plain']=new Blob([_0x3e825d],{'type':'text/plain'});_0xba4590&&(_0x53ef66['text/html']=new Blob([_0xba4590],{'type':'text/html'}));const _0xd2ae8a=new ClipboardItem(_0x53ef66);return await navigator['clipboard']['write']([_0xd2ae8a]),!![];}catch(_0x2d8979){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2d8979);}try{const _0x56fc7d=_0x1aff03=>{_0x1aff03['preventDefault'](),_0x1aff03['clipboardData']['setData']('text/plain',_0x3e825d),_0xba4590&&_0x1aff03['clipboardData']['setData']('text/html',_0xba4590);};document['addEventListener']('copy',_0x56fc7d);const _0x5e24b9=document['execCommand']('copy');document['removeEventListener']('copy',_0x56fc7d);if(_0x5e24b9)return!![];}catch(_0xa4c177){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xa4c177);}try{const _0x3faf32=document['createElement']('textarea');_0x3faf32['value']=_0x3e825d,_0x3faf32['style']['position']='fixed',_0x3faf32['style']['opacity']='0',_0x3faf32['style']['pointerEvents']='none',document['body']['appendChild'](_0x3faf32),_0x3faf32['select']();const _0x15be56=document['execCommand']('copy');return document['body']['removeChild'](_0x3faf32),_0x15be56;}catch(_0x972297){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x972297),![];}},'showToast'(_0x2af2d7,_0x221ce9='info'){const _0x3fe74d=getNextToastId(),_0x255a57=document['createElement']('div');_0x255a57['className']='toast\x20toast-'+_0x221ce9,_0x255a57['textContent']=_0x2af2d7,_0x255a57['dataset']['toastId']=_0x3fe74d,document['body']['appendChild'](_0x255a57);const _0xc884ec=_0x221ce9==='error'?0x2710:0xbb8,_0x50bd68=setTimeout(()=>{removeToastById(_0x3fe74d);},_0xc884ec),_0x42f6ad={'id':_0x3fe74d,'el':_0x255a57,'timeoutId':_0x50bd68};return registerToast(_0x42f6ad),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x255a57['classList']['add']('show');});}),_0x3fe74d;},'showError'(_0x1dec0c){console['error'](_0x1dec0c);const _0x44b3c3=typeof _0x1dec0c==='string'?_0x1dec0c:_0x1dec0c['message']||'An\x20error\x20occurred';this['showToast'](_0x44b3c3,'error');},'showSuccess'(_0x2686b3){this['showToast'](_0x2686b3,'success');},'capitalize'(_0x1850b0){if(!_0x1850b0)return'';return _0x1850b0['charAt'](0x0)['toUpperCase']()+_0x1850b0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4940c2){return escapeHtmlValue(_0x4940c2);},'ansiToHtml'(_0x46ced4){if(_0x46ced4===null||_0x46ced4===undefined)return'';let _0xd6af58=this['escapeHtml'](_0x46ced4);const _0xf7ccb9={'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'},_0x543aa6={'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 _0x57bdc8=0x0;return _0xd6af58=_0xd6af58['replace'](/\x1b\[([0-9;]*)m/g,(_0x388f20,_0x4658b8)=>{if(!_0x4658b8||_0x4658b8==='0'){const _0x346ed1='</span>'['repeat'](_0x57bdc8);return _0x57bdc8=0x0,_0x346ed1;}const _0x316369=_0x4658b8['split'](';'),_0xd6523d=[];for(const _0x3f3633 of _0x316369){if(_0x3f3633==='1')_0xd6523d['push']('font-weight:bold');else{if(_0x3f3633==='2')_0xd6523d['push']('opacity:0.7');else{if(_0x3f3633==='3')_0xd6523d['push']('font-style:italic');else{if(_0x3f3633==='4')_0xd6523d['push']('text-decoration:underline');else{if(_0x3f3633==='9')_0xd6523d['push']('text-decoration:line-through');else{if(_0xf7ccb9[_0x3f3633])_0xd6523d['push']('color:'+_0xf7ccb9[_0x3f3633]);else{if(_0x543aa6[_0x3f3633])_0xd6523d['push']('background-color:'+_0x543aa6[_0x3f3633]);}}}}}}}if(_0xd6523d['length']>0x0)return _0x57bdc8++,'<span\x20style=\x22'+_0xd6523d['join'](';')+'\x22>';return'';}),_0xd6af58+='</span>'['repeat'](_0x57bdc8),_0xd6af58=_0xd6af58['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3403de,_0x53ab58)=>{if(!_0x53ab58||_0x53ab58==='0')return'';const _0x1cae68=_0x53ab58['split'](';'),_0x480f73=[];for(const _0x2c4818 of _0x1cae68){if(_0x2c4818==='1')_0x480f73['push']('font-weight:bold');else{if(_0xf7ccb9[_0x2c4818])_0x480f73['push']('color:'+_0xf7ccb9[_0x2c4818]);else{if(_0x543aa6[_0x2c4818])_0x480f73['push']('background-color:'+_0x543aa6[_0x2c4818]);}}}if(_0x480f73['length']>0x0)return'<span\x20style=\x22'+_0x480f73['join'](';')+'\x22>';return'';}),_0xd6af58;},'showModal'({title:_0x389c33,content:_0x53d1e5,buttons:buttons=[]}){const _0x3427a1='\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'](_0x389c33)+'</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'+_0x53d1e5+'\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']((_0x2ff8ba,_0x5abd55)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x2ff8ba['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5abd55+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x2ff8ba['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',_0x499532=document['createElement']('div');_0x499532['id']='utils-modal',_0x499532['className']='modal',_0x499532['innerHTML']=_0x3427a1,document['body']['appendChild'](_0x499532);const _0x2db970=document['getElementById']('utils-modal-close');_0x2db970&&_0x2db970['addEventListener']('click',()=>this['hideModal']());const _0x5f1330=_0x499532['querySelectorAll']('[data-btn-index]');_0x5f1330['forEach'](_0xb70f83=>{const _0x3700e7=parseInt(_0xb70f83['dataset']['btnIndex']);buttons[_0x3700e7]?.['onClick']&&_0xb70f83['addEventListener']('click',buttons[_0x3700e7]['onClick']);});const _0x2686cf=document['getElementById']('utils-modal-overlay');_0x2686cf&&_0x2686cf['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x23d67e=document['getElementById']('utils-modal');_0x23d67e&&_0x23d67e['remove']();},'parseKeyValuePairs'(_0x41d021){const _0x13b074={};if(!_0x41d021)return _0x13b074;return _0x41d021['split'](/\r?\n/)['map'](_0x25bc0c=>_0x25bc0c['trim']())['filter'](Boolean)['forEach'](_0x294828=>{const _0x354cdf=_0x294828['indexOf']('=');if(_0x354cdf>0x0){const _0x57c15b=_0x294828['slice'](0x0,_0x354cdf)['trim'](),_0x296b58=_0x294828['slice'](_0x354cdf+0x1)['trim']();if(_0x57c15b)_0x13b074[_0x57c15b]=_0x296b58;}}),_0x13b074;},'debounce'(_0x21638d,_0x35c825=0xfa){let _0x4b290c=null;return(..._0x388e6d)=>{clearTimeout(_0x4b290c),_0x4b290c=setTimeout(()=>_0x21638d['apply'](this,_0x388e6d),_0x35c825);};},'formatTimestamp'(_0x1ad2c8){if(!_0x1ad2c8)return'N/A';const _0x4689f3=new Date(_0x1ad2c8);return _0x4689f3['toLocaleDateString']()+'\x20'+_0x4689f3['toLocaleTimeString']();},'getQueryParams'(){const _0x6ee5=new URLSearchParams(window['location']['search']),_0x44c070={};for(const [_0x33dcde,_0x1de0b3]of _0x6ee5){_0x44c070[_0x33dcde]=_0x1de0b3;}return _0x44c070;},'formatDuration'(_0x14e51b,_0x21d8df){if(!_0x14e51b)return'N/A';const _0x1cfe10=new Date(_0x14e51b),_0x2df19d=_0x21d8df?new Date(_0x21d8df):new Date(),_0x3a7203=_0x2df19d-_0x1cfe10;if(_0x3a7203<0x0)return'0s';const _0x5564ab=Math['floor'](_0x3a7203/0x3e8),_0x4b541d=Math['floor'](_0x5564ab/0x3c),_0x2803ab=Math['floor'](_0x4b541d/0x3c),_0x21f8dd=Math['floor'](_0x2803ab/0x18);if(_0x5564ab<0x3c)return _0x5564ab+'s';if(_0x4b541d<0x3c)return _0x4b541d+'m\x20'+_0x5564ab%0x3c+'s';if(_0x2803ab<0x18)return _0x2803ab+'h\x20'+_0x4b541d%0x3c+'m\x20'+_0x5564ab%0x3c+'s';return _0x21f8dd+'d\x20'+_0x2803ab%0x18+'h\x20'+_0x4b541d%0x3c+'m';},'renderMarkdown'(_0x55aaef,_0x5a715d={}){if(!_0x55aaef)return'';_0x55aaef=this['rewriteAttachmentLinks'](_0x55aaef,_0x5a715d),_0x55aaef=this['rewriteColorSyntax'](_0x55aaef);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x55aaef);}catch(_0x32f21f){return console['error']('Markdown\x20parsing\x20error:',_0x32f21f),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);}},'rewriteAttachmentLinks'(_0x50ee4d,_0x5afe69={}){const _0x930fd9=typeof _0x5afe69['resolveAttachmentUrl']==='function'?_0x5afe69['resolveAttachmentUrl']:_0x5afe69['taskId']?_0x6c93f6=>API_BASE+'/tasks/'+_0x5afe69['taskId']+'/attachments/'+encodeURIComponent(_0x6c93f6):null;if(!_0x930fd9)return _0x50ee4d;return String(_0x50ee4d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3f14b3,_0x2d745f)=>{const _0x8645c8=String(_0x2d745f||'')['trim']();if(!_0x8645c8)return _0x3f14b3;let _0x427c56=_0x8645c8;try{_0x427c56=decodeURIComponent(_0x8645c8);}catch{}const _0x1380d1=_0x930fd9(_0x427c56);if(!_0x1380d1)return _0x3f14b3;return']('+_0x1380d1+')';});},'rewriteColorSyntax'(_0x5511ca){if(!_0x5511ca)return _0x5511ca;return String(_0x5511ca)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x44a01f,_0x1fcf87,_0x5ce656)=>{const _0x18f92f=this['rewriteColorSyntax'](_0x5ce656);return'<span\x20style=\x22color:\x20'+_0x1fcf87+'\x22>'+_0x18f92f+'</span>';});},'renderMarkdownFallback'(_0x1ed004,_0x42fad2={}){if(!_0x1ed004)return'';_0x1ed004=_0x1ed004['replace'](/\r\n/g,'\x0a'),_0x1ed004=_0x1ed004['replace'](/\r/g,'\x0a'),_0x1ed004=this['rewriteAttachmentLinks'](_0x1ed004,_0x42fad2);let _0x58f3bd=this['escapeHtml'](_0x1ed004);return _0x58f3bd=_0x58f3bd['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x58f3bd=_0x58f3bd['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x58f3bd=_0x58f3bd['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x58f3bd=_0x58f3bd['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x58f3bd=_0x58f3bd['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x58f3bd=_0x58f3bd['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x58f3bd=_0x58f3bd['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x58f3bd=_0x58f3bd['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x58f3bd=_0x58f3bd['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x58f3bd=_0x58f3bd['replace'](/\n\n/g,'</p><p>'),_0x58f3bd=_0x58f3bd['replace'](/\n/g,'<br>'),'<p>'+_0x58f3bd+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5b1d94=new Uint8Array(0x10);crypto['getRandomValues'](_0x5b1d94),_0x5b1d94[0x6]=_0x5b1d94[0x6]&0xf|0x40,_0x5b1d94[0x8]=_0x5b1d94[0x8]&0x3f|0x80;const _0x3c86d7=Array['from'](_0x5b1d94,_0x15e178=>_0x15e178['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3c86d7['slice'](0x0,0x8)+'-'+_0x3c86d7['slice'](0x8,0xc)+'-'+_0x3c86d7['slice'](0xc,0x10)+'-'+_0x3c86d7['slice'](0x10,0x14)+'-'+_0x3c86d7['slice'](0x14);}};export class CustomSelect{constructor(_0x1e4e6f,_0x373c81={}){this['nativeSelect']=_0x1e4e6f,this['options']=_0x373c81,this['isOpen']=![],this['selectedValue']=_0x1e4e6f['value']||'',this['searchable']=_0x373c81['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x42474d=document['createElement']('div');_0x42474d['className']='custom-select';const _0x3641ad=document['createElement']('div');_0x3641ad['className']='custom-select-trigger',_0x3641ad['setAttribute']('tabindex','0'),_0x3641ad['setAttribute']('role','button'),_0x3641ad['setAttribute']('aria-haspopup','listbox');const _0x13ff34=document['createElement']('span');_0x13ff34['className']='custom-select-trigger-text';const _0x4494a1=document['createElement']('span');_0x4494a1['className']='custom-select-arrow',_0x4494a1['textContent']='▼',_0x3641ad['appendChild'](_0x13ff34),_0x3641ad['appendChild'](_0x4494a1);const _0x4133c3=document['createElement']('div');_0x4133c3['className']='custom-select-dropdown',_0x4133c3['setAttribute']('role','listbox');if(this['searchable']){const _0x35c108=document['createElement']('div');_0x35c108['className']='custom-select-search';const _0x35dff4=document['createElement']('input');_0x35dff4['type']='text',_0x35dff4['className']='custom-select-search-input',_0x35dff4['placeholder']='Type\x20to\x20search...',_0x35dff4['setAttribute']('aria-label','Search\x20options'),_0x35dff4['addEventListener']('input',_0x234998=>{this['searchQuery']=_0x234998['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x35dff4['addEventListener']('keydown',_0x494899=>{if(_0x494899['key']==='Escape')_0x494899['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x494899['key']==='Enter'){_0x494899['preventDefault'](),_0x494899['stopPropagation']();const _0x511acc=_0x4133c3['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x511acc){const _0x3a5abf=_0x511acc['getAttribute']('data-value');this['select'](_0x3a5abf);}}}}),_0x35c108['appendChild'](_0x35dff4),_0x4133c3['appendChild'](_0x35c108),this['searchInput']=_0x35dff4;}const _0x464965=document['createElement']('div');_0x464965['className']='custom-select-options',_0x4133c3['appendChild'](_0x464965),_0x42474d['appendChild'](_0x3641ad),_0x42474d['appendChild'](_0x4133c3),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x42474d,this['nativeSelect']),this['wrapper']=_0x42474d,this['trigger']=_0x3641ad,this['triggerText']=_0x13ff34,this['dropdown']=_0x4133c3,this['optionsContainer']=_0x464965,_0x3641ad['addEventListener']('click',()=>this['toggle']()),_0x3641ad['addEventListener']('keydown',_0x40e039=>this['handleKeydown'](_0x40e039)),document['addEventListener']('click',_0xa32bc2=>{!_0x42474d['contains'](_0xa32bc2['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x180dcf=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x180dcf['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x4cc9a4=new MutationObserver(()=>{this['updateDisabledState']();});_0x4cc9a4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5be427=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5be427['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x25673d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x25673d),this['trigger']['setAttribute']('aria-disabled',_0x25673d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x25673d?'-1':'0'),_0x25673d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xd9a5be=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x578085=_0xd9a5be['filter'](_0x3b51ef=>!_0x3b51ef['disabled']&&!_0x3b51ef['hidden']);_0xd9a5be['forEach']((_0x1fe3ce,_0x282349)=>{const _0x1ef1b8=document['createElement']('div');_0x1ef1b8['className']='custom-select-option',_0x1ef1b8['textContent']=_0x1fe3ce['textContent'],_0x1ef1b8['setAttribute']('data-value',_0x1fe3ce['value']),_0x1ef1b8['setAttribute']('data-index',_0x282349),_0x1ef1b8['setAttribute']('role','option'),_0x1fe3ce['disabled']?_0x1ef1b8['classList']['add']('disabled'):_0x1ef1b8['addEventListener']('click',()=>this['select'](_0x1fe3ce['value'])),_0x1fe3ce['value']===this['selectedValue']&&_0x1ef1b8['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1ef1b8),this['allOptions']['push']({'element':_0x1ef1b8,'text':_0x1fe3ce['textContent']['toLowerCase'](),'value':_0x1fe3ce['value'],'disabled':_0x1fe3ce['disabled']});});if(this['searchable']&&this['searchInput']){const _0x146f02=this['searchInput']['parentElement'];_0x578085['length']>0x3?_0x146f02['style']['display']='':_0x146f02['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4836ac=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x709f14=>{if(!_0x4836ac||_0x709f14['disabled'])_0x709f14['element']['style']['display']='';else{const _0xa7c42=_0x709f14['text']['includes'](_0x4836ac);_0x709f14['element']['style']['display']=_0xa7c42?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2f201b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2f201b,this['nativeSelect']['value']=_0x2f201b;const _0x2ab19d=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2ab19d),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x45183f=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x45183f&&(this['triggerText']['textContent']=_0x45183f['textContent'],_0x45183f['disabled']||_0x45183f['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x818e09=>{_0x818e09['getAttribute']('data-value')===this['selectedValue']?_0x818e09['classList']['add']('selected'):_0x818e09['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 _0x136a40=window['getComputedStyle'](this['dropdown']);if(_0x136a40['position']==='fixed'){const _0x3ab68f=this['trigger']['getBoundingClientRect'](),_0x258f2f=parseInt(_0x136a40['maxHeight'])||0xc8,_0x4abde6=window['innerHeight'],_0x4aa5b3=_0x4abde6-_0x3ab68f['bottom'],_0x7606d=_0x3ab68f['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x14aa70;_0x4aa5b3<_0x258f2f&&_0x7606d>_0x4aa5b3?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4abde6-_0x3ab68f['top']+'px',_0x14aa70=Math['min'](_0x258f2f,_0x7606d-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3ab68f['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x14aa70=Math['min'](_0x258f2f,_0x4aa5b3-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px');if(this['optionsContainer']){let _0x4d4c69=_0x14aa70;if(this['searchInput']){const _0x5cdd14=this['searchInput']['parentElement'];_0x5cdd14&&(_0x4d4c69-=_0x5cdd14['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4d4c69)+'px';}this['dropdown']['style']['left']=_0x3ab68f['left']+'px',this['dropdown']['style']['width']=_0x3ab68f['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x57366c=this['searchInput']['parentElement'];_0x57366c&&_0x57366c['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'](_0x44b2c4){if(this['nativeSelect']['disabled'])return;if(_0x44b2c4['key']==='Enter'||_0x44b2c4['key']==='\x20')_0x44b2c4['preventDefault'](),this['toggle']();else _0x44b2c4['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ba6a8='\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',_0x4ba6a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x53d5c5=document['getElementById']('confirm-dialog-close'),_0x1cae21=document['getElementById']('confirm-dialog-cancel'),_0x3536fe=document['getElementById']('confirm-dialog-confirm'),_0x1f260e=this['_modal']['querySelector']('.modal-overlay');_0x53d5c5['addEventListener']('click',()=>this['_resolve'](![])),_0x1cae21['addEventListener']('click',()=>this['_resolve'](![])),_0x3536fe['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f260e['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2dd6b9=>{if(_0x2dd6b9['key']==='Escape')_0x2dd6b9['preventDefault'](),this['_resolve'](![]);else _0x2dd6b9['key']==='Enter'&&(_0x2dd6b9['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x573a17,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x103de4=>{this['_resolvePromise']=_0x103de4,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x573a17;const _0x5d6354=document['getElementById']('confirm-dialog-cancel'),_0x399a63=document['getElementById']('confirm-dialog-confirm');_0x5d6354['textContent']=cancelText,_0x399a63['textContent']=confirmText,_0x399a63['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x399a63['focus']();});},'_resolve'(_0x3745c8){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3745c8),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1ddbba,_0x340ee1={}){this['container']=_0x1ddbba,this['options']={'placeholder':_0x340ee1['placeholder']||'Type\x20to\x20search...','maxItems':_0x340ee1['maxItems']||0x64,'loadItems':_0x340ee1['loadItems']||(async()=>[]),'renderItem':_0x340ee1['renderItem']||(_0x18305c=>({'primary':String(_0x18305c),'secondary':''})),'onSelect':_0x340ee1['onSelect']||(()=>{}),'filterItems':_0x340ee1['filterItems']||null,'getItemValue':_0x340ee1['getItemValue']||(_0x50738c=>_0x50738c),'sortItems':_0x340ee1['sortItems']||null,'debounceMs':_0x340ee1['debounceMs']||0xc8,'minCharsForSearch':_0x340ee1['minCharsForSearch']||0x0,'emptyMessage':_0x340ee1['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x340ee1['loadingMessage']||'Loading...','preload':_0x340ee1['preload']!==![],'searchMode':_0x340ee1['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',_0x16c916=>this['onBlur'](_0x16c916)),this['input']['addEventListener']('input',_0x1fd27f=>this['onInput'](_0x1fd27f)),this['input']['addEventListener']('keydown',_0x32a027=>this['onKeydown'](_0x32a027)),this['clearBtn']['addEventListener']('mousedown',_0x3dbcad=>{_0x3dbcad['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x284089=>{_0x284089['preventDefault']();}),document['addEventListener']('click',_0x3bec39=>{!this['wrapper']['contains'](_0x3bec39['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(_0x1bc683){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1bc683);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5d657e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xbf5646){const _0x3c00cd=_0xbf5646['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3c00cd);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3c00cd):this['loadAndShow'](_0x3c00cd);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x38d972){switch(_0x38d972['key']){case'ArrowDown':_0x38d972['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x38d972['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x38d972['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x38d972['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x37e433){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x339df1=this['selectedIndex']+_0x37e433;if(_0x339df1>=0x0&&_0x339df1<this['filteredItems']['length']){this['selectedIndex']=_0x339df1,this['updateSelectionHighlight']();const _0x4a98a9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4a98a9[this['selectedIndex']]&&_0x4a98a9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2fdb33=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2fdb33['forEach']((_0x55d357,_0x3e783e)=>{_0x55d357['classList']['toggle']('keyboard-selected',_0x3e783e===this['selectedIndex']);});}async['loadAndShow'](_0x5cae49){this['showLoading']();try{const _0x11683f=await this['options']['loadItems'](_0x5cae49);if(this['options']['searchMode']==='server'){let _0x529812=_0x11683f;this['options']['sortItems']&&(_0x529812=this['options']['sortItems']([..._0x11683f]));this['filteredItems']=_0x529812;const _0x579e6b=this['filteredItems']['length']>=this['options']['maxItems'];_0x579e6b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x579e6b),this['open']();}else this['allItems']=_0x11683f,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5cae49);}catch(_0x2b9288){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x2b9288),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x107061){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x107061):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5b863c=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b863c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b863c),this['open']();}['renderItems'](_0x49db64){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']((_0x24d2af,_0x55a7c3)=>{const _0x3c514c=document['createElement']('div');_0x3c514c['className']='autocomplete-select-item',_0x3c514c['setAttribute']('role','option'),_0x3c514c['setAttribute']('data-index',_0x55a7c3);const _0x4b100c=this['options']['renderItem'](_0x24d2af);let _0x48907e='';_0x4b100c['icon']&&(_0x48907e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4b100c['iconClass']||'')+'\x22>'+_0x4b100c['icon']+'</span>'),_0x3c514c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x48907e+'\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'](_0x4b100c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4b100c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4b100c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3c514c['addEventListener']('click',()=>{this['selectItem'](_0x24d2af);}),_0x3c514c['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x55a7c3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3c514c);}),_0x49db64?(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'](_0x5257aa){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5257aa)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4aadaf){this['selectedItem']=_0x4aadaf;const _0x12cd69=this['options']['renderItem'](_0x4aadaf);this['input']['value']=_0x12cd69['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4aadaf);}['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'](_0x37a814){if(_0x37a814){this['selectedItem']=_0x37a814;const _0x3f3fac=this['options']['renderItem'](_0x37a814);this['input']['value']=_0x3f3fac['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5515f0){this['allItems']=_0x5515f0,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'](_0x40bf0c){this['input']['placeholder']=_0x40bf0c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x23e488=null){const _0x156c00=document['getElementById']('admin-menu-container'),_0x2788be=document['getElementById']('admin-menu-btn'),_0x423cbf=document['getElementById']('admin-menu');if(!_0x156c00||!_0x2788be||!_0x423cbf)return;try{!_0x23e488&&(_0x23e488=await API['getCurrentUser']());if(_0x23e488){const _0x4e1260=window['Permissions'],_0x3ff697=_0x4e1260['hasServerPermission'](_0x23e488,'*')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:manage')||_0x4e1260['hasServerPermission'](_0x23e488,'users:create')||_0x4e1260['hasTeamPermission'](_0x23e488,'teams:manage')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:view_details');if(!_0x3ff697)return;_0x156c00['hidden']=![];if(!_0x4e1260['hasServerPermission'](_0x23e488,'*')){const _0x54253a=_0x423cbf['querySelectorAll']('.admin-menu-item');_0x54253a['forEach'](_0xd4c05c=>{const _0x5763c9=_0xd4c05c['querySelector']('.option-text')?.['textContent']?.['trim']();_0x5763c9==='Users'&&!_0x4e1260['hasServerPermission'](_0x23e488,'users:create')&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Skills'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Settings'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Health'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Git\x20History'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Roles'&&(_0xd4c05c['hidden']=!![]);});}_0x2788be['addEventListener']('click',_0x23deae=>{_0x23deae['stopPropagation']();const _0x19a98c=document['getElementById']('actions-menu');if(_0x19a98c)_0x19a98c['hidden']=!![];_0x423cbf['hidden']=!_0x423cbf['hidden'];}),document['addEventListener']('click',_0x7e4b9d=>{!_0x423cbf['hidden']&&!_0x2788be['contains'](_0x7e4b9d['target'])&&!_0x423cbf['contains'](_0x7e4b9d['target'])&&(_0x423cbf['hidden']=!![]);}),document['addEventListener']('keydown',_0x58e410=>{_0x58e410['key']==='Escape'&&!_0x423cbf['hidden']&&(_0x423cbf['hidden']=!![]);});const _0x59e427=document['getElementById']('server-health-btn');_0x59e427&&_0x59e427['addEventListener']('click',async()=>{_0x423cbf['hidden']=!![];const {openServerHealthModal:_0x5d58d8}=await import('./server-health.js');_0x5d58d8();});}}catch(_0x5ccaf2){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5ccaf2['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};