@profoundlogic/coderflow-server 0.6.6 → 0.6.7

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 (178) hide show
  1. package/dist/base-image/agent-wrapper.sh +1 -1
  2. package/dist/base-image/sync-repos.sh +7 -1
  3. package/dist/coder-server.js +1 -1
  4. package/dist/config/cli-models.json +0 -12
  5. package/dist/config.js +1 -1
  6. package/dist/lib/agent-keepalive.js +1 -1
  7. package/dist/lib/agent-models.js +1 -1
  8. package/dist/lib/api-keys.js +1 -1
  9. package/dist/lib/apiKeys.js +1 -1
  10. package/dist/lib/app-server-ports.js +1 -1
  11. package/dist/lib/auto-judge.js +1 -1
  12. package/dist/lib/automation-service.js +1 -1
  13. package/dist/lib/basic-auth.js +1 -1
  14. package/dist/lib/bindings.js +1 -1
  15. package/dist/lib/build-history.js +1 -1
  16. package/dist/lib/build-output-service.js +1 -1
  17. package/dist/lib/build-scheduler.js +1 -1
  18. package/dist/lib/build-service.js +1 -1
  19. package/dist/lib/ca-certificates.js +1 -1
  20. package/dist/lib/claude-oauth-refresh.js +1 -1
  21. package/dist/lib/cli/build.js +1 -1
  22. package/dist/lib/cli/cleanup-users.js +1 -1
  23. package/dist/lib/cli/config-command.js +1 -1
  24. package/dist/lib/cli/config.js +1 -1
  25. package/dist/lib/cli/create-user.js +1 -1
  26. package/dist/lib/cli/grant-admin.js +1 -1
  27. package/dist/lib/cli/init.js +1 -1
  28. package/dist/lib/cli/jira.js +1 -1
  29. package/dist/lib/cli/license.js +1 -1
  30. package/dist/lib/cli/list-roles.js +1 -1
  31. package/dist/lib/cli/list-users.js +1 -1
  32. package/dist/lib/cli/server-manager.js +1 -1
  33. package/dist/lib/cli/set-password.js +1 -1
  34. package/dist/lib/config-migration.js +1 -1
  35. package/dist/lib/container-credential-sync.js +1 -1
  36. package/dist/lib/container-tokens.js +1 -1
  37. package/dist/lib/data-dir.js +1 -1
  38. package/dist/lib/deployment-history.js +1 -1
  39. package/dist/lib/deployment-service.js +1 -1
  40. package/dist/lib/docker-utils.js +1 -1
  41. package/dist/lib/email.js +1 -1
  42. package/dist/lib/emailTemplates.js +1 -1
  43. package/dist/lib/entitlement.js +1 -1
  44. package/dist/lib/external-connections.js +1 -1
  45. package/dist/lib/fetch-utils.js +1 -1
  46. package/dist/lib/git-commit-details-route.js +1 -1
  47. package/dist/lib/git-history-diff-guardrails.js +1 -1
  48. package/dist/lib/git-provider-service.js +1 -1
  49. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  50. package/dist/lib/git-provider-setup/index.js +1 -1
  51. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  52. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  53. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  54. package/dist/lib/git-providers/github-app-provider.js +1 -1
  55. package/dist/lib/git-providers/index.js +1 -1
  56. package/dist/lib/git-providers/provider-factory.js +1 -1
  57. package/dist/lib/git-providers/provider-interface.js +1 -1
  58. package/dist/lib/github-urls.js +1 -1
  59. package/dist/lib/group-objective-linking.js +1 -1
  60. package/dist/lib/ibmi-sync.js +1 -1
  61. package/dist/lib/jira-client.js +1 -1
  62. package/dist/lib/judge-blinding.js +1 -1
  63. package/dist/lib/logger.js +1 -1
  64. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  65. package/dist/lib/model-fetcher.js +1 -1
  66. package/dist/lib/notifications.js +1 -1
  67. package/dist/lib/objective-context.js +1 -1
  68. package/dist/lib/oidc-auth.js +1 -1
  69. package/dist/lib/oidc-device-flow.js +1 -1
  70. package/dist/lib/passwordTokens.js +1 -1
  71. package/dist/lib/permission-resolver.js +1 -1
  72. package/dist/lib/pin-cascade.js +1 -1
  73. package/dist/lib/provider-accounts.js +1 -1
  74. package/dist/lib/provider-oauth.js +1 -1
  75. package/dist/lib/provider-profile.js +1 -1
  76. package/dist/lib/provider-token-refresh.js +1 -1
  77. package/dist/lib/rbac-user-state.js +1 -1
  78. package/dist/lib/request-url.js +1 -1
  79. package/dist/lib/rewind.js +1 -1
  80. package/dist/lib/role-definitions.js +1 -1
  81. package/dist/lib/roles.js +1 -1
  82. package/dist/lib/secrets.js +1 -1
  83. package/dist/lib/setup-repo-git-auth.js +1 -1
  84. package/dist/lib/state-capture.js +1 -1
  85. package/dist/lib/static-files.js +1 -1
  86. package/dist/lib/task-aliases.js +1 -0
  87. package/dist/lib/task-name-format.js +1 -1
  88. package/dist/lib/task-name-generator.js +1 -1
  89. package/dist/lib/task-source-metadata.js +1 -1
  90. package/dist/lib/teams.js +1 -1
  91. package/dist/lib/user-git-oauth.js +1 -1
  92. package/dist/lib/user-git-tokens.js +1 -1
  93. package/dist/lib/users.js +1 -1
  94. package/dist/middleware/requireAuth.js +1 -1
  95. package/dist/middleware/requireInit.js +1 -1
  96. package/dist/middleware/requirePermission.js +1 -1
  97. package/dist/package.json +1 -1
  98. package/dist/playwright.config.js +1 -1
  99. package/dist/playwright.task-terminal.config.js +1 -1
  100. package/dist/routes/apiKeys.js +1 -1
  101. package/dist/routes/auth-oidc.js +1 -1
  102. package/dist/routes/auth.js +1 -1
  103. package/dist/routes/automations.js +1 -1
  104. package/dist/routes/bindings.js +1 -1
  105. package/dist/routes/build.js +1 -1
  106. package/dist/routes/containers.js +1 -1
  107. package/dist/routes/deploy-task.js +1 -1
  108. package/dist/routes/environment-management.js +1 -1
  109. package/dist/routes/environments.js +1 -1
  110. package/dist/routes/external-skills.js +1 -1
  111. package/dist/routes/git-credentials.js +1 -1
  112. package/dist/routes/git-oauth.js +1 -1
  113. package/dist/routes/git-provider-setup.js +1 -1
  114. package/dist/routes/health.js +1 -1
  115. package/dist/routes/jira.js +1 -1
  116. package/dist/routes/objective-management.js +1 -1
  117. package/dist/routes/password.js +1 -1
  118. package/dist/routes/prompt.js +1 -1
  119. package/dist/routes/provider-auth.js +1 -1
  120. package/dist/routes/qa.js +1 -1
  121. package/dist/routes/roles.js +1 -1
  122. package/dist/routes/settings.js +1 -1
  123. package/dist/routes/skill-management.js +1 -1
  124. package/dist/routes/skills.js +1 -1
  125. package/dist/routes/tasks.js +1 -1
  126. package/dist/routes/teams.js +1 -1
  127. package/dist/routes/templates.js +1 -1
  128. package/dist/routes/test-task.js +1 -1
  129. package/dist/routes/test.js +1 -1
  130. package/dist/routes/users.js +1 -1
  131. package/dist/routes/visualizations.js +1 -1
  132. package/dist/scripts/create-user.js +1 -1
  133. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  134. package/dist/start.js +1 -1
  135. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  136. package/dist/web-ui/public/activity-feed.js +1 -1
  137. package/dist/web-ui/public/activity-formatters.js +1 -1
  138. package/dist/web-ui/public/agent-event-parser.js +1 -1
  139. package/dist/web-ui/public/app.js +1 -1
  140. package/dist/web-ui/public/approve-dialog.js +1 -1
  141. package/dist/web-ui/public/automation-links.js +1 -1
  142. package/dist/web-ui/public/automation-schedule.js +1 -1
  143. package/dist/web-ui/public/comments-widget.js +1 -1
  144. package/dist/web-ui/public/diff-utils.js +1 -1
  145. package/dist/web-ui/public/environments.js +1 -1
  146. package/dist/web-ui/public/feedback-widget.css +39 -0
  147. package/dist/web-ui/public/feedback-widget.js +1 -1
  148. package/dist/web-ui/public/file-selection-tree.js +1 -1
  149. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  150. package/dist/web-ui/public/git-history.js +1 -1
  151. package/dist/web-ui/public/git-status.js +1 -1
  152. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  153. package/dist/web-ui/public/index.js +1 -1
  154. package/dist/web-ui/public/login.js +1 -1
  155. package/dist/web-ui/public/markdown-editor.js +1 -1
  156. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  157. package/dist/web-ui/public/modal-maximize.js +1 -1
  158. package/dist/web-ui/public/notifications.js +1 -1
  159. package/dist/web-ui/public/permissions.js +1 -1
  160. package/dist/web-ui/public/pr-dialog.js +1 -1
  161. package/dist/web-ui/public/roles.js +1 -1
  162. package/dist/web-ui/public/server-health.js +1 -1
  163. package/dist/web-ui/public/settings.html +0 -4
  164. package/dist/web-ui/public/settings.js +1 -1
  165. package/dist/web-ui/public/setup-password.js +1 -1
  166. package/dist/web-ui/public/skills.js +1 -1
  167. package/dist/web-ui/public/sse-client.js +1 -1
  168. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  169. package/dist/web-ui/public/styles.css +34 -0
  170. package/dist/web-ui/public/task-judging-helpers.js +1 -0
  171. package/dist/web-ui/public/task.html +1 -0
  172. package/dist/web-ui/public/task.js +1 -1
  173. package/dist/web-ui/public/teams.js +1 -1
  174. package/dist/web-ui/public/terminal.js +1 -1
  175. package/dist/web-ui/public/theme.js +1 -1
  176. package/dist/web-ui/public/users.js +1 -1
  177. package/dist/web-ui/public/variant-grouping.js +1 -1
  178. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x4fe770=window['location']['pathname'],_0x3b101e=_0x4fe770['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3b101e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3b101e[0x1]),_0x3b101e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1d181b={}){const _0x2d1a19=new URLSearchParams();_0x1d181b['userId']&&_0x2d1a19['set']('userId',String(_0x1d181b['userId']));_0x1d181b['automation']&&_0x2d1a19['set']('automation',String(_0x1d181b['automation']));const _0x412f1c=API_BASE+'/tasks/stats'+(_0x2d1a19['toString']()?'?'+_0x2d1a19['toString']():''),_0x11cc2e=await fetch(_0x412f1c);if(!_0x11cc2e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x11cc2e['statusText']);return await _0x11cc2e['json']();},async 'getTasks'(_0x2707a5={}){const _0x3c2eb4=new URLSearchParams();_0x2707a5['status']&&_0x3c2eb4['set']('status',String(_0x2707a5['status']));_0x2707a5['environment']&&_0x3c2eb4['set']('environment',String(_0x2707a5['environment']));_0x2707a5['automation']&&_0x3c2eb4['set']('automation',String(_0x2707a5['automation']));if(_0x2707a5['include']){const _0x5f2104=Array['isArray'](_0x2707a5['include'])?_0x2707a5['include']['join'](','):String(_0x2707a5['include']);_0x5f2104&&_0x3c2eb4['set']('include',_0x5f2104);}_0x2707a5['filter']&&_0x3c2eb4['set']('filter',String(_0x2707a5['filter']));_0x2707a5['page']&&_0x3c2eb4['set']('page',String(_0x2707a5['page']));_0x2707a5['limit']&&_0x3c2eb4['set']('limit',String(_0x2707a5['limit']));_0x2707a5['userId']&&_0x3c2eb4['set']('userId',String(_0x2707a5['userId']));_0x2707a5['search']&&_0x3c2eb4['set']('search',String(_0x2707a5['search']));_0x2707a5['includeChildTasks']&&_0x3c2eb4['set']('includeChildTasks','true');const _0x41aeb8=API_BASE+'/tasks'+(_0x3c2eb4['toString']()?'?'+_0x3c2eb4['toString']():''),_0x14e538=await fetch(_0x41aeb8);if(!_0x14e538['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x14e538['statusText']);return await _0x14e538['json']();},async 'getAutomations'(_0x3e607b={}){const _0x264b21=new URLSearchParams();_0x3e607b['environment']&&_0x264b21['set']('environment',String(_0x3e607b['environment']));const _0x38f2e0=await fetch(API_BASE+'/api/automations'+(_0x264b21['toString']()?'?'+_0x264b21['toString']():''));if(!_0x38f2e0['ok']){const _0x1d4f55=await _0x38f2e0['json']()['catch'](()=>({}));throw new Error(_0x1d4f55['message']||_0x1d4f55['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x38f2e0['statusText']);}return await _0x38f2e0['json']();},async 'getAutomation'(_0x4b429f){const _0x2221f2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4b429f));if(!_0x2221f2['ok']){const _0x4e9157=await _0x2221f2['json']()['catch'](()=>({}));throw new Error(_0x4e9157['message']||_0x4e9157['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x2221f2['statusText']);}return await _0x2221f2['json']();},async 'createAutomation'(_0x4fd69e){const _0x36403b=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fd69e||{})});if(!_0x36403b['ok']){const _0x192a20=await _0x36403b['json']()['catch'](()=>({}));throw new Error(_0x192a20['message']||_0x192a20['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x36403b['statusText']);}return await _0x36403b['json']();},async 'updateAutomation'(_0x22f5a5,_0x19d4fe){const _0xb104c4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22f5a5),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19d4fe||{})});if(!_0xb104c4['ok']){const _0x6e0d63=await _0xb104c4['json']()['catch'](()=>({}));throw new Error(_0x6e0d63['message']||_0x6e0d63['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xb104c4['statusText']);}return await _0xb104c4['json']();},async 'deleteAutomation'(_0xf1d970){const _0x4881c5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xf1d970),{'method':'DELETE'});if(!_0x4881c5['ok']){const _0x2ccdfa=await _0x4881c5['json']()['catch'](()=>({}));throw new Error(_0x2ccdfa['message']||_0x2ccdfa['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x4881c5['statusText']);}return await _0x4881c5['json']();},async 'triggerAutomation'(_0x1dd83b){const _0x369ceb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1dd83b)+'/trigger',{'method':'POST'});if(!_0x369ceb['ok']){const _0x21717b=await _0x369ceb['json']()['catch'](()=>({}));throw new Error(_0x21717b['message']||_0x21717b['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x369ceb['statusText']);}return await _0x369ceb['json']();},async 'setAutomationEnabled'(_0x5c800d,_0x54038a){const _0x5ea481=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c800d)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x54038a})});if(!_0x5ea481['ok']){const _0x25c9c7=await _0x5ea481['json']()['catch'](()=>({}));throw new Error(_0x25c9c7['message']||_0x25c9c7['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x5ea481['statusText']);}return await _0x5ea481['json']();},async 'getAutomationHistory'(_0x439264,_0x45aafe=0x32){const _0x289510=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x439264)+'/history?limit='+encodeURIComponent(String(_0x45aafe)));if(!_0x289510['ok']){const _0xdda5d=await _0x289510['json']()['catch'](()=>({}));throw new Error(_0xdda5d['message']||_0xdda5d['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x289510['statusText']);}return await _0x289510['json']();},async 'getTask'(_0x489865,_0x2fa525={}){const _0x2a7070=new URLSearchParams();if(_0x2fa525['include']){const _0x5000e8=Array['isArray'](_0x2fa525['include'])?_0x2fa525['include']['join'](','):String(_0x2fa525['include']);if(_0x5000e8)_0x2a7070['set']('include',_0x5000e8);}const _0x19a00f=await fetch(API_BASE+'/tasks/'+_0x489865+(_0x2a7070['toString']()?'?'+_0x2a7070['toString']():''));if(!_0x19a00f['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x19a00f['statusText']);return await _0x19a00f['json']();},async 'getTaskResults'(_0xa29c37){const _0x551de2=await fetch(API_BASE+'/tasks/'+_0xa29c37+'/results');if(!_0x551de2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x551de2['statusText']);return await _0x551de2['json']();},async 'getTaskPatches'(_0x7c9f86){const _0x306b8d=await fetch(API_BASE+'/tasks/'+_0x7c9f86+'/patches');if(!_0x306b8d['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x306b8d['statusText']);return await _0x306b8d['json']();},async 'getTaskAttachments'(_0x19a961){const _0x54691d=await fetch(API_BASE+'/tasks/'+_0x19a961+'/attachments');if(!_0x54691d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x54691d['statusText']);return await _0x54691d['json']();},async 'uploadAttachments'(_0x36cbc5,_0x45e985){const _0x578404=new FormData();for(const _0x463651 of _0x45e985){_0x578404['append']('attachments',_0x463651);}const _0x7ba045=await fetch(API_BASE+'/tasks/'+_0x36cbc5+'/attachments',{'method':'POST','body':_0x578404});if(!_0x7ba045['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x7ba045['statusText']);return await _0x7ba045['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3efa2f=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3efa2f['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3efa2f['json']();}catch(_0x4fde84){return{'available':![],'reason':_0x4fde84['message']};}},async 'generateTaskName'(_0x358e0e){try{const _0x41d21b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x358e0e})});return await _0x41d21b['json']();}catch(_0x5e34fb){return{'success':![],'error':_0x5e34fb['message']};}},async 'createTask'(_0x18cd3f){let _0xa8bfc,_0x35a53b={};if(_0x18cd3f['files']&&_0x18cd3f['files']['length']>0x0){const _0x122a92=new FormData();for(const [_0x12edc5,_0x347c80]of Object['entries'](_0x18cd3f)){if(_0x12edc5!=='files'){if(_0x347c80==null)continue;typeof _0x347c80==='object'?_0x122a92['append'](_0x12edc5,JSON['stringify'](_0x347c80)):_0x122a92['append'](_0x12edc5,String(_0x347c80));}}for(const _0x26c77d of _0x18cd3f['files']){_0x122a92['append']('attachments',_0x26c77d);}_0xa8bfc=_0x122a92;}else _0x35a53b['Content-Type']='application/json',_0xa8bfc=JSON['stringify'](_0x18cd3f);const _0x213d54=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x35a53b,'body':_0xa8bfc});if(!_0x213d54['ok']){const _0x5b104f=await _0x213d54['json'](),_0x27a3b7=new Error(_0x5b104f['error']||'Failed\x20to\x20create\x20task:\x20'+_0x213d54['statusText']),{message:_0x2c4355,..._0x316d56}=_0x5b104f;Object['assign'](_0x27a3b7,_0x316d56);throw _0x27a3b7;}return await _0x213d54['json']();},async 'createTestTask'(_0x3b5a17){const _0x184d8d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b5a17)});if(!_0x184d8d['ok']){const _0x1b8603=await _0x184d8d['json']();throw new Error(_0x1b8603['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x184d8d['statusText']);}return await _0x184d8d['json']();},async 'createEphemeralTest'(_0x523fcb){const _0x2290d6=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x523fcb)});if(!_0x2290d6['ok']){const _0x1556b6=await _0x2290d6['json']();throw new Error(_0x1556b6['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2290d6['statusText']);}return await _0x2290d6['json']();},async 'createDeployTask'(_0x41d36b){const _0x4f3801=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41d36b)});if(!_0x4f3801['ok']){const _0x109dce=await _0x4f3801['json']();throw new Error(_0x109dce['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4f3801['statusText']);}return await _0x4f3801['json']();},async 'getEnvironments'(){const _0xd36410=await fetch(API_BASE+'/environments');if(!_0xd36410['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xd36410['statusText']);return await _0xd36410['json']();},async 'getEnvironment'(_0x14e7d5){const _0x4da938=await fetch(API_BASE+'/environments/'+_0x14e7d5);if(!_0x4da938['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4da938['statusText']);return await _0x4da938['json']();},async 'getEnvironmentRepoHistory'(_0x15eb80,_0x38a8fc,_0x293816={}){if(!_0x15eb80||!_0x38a8fc)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x41da89=new URLSearchParams();if(_0x293816['limit'])_0x41da89['set']('limit',String(_0x293816['limit']));if(_0x293816['offset'])_0x41da89['set']('offset',String(_0x293816['offset']));if(_0x293816['search'])_0x41da89['set']('search',String(_0x293816['search']));if(_0x293816['branch'])_0x41da89['set']('branch',String(_0x293816['branch']));const _0x4133e3=API_BASE+'/environments/'+encodeURIComponent(_0x15eb80)+'/repos/'+encodeURIComponent(_0x38a8fc)+'/git/history',_0x3e6ac8=await fetch(''+_0x4133e3+(_0x41da89['toString']()?'?'+_0x41da89['toString']():''));if(!_0x3e6ac8['ok']){const _0x3e0a68=await _0x3e6ac8['json']()['catch'](()=>({}));throw new Error(_0x3e0a68['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3e6ac8['statusText']);}return await _0x3e6ac8['json']();},async 'getEnvironmentRepoCommit'(_0x1c627f,_0xc90db2,_0x52dd59){if(!_0x1c627f||!_0xc90db2||!_0x52dd59)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1ea94f=API_BASE+'/environments/'+encodeURIComponent(_0x1c627f)+'/repos/'+encodeURIComponent(_0xc90db2)+'/git/commits/'+encodeURIComponent(_0x52dd59),_0x5299df=await fetch(_0x1ea94f);if(!_0x5299df['ok']){const _0x1b0a89=await _0x5299df['json']()['catch'](()=>({}));throw new Error(_0x1b0a89['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5299df['statusText']);}return await _0x5299df['json']();},async 'getEnvironmentRepoBranches'(_0xd9158,_0x53c363){if(!_0xd9158||!_0x53c363)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3f2343=API_BASE+'/environments/'+encodeURIComponent(_0xd9158)+'/repos/'+encodeURIComponent(_0x53c363)+'/git/branches',_0x2b8139=await fetch(_0x3f2343);if(!_0x2b8139['ok']){const _0x40c8b3=await _0x2b8139['json']()['catch'](()=>({}));throw new Error(_0x40c8b3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x2b8139['statusText']);}return await _0x2b8139['json']();},async 'revertEnvironmentRepoCommit'(_0x8447a,_0x27d150,_0x1af147,_0x3a98a1={}){if(!_0x8447a||!_0x27d150||!_0x1af147)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1dc5ff=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x8447a)+'/repos/'+encodeURIComponent(_0x27d150)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1af147,..._0x3a98a1})});if(!_0x1dc5ff['ok']){const _0x1d097f=await _0x1dc5ff['json']()['catch'](()=>({}));throw new Error(_0x1d097f['message']||_0x1d097f['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1dc5ff['statusText']);}return await _0x1dc5ff['json']();},async 'getTemplates'(_0x1f94c={}){const _0x3f3f03=new URLSearchParams();if(_0x1f94c['include']){const _0x57e1bf=Array['isArray'](_0x1f94c['include'])?_0x1f94c['include']['join'](','):String(_0x1f94c['include']);if(_0x57e1bf)_0x3f3f03['set']('include',_0x57e1bf);}const _0x3d57d9=await fetch(API_BASE+'/templates'+(_0x3f3f03['toString']()?'?'+_0x3f3f03['toString']():''));if(!_0x3d57d9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3d57d9['statusText']);return await _0x3d57d9['json']();},async 'getTemplatesForEnvironment'(_0x2226a7,_0x1edce5={}){if(!_0x2226a7)throw new Error('Environment\x20name\x20is\x20required');const _0x367b8d=new URLSearchParams();if(_0x1edce5['include']){const _0x39413f=Array['isArray'](_0x1edce5['include'])?_0x1edce5['include']['join'](','):String(_0x1edce5['include']);if(_0x39413f)_0x367b8d['set']('include',_0x39413f);}const _0x559fcd=await fetch(API_BASE+'/templates/'+_0x2226a7+(_0x367b8d['toString']()?'?'+_0x367b8d['toString']():''));if(!_0x559fcd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x2226a7+':\x20'+_0x559fcd['statusText']);return await _0x559fcd['json']();},async 'getTemplate'(_0xb05df8,_0x40378d,_0x397614={}){if(!_0xb05df8||!_0x40378d)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x50693a=new URLSearchParams();if(_0x397614['include']){const _0x4b21d2=Array['isArray'](_0x397614['include'])?_0x397614['include']['join'](','):String(_0x397614['include']);if(_0x4b21d2)_0x50693a['set']('include',_0x4b21d2);}const _0x210388=await fetch(API_BASE+'/templates/'+_0xb05df8+'/'+_0x40378d+(_0x50693a['toString']()?'?'+_0x50693a['toString']():''));if(!_0x210388['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x210388['statusText']);return await _0x210388['json']();},async 'getTaskLogs'(_0x243639,_0x210002={}){if(!_0x243639)throw new Error('Task\x20ID\x20is\x20required');const _0x4542d8=new URLSearchParams();_0x210002['tail']&&_0x4542d8['set']('tail',String(_0x210002['tail']));const _0x24fb9b=await fetch(API_BASE+'/tasks/'+_0x243639+'/logs'+(_0x4542d8['toString']()?'?'+_0x4542d8['toString']():''));if(!_0x24fb9b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x24fb9b['statusText']);return await _0x24fb9b['text']();},async 'getContainers'(){const _0x5e7a7e=await fetch(API_BASE+'/containers');if(!_0x5e7a7e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5e7a7e['statusText']);return await _0x5e7a7e['json']();},async 'getContainer'(_0x3fa82b){const _0x41ba7a=await fetch(API_BASE+'/containers/'+_0x3fa82b);if(!_0x41ba7a['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x41ba7a['statusText']);return await _0x41ba7a['json']();},async 'startInteractiveContainer'(_0x19fdb5){const _0x5b86ce=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19fdb5)});if(!_0x5b86ce['ok']){const _0x50266d=await _0x5b86ce['json']()['catch'](()=>({}));throw new Error(_0x50266d['message']||'Failed\x20to\x20start\x20container:\x20'+_0x5b86ce['statusText']);}return await _0x5b86ce['json']();},async 'stopContainer'(_0x10b994){const _0x42f516=await fetch(API_BASE+'/containers/'+_0x10b994,{'method':'DELETE'});if(!_0x42f516['ok']){const _0x10cb07=await _0x42f516['json']()['catch'](()=>({}));throw new Error(_0x10cb07['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x42f516['statusText']);}return await _0x42f516['json']();},async 'stopTask'(_0x522b02){if(!_0x522b02)throw new Error('Task\x20ID\x20is\x20required');const _0x1dd206=await fetch(API_BASE+'/tasks/'+_0x522b02+'/stop',{'method':'POST'});if(!_0x1dd206['ok']){const _0x408260=await _0x1dd206['json']()['catch'](()=>({}));throw new Error(_0x408260['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1dd206['statusText']);}return await _0x1dd206['json']();},async 'interruptTask'(_0x3f0697){if(!_0x3f0697)throw new Error('Task\x20ID\x20is\x20required');const _0x558686=await fetch(API_BASE+'/tasks/'+_0x3f0697+'/interrupt',{'method':'POST'});if(!_0x558686['ok']){const _0x49be3c=await _0x558686['json']()['catch'](()=>({}));throw new Error(_0x49be3c['error']||_0x49be3c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x558686['statusText']);}return await _0x558686['json']();},async 'startTask'(_0x5509b7){if(!_0x5509b7)throw new Error('Task\x20ID\x20is\x20required');const _0x217614=await fetch(API_BASE+'/tasks/'+_0x5509b7+'/start',{'method':'POST'});if(!_0x217614['ok']){const _0x3ea34a=await _0x217614['json']()['catch'](()=>({}));throw new Error(_0x3ea34a['error']||'Failed\x20to\x20start\x20task:\x20'+_0x217614['statusText']);}return await _0x217614['json']();},async 'deleteTask'(_0x2c014c){if(!_0x2c014c)throw new Error('Task\x20ID\x20is\x20required');const _0x92718a=await fetch(API_BASE+'/tasks/'+_0x2c014c,{'method':'DELETE'});if(!_0x92718a['ok']){const _0x24f7f0=await _0x92718a['json']()['catch'](()=>({}));throw new Error(_0x24f7f0['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x92718a['statusText']);}return await _0x92718a['json']();},async 'refreshTasksFromDisk'(){const _0x57c805=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x57c805['ok']){const _0x44d1ac=await _0x57c805['json']()['catch'](()=>({}));throw new Error(_0x44d1ac['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x57c805['statusText']);}return await _0x57c805['json']();},async 'approveTask'(_0x4a0b91,_0x434d10={}){if(!_0x4a0b91)throw new Error('Task\x20ID\x20is\x20required');const _0x2676e8={'commit_message':_0x434d10['commit_message']||'','pull':_0x434d10['pull']??![],'push':_0x434d10['push']??![]};_0x434d10['new_branch']&&(_0x2676e8['new_branch']=_0x434d10['new_branch']);const _0x175656=await fetch(API_BASE+'/tasks/'+_0x4a0b91+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2676e8)});if(!_0x175656['ok']){const _0x34fe26=await _0x175656['json']()['catch'](()=>({}));let _0x402f12=_0x34fe26['error']||_0x34fe26['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x175656['statusText'];if(_0x34fe26['results']&&Array['isArray'](_0x34fe26['results'])){const _0x4949ad=_0x34fe26['results']['filter'](_0x25fea4=>!_0x25fea4['success']&&_0x25fea4['error']);_0x4949ad['length']>0x0&&(_0x402f12=_0x4949ad[0x0]['error']);}throw new Error(_0x402f12);}return await _0x175656['json']();},async 'getPullRequestInfo'(_0x2352bf){if(!_0x2352bf)throw new Error('Task\x20ID\x20is\x20required');const _0x3a6c35=await fetch(API_BASE+'/tasks/'+_0x2352bf+'/pull-request-info');if(!_0x3a6c35['ok']){const _0x3495a8=await _0x3a6c35['json']()['catch'](()=>({}));throw new Error(_0x3495a8['error']||_0x3495a8['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3a6c35['statusText']);}return await _0x3a6c35['json']();},async 'createPullRequests'(_0x199c03,_0x37e30c){if(!_0x199c03)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37e30c||!Array['isArray'](_0x37e30c))throw new Error('repos\x20array\x20is\x20required');const _0x57819b=await fetch(API_BASE+'/tasks/'+_0x199c03+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x37e30c})});if(!_0x57819b['ok']){const _0x411d54=await _0x57819b['json']()['catch'](()=>({}));let _0x17fde0=_0x411d54['error']||_0x411d54['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x57819b['statusText'];if(_0x411d54['results']&&Array['isArray'](_0x411d54['results'])){const _0x184575=_0x411d54['results']['filter'](_0x26e0a7=>!_0x26e0a7['success']&&_0x26e0a7['error']);_0x184575['length']>0x0&&(_0x17fde0=_0x184575[0x0]['error']);}throw new Error(_0x17fde0);}return await _0x57819b['json']();},async 'syncRepos'(_0x428198){if(!_0x428198)throw new Error('Task\x20ID\x20is\x20required');const _0x9aca6a=await fetch(API_BASE+'/tasks/'+_0x428198+'/sync-repos',{'method':'POST'});if(!_0x9aca6a['ok']){const _0x2a63ef=await _0x9aca6a['json']()['catch'](()=>({}));throw new Error(_0x2a63ef['error']||_0x2a63ef['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x9aca6a['statusText']);}return await _0x9aca6a['json']();},async 'getIbmiSyncInfo'(_0x370f49){if(!_0x370f49)throw new Error('Task\x20ID\x20is\x20required');const _0x451e77=await fetch(API_BASE+'/tasks/'+_0x370f49+'/ibmi-sync-info');if(!_0x451e77['ok']){const _0x42ac5f=await _0x451e77['json']()['catch'](()=>({}));throw new Error(_0x42ac5f['error']||_0x42ac5f['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x451e77['json']();},async 'getSyncFiles'(_0x443ea0){if(!_0x443ea0)throw new Error('Task\x20ID\x20is\x20required');const _0x23ea8c=await fetch(API_BASE+'/tasks/'+_0x443ea0+'/sync-to-ibmi/files');if(!_0x23ea8c['ok']){const _0x54f715=await _0x23ea8c['json']()['catch'](()=>({}));throw new Error(_0x54f715['error']||_0x54f715['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x23ea8c['json']();},async 'syncToIbmi'(_0x585979,_0x4b09a2,_0x4495c0=null,_0x2df63d=null,_0x787820=null){if(!_0x585979)throw new Error('Task\x20ID\x20is\x20required');const _0x5ba663={'library':_0x4b09a2};if(_0x4495c0)_0x5ba663['user']=_0x4495c0;if(_0x2df63d)_0x5ba663['password']=_0x2df63d;if(_0x787820)_0x5ba663['files']=_0x787820;const _0x32a0fb=await fetch(API_BASE+'/tasks/'+_0x585979+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ba663)});if(!_0x32a0fb['ok']){const _0x8c1942=await _0x32a0fb['json']()['catch'](()=>({}));throw new Error(_0x8c1942['error']||_0x8c1942['message']||'Sync\x20failed');}return await _0x32a0fb['json']();},async 'getIbmiSyncLog'(_0x43c194){if(!_0x43c194)throw new Error('Task\x20ID\x20is\x20required');const _0x20cf95=await fetch(API_BASE+'/tasks/'+_0x43c194+'/ibmi-sync-log');if(!_0x20cf95['ok']){const _0x2ead0b=await _0x20cf95['json']()['catch'](()=>({}));throw new Error(_0x2ead0b['error']||_0x2ead0b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x20cf95['json']();},async 'pullChanges'(_0x30eb6a){if(!_0x30eb6a)throw new Error('Task\x20ID\x20is\x20required');const _0x4d397f=await fetch(API_BASE+'/tasks/'+_0x30eb6a+'/pull-changes',{'method':'POST'});if(!_0x4d397f['ok']){const _0x560c4e=await _0x4d397f['json']()['catch'](()=>({}));throw new Error(_0x560c4e['error']||_0x560c4e['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4d397f['statusText']);}return await _0x4d397f['json']();},async 'readFile'(_0x1342f5,_0x5d48c8){if(!_0x1342f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d48c8)throw new Error('File\x20path\x20is\x20required');const _0x41ec4c=await fetch(API_BASE+'/tasks/'+_0x1342f5+'/files?path='+encodeURIComponent(_0x5d48c8));if(!_0x41ec4c['ok']){const _0x2f060f=await _0x41ec4c['json']()['catch'](()=>({}));throw new Error(_0x2f060f['error']||_0x2f060f['message']||'Failed\x20to\x20read\x20file:\x20'+_0x41ec4c['statusText']);}return await _0x41ec4c['json']();},'getTaskFileDownloadUrl'(_0x2a3f50,_0x1a6b81){if(!_0x2a3f50)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a6b81)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2a3f50+'/files/download?path='+encodeURIComponent(_0x1a6b81);},async 'writeFile'(_0x1a4b52,_0x3a41f6,_0x1b699a){if(!_0x1a4b52)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a41f6)throw new Error('File\x20path\x20is\x20required');if(_0x1b699a===undefined)throw new Error('Content\x20is\x20required');const _0x17f007=await fetch(API_BASE+'/tasks/'+_0x1a4b52+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a41f6,'content':_0x1b699a})});if(!_0x17f007['ok']){const _0x3f2c69=await _0x17f007['json']()['catch'](()=>({}));throw new Error(_0x3f2c69['error']||_0x3f2c69['message']||'Failed\x20to\x20write\x20file:\x20'+_0x17f007['statusText']);}return await _0x17f007['json']();},async 'uploadTaskFiles'(_0x52c58b,_0x5d000a,_0x234f7a){if(!_0x52c58b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d000a)throw new Error('Target\x20directory\x20is\x20required');if(!_0x234f7a||_0x234f7a['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x56849f=new FormData();_0x56849f['append']('targetDir',_0x5d000a);for(const _0x556ffe of _0x234f7a){_0x56849f['append']('files',_0x556ffe,_0x556ffe['name']);}const _0x3c9aa2=await fetch(API_BASE+'/tasks/'+_0x52c58b+'/files/upload',{'method':'POST','body':_0x56849f});if(!_0x3c9aa2['ok']){const _0x3dc29e=await _0x3c9aa2['json']()['catch'](()=>({}));throw new Error(_0x3dc29e['error']||_0x3dc29e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x3c9aa2['statusText']);}return await _0x3c9aa2['json']();},async 'deleteFile'(_0x13bd0d,_0x2043e2){if(!_0x13bd0d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2043e2)throw new Error('File\x20path\x20is\x20required');const _0x335da6=await fetch(API_BASE+'/tasks/'+_0x13bd0d+'/files?path='+encodeURIComponent(_0x2043e2),{'method':'DELETE'});if(!_0x335da6['ok']){const _0x476bbe=await _0x335da6['json']()['catch'](()=>({}));throw new Error(_0x476bbe['error']||_0x476bbe['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x335da6['statusText']);}return await _0x335da6['json']();},async 'discardFile'(_0x4a0381,_0x2005f6,_0x49d17c){if(!_0x4a0381)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2005f6)throw new Error('File\x20path\x20is\x20required');if(!_0x49d17c)throw new Error('Repository\x20path\x20is\x20required');const _0x2aa913=await fetch(API_BASE+'/tasks/'+_0x4a0381+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2005f6,'repoPath':_0x49d17c})});if(!_0x2aa913['ok']){const _0x12dd8c=await _0x2aa913['json']()['catch'](()=>({}));throw new Error(_0x12dd8c['error']||_0x12dd8c['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2aa913['statusText']);}return await _0x2aa913['json']();},async 'followUpTask'(_0x12bcf5,_0x50dc8a={}){if(!_0x12bcf5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50dc8a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x537e66,_0x37b354={};if(_0x50dc8a['files']&&_0x50dc8a['files']['length']>0x0){const _0x2a0bef=new FormData();_0x2a0bef['append']('instructions',_0x50dc8a['instructions']);for(const _0x5962de of _0x50dc8a['files']){_0x2a0bef['append']('attachments',_0x5962de);}_0x537e66=_0x2a0bef;}else _0x37b354['Content-Type']='application/json',_0x537e66=JSON['stringify']({'instructions':_0x50dc8a['instructions']});const _0x9a48a0=await fetch(API_BASE+'/tasks/'+_0x12bcf5+'/follow-up',{'method':'POST','headers':_0x37b354,'body':_0x537e66});if(!_0x9a48a0['ok']){const _0x52a9f5=await _0x9a48a0['json']()['catch'](()=>({}));throw new Error(_0x52a9f5['error']||_0x52a9f5['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x9a48a0['statusText']);}return await _0x9a48a0['json']();},async 'getTaskRewindPoints'(_0x47aee8){if(!_0x47aee8)throw new Error('Task\x20ID\x20is\x20required');const _0x46a73b=await fetch(API_BASE+'/tasks/'+_0x47aee8+'/rewind-points');if(!_0x46a73b['ok']){const _0x4fd940=await _0x46a73b['json']()['catch'](()=>({}));throw new Error(_0x4fd940['error']||_0x4fd940['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x46a73b['statusText']);}return await _0x46a73b['json']();},async 'rewindTask'(_0x44bd4e,_0x3072de={}){if(!_0x44bd4e)throw new Error('Task\x20ID\x20is\x20required');const _0x24d05b=Number['isInteger'](_0x3072de['targetFollowUpCount'])?_0x3072de['targetFollowUpCount']:0x0,_0x252b2d={'targetFollowUpCount':_0x24d05b};typeof _0x3072de['instructions']==='string'&&_0x3072de['instructions']['trim']()&&(_0x252b2d['instructions']=_0x3072de['instructions']['trim']());typeof _0x3072de['rewindFiles']==='boolean'&&(_0x252b2d['rewindFiles']=_0x3072de['rewindFiles']);const _0x30f2ea=await fetch(API_BASE+'/tasks/'+_0x44bd4e+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x252b2d)});if(!_0x30f2ea['ok']){const _0x3151ce=await _0x30f2ea['json']()['catch'](()=>({}));throw new Error(_0x3151ce['error']||_0x3151ce['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x30f2ea['statusText']);}return await _0x30f2ea['json']();},async 'login'(_0x208c81,_0x2ef321){const _0x4edf0e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x208c81,'password':_0x2ef321})});if(!_0x4edf0e['ok']){const _0x2295b2=await _0x4edf0e['json']();throw new Error(_0x2295b2['message']||'Login\x20failed');}return await _0x4edf0e['json']();},async 'logout'(){const _0x5d3748=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5d3748['ok']){const _0x15dcd0=await _0x5d3748['json']();throw new Error(_0x15dcd0['message']||'Logout\x20failed');}return await _0x5d3748['json']();},async 'getCurrentUser'(){const _0x781d21=await fetch(API_BASE+'/auth/me');if(!_0x781d21['ok'])throw new Error('Not\x20authenticated');const _0x4683ff=await _0x781d21['json']();return _0x4683ff['user'];},async 'getRolesInfo'(){const _0x2edaf4=await fetch(API_BASE+'/users/roles');if(!_0x2edaf4['ok']){const _0x2415b0=await _0x2edaf4['json']();throw new Error(_0x2415b0['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2edaf4['json']();},async 'getUsers'(){const _0x1749fb=await fetch(API_BASE+'/users');if(!_0x1749fb['ok']){const _0x1dff47=await _0x1749fb['json']();throw new Error(_0x1dff47['message']||'Failed\x20to\x20get\x20users');}return await _0x1749fb['json']();},async 'getUser'(_0x4a73ba){const _0x8ce92e=await fetch(API_BASE+'/users/'+_0x4a73ba);if(!_0x8ce92e['ok']){const _0x475ebe=await _0x8ce92e['json']();throw new Error(_0x475ebe['message']||'Failed\x20to\x20get\x20user');}return await _0x8ce92e['json']();},async 'createUser'(_0x296328){const _0x4f6c48=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x296328)});if(!_0x4f6c48['ok']){const _0x3fc6cd=await _0x4f6c48['json']();throw new Error(_0x3fc6cd['message']||'Failed\x20to\x20create\x20user');}return await _0x4f6c48['json']();},async 'updateUser'(_0x441af6,_0x2d3acd){const _0x3e585b=await fetch(API_BASE+'/users/'+_0x441af6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d3acd)});if(!_0x3e585b['ok']){const _0x757987=await _0x3e585b['json']();throw new Error(_0x757987['message']||'Failed\x20to\x20update\x20user');}return await _0x3e585b['json']();},async 'deleteUser'(_0x393ea1){const _0x5054de=await fetch(API_BASE+'/users/'+_0x393ea1,{'method':'DELETE'});if(!_0x5054de['ok']){const _0x45cc2b=await _0x5054de['json']();throw new Error(_0x45cc2b['message']||'Failed\x20to\x20delete\x20user');}return await _0x5054de['json']();},async 'stopAllContainers'(){const _0x1e270b=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4cfbcf=await _0x1e270b['json']()['catch'](()=>({}));if(!_0x1e270b['ok'])throw new Error(_0x4cfbcf['message']||_0x4cfbcf['error']||'Failed\x20to\x20stop\x20containers');return _0x4cfbcf;},async 'removeStoppedContainers'(){const _0x1b7abe=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1387dd=await _0x1b7abe['json']()['catch'](()=>({}));if(!_0x1b7abe['ok'])throw new Error(_0x1387dd['message']||_0x1387dd['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1387dd;},async 'pruneDockerResources'(){const _0x1f8874=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x4b2ddd=await _0x1f8874['json']()['catch'](()=>({}));if(!_0x1f8874['ok'])throw new Error(_0x4b2ddd['message']||_0x4b2ddd['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x4b2ddd;},async 'createPasswordToken'(_0x30b9ae,_0x153fe8='setup',_0x17d1e7=![]){const _0x5f20a8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x30b9ae,'type':_0x153fe8,'sendEmail':_0x17d1e7})});if(!_0x5f20a8['ok']){const _0x53aea6=await _0x5f20a8['json']();throw new Error(_0x53aea6['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5f20a8['json']();},async 'getEmailConfig'(){const _0x5dfe1b=await fetch(API_BASE+'/password/email-config');if(!_0x5dfe1b['ok']){const _0x3a631e=await _0x5dfe1b['json']();throw new Error(_0x3a631e['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5dfe1b['json']();},async 'updateTaskName'(_0x39d3e3,_0x6492b0){const _0x30a1d9=await fetch(API_BASE+'/tasks/'+_0x39d3e3,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x6492b0})});if(!_0x30a1d9['ok']){const _0x1355e3=await _0x30a1d9['json']();throw new Error(_0x1355e3['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x30a1d9['json']();},async 'pinTask'(_0x528b5a,_0x2af4b8,_0x18b135=null){if(!_0x528b5a)throw new Error('Task\x20ID\x20is\x20required');const _0x4e344a={'pinned':_0x2af4b8};_0x18b135&&_0x18b135['length']>0x0&&(_0x4e344a['additionalTaskIds']=_0x18b135);const _0x142324=await fetch(API_BASE+'/tasks/'+_0x528b5a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e344a)});if(!_0x142324['ok']){const _0x3d1ca2=await _0x142324['json']();throw new Error(_0x3d1ca2['error']||'Failed\x20to\x20pin\x20task');}return await _0x142324['json']();},async 'setTaskWinner'(_0x591a3e,_0x83393e,_0x471f30=[]){if(!_0x591a3e)throw new Error('Task\x20ID\x20is\x20required');const _0x3c393a=await fetch(API_BASE+'/tasks/'+_0x591a3e+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x83393e,'siblings':_0x471f30})});if(!_0x3c393a['ok']){const _0x9a838d=await _0x3c393a['json']();throw new Error(_0x9a838d['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3c393a['json']();},async 'setTaskLoser'(_0x25276f,_0x9e79ed){if(!_0x25276f)throw new Error('Task\x20ID\x20is\x20required');const _0x16ba02=await fetch(API_BASE+'/tasks/'+_0x25276f+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x9e79ed})});if(!_0x16ba02['ok']){const _0x28a04e=await _0x16ba02['json']();throw new Error(_0x28a04e['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x16ba02['json']();},async 'createTaskGroup'(_0x7ef07c){const _0x71c4=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x7ef07c)});if(!_0x71c4['ok']){const _0x1ea09a=await _0x71c4['json']();throw new Error(_0x1ea09a['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x71c4['json']();},async 'getTaskGroups'(_0x5ca62e={}){const _0x349410=new URLSearchParams();if(_0x5ca62e['userId'])_0x349410['set']('userId',String(_0x5ca62e['userId']));if(_0x5ca62e['status'])_0x349410['set']('status',String(_0x5ca62e['status']));if(_0x5ca62e['limit'])_0x349410['set']('limit',String(_0x5ca62e['limit']));const _0x202e64=API_BASE+'/tasks/groups'+(_0x349410['toString']()?'?'+_0x349410['toString']():''),_0x4018aa=await fetch(_0x202e64);if(!_0x4018aa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4018aa['json']();},async 'getTaskGroup'(_0x5b3155){const _0x23e315=await fetch(API_BASE+'/tasks/groups/'+_0x5b3155);if(!_0x23e315['ok']){const _0x47ee29=await _0x23e315['json']();throw new Error(_0x47ee29['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x23e315['json']();},async 'updateTaskGroup'(_0x34ca32,_0x381499,_0x253111){const _0x3812a6=await fetch(API_BASE+'/tasks/'+_0x34ca32+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x381499,'groupIndex':_0x253111})});if(!_0x3812a6['ok']){const _0x20b2f9=await _0x3812a6['json']();throw new Error(_0x20b2f9['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3812a6['json']();},async 'removeTaskFromGroup'(_0x93409c){return this['updateTaskGroup'](_0x93409c,null,null);},async 'deleteTaskGroup'(_0x2776ed,_0x20670a=![]){const _0x52fc59=_0x20670a?'?deleteTasks=true':'',_0xa695cc=await fetch(API_BASE+'/tasks/groups/'+_0x2776ed+_0x52fc59,{'method':'DELETE'});if(!_0xa695cc['ok']){const _0x3a700c=await _0xa695cc['json']();throw new Error(_0x3a700c['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x409903,_0x3cc98e){const _0x2a3f5c=await fetch(API_BASE+'/tasks/groups/'+_0x409903+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3cc98e})});if(!_0x2a3f5c['ok']){const _0x4f13b4=await _0x2a3f5c['json']();throw new Error(_0x4f13b4['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x2a3f5c['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4f98a6){if(!_0x4f98a6)throw new Error('Task\x20ID\x20is\x20required');const _0x50782c=await fetch(API_BASE+'/tasks/'+_0x4f98a6+'/comments');if(!_0x50782c['ok']){const _0x23d420=await _0x50782c['json']()['catch'](()=>({}));throw new Error(_0x23d420['error']||'Failed\x20to\x20get\x20comments');}return await _0x50782c['json']();},async 'addComment'(_0x5e737c,_0xf40e6b){if(!_0x5e737c)throw new Error('Task\x20ID\x20is\x20required');if(!_0xf40e6b)throw new Error('Comment\x20content\x20is\x20required');const _0x4ace8d=await fetch(API_BASE+'/tasks/'+_0x5e737c+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xf40e6b})});if(!_0x4ace8d['ok']){const _0x42dff6=await _0x4ace8d['json']()['catch'](()=>({}));throw new Error(_0x42dff6['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ace8d['json']();},async 'updateComment'(_0xf6e90b,_0x38ed08,_0x371ce5){if(!_0xf6e90b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x38ed08)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x371ce5)throw new Error('Comment\x20content\x20is\x20required');const _0x5173f3=await fetch(API_BASE+'/tasks/'+_0xf6e90b+'/comments/'+_0x38ed08,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x371ce5})});if(!_0x5173f3['ok']){const _0x48d2a0=await _0x5173f3['json']()['catch'](()=>({}));throw new Error(_0x48d2a0['error']||'Failed\x20to\x20update\x20comment');}return await _0x5173f3['json']();},async 'deleteComment'(_0x288b95,_0x281e04){if(!_0x288b95)throw new Error('Task\x20ID\x20is\x20required');if(!_0x281e04)throw new Error('Comment\x20ID\x20is\x20required');const _0xf72d6b=await fetch(API_BASE+'/tasks/'+_0x288b95+'/comments/'+_0x281e04,{'method':'DELETE'});if(!_0xf72d6b['ok']){const _0x2266a7=await _0xf72d6b['json']()['catch'](()=>({}));throw new Error(_0x2266a7['error']||'Failed\x20to\x20delete\x20comment');}return await _0xf72d6b['json']();},async 'createObjective'(_0x9b5cf3){const _0x3f7650={'objective':!![],'name':_0x9b5cf3['name']||'','environment':_0x9b5cf3['environment']||null,'agents':_0x9b5cf3['agents']||[],'branches':_0x9b5cf3['branches']||{},'isPinned':_0x9b5cf3['isPinned']||![],'parentObjectiveId':_0x9b5cf3['parentObjectiveId']||null,'env_vars':_0x9b5cf3['envVars']||{},'parameters':{'instructions':_0x9b5cf3['instructions']||''},'files':_0x9b5cf3['files']||[],'jira':_0x9b5cf3['jira']||null};return this['createTask'](_0x3f7650);},async 'updateObjective'(_0x3c915a,_0x415b36,_0x5e688e=[],_0x47ad8f=[]){let _0x2ccbcb,_0x29ba56={};const _0x94fc40={..._0x415b36};_0x47ad8f&&_0x47ad8f['length']>0x0&&(_0x94fc40['removeAttachments']=_0x47ad8f);if(_0x5e688e&&_0x5e688e['length']>0x0){const _0x36d9a3=new FormData();for(const [_0x3f5be4,_0xa4ad9d]of Object['entries'](_0x94fc40)){if(_0xa4ad9d==null)continue;typeof _0xa4ad9d==='object'?_0x36d9a3['append'](_0x3f5be4,JSON['stringify'](_0xa4ad9d)):_0x36d9a3['append'](_0x3f5be4,String(_0xa4ad9d));}for(const _0x542b2a of _0x5e688e){_0x36d9a3['append']('attachments',_0x542b2a);}_0x2ccbcb=_0x36d9a3;}else _0x29ba56['Content-Type']='application/json',_0x2ccbcb=JSON['stringify'](_0x94fc40);const _0x285a78=await fetch(API_BASE+'/tasks/'+_0x3c915a,{'method':'PATCH','headers':_0x29ba56,'body':_0x2ccbcb});if(!_0x285a78['ok']){const _0x383580=await _0x285a78['json']();throw new Error(_0x383580['error']||'Failed\x20to\x20update\x20objective');}return await _0x285a78['json']();},async 'deleteObjective'(_0x1117fb){return this['deleteTask'](_0x1117fb);},async 'launchObjective'(_0x5420eb,_0x5095a5={}){const _0x5e434e=await fetch(API_BASE+'/tasks/'+_0x5420eb+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5095a5)});if(!_0x5e434e['ok']){const _0x5c08c5=await _0x5e434e['json']();throw new Error(_0x5c08c5['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5e434e['json']();},async 'getObjectiveAttachments'(_0x1c5692){return this['getTaskAttachments'](_0x1c5692);},async 'createJudgeTask'({environment:_0x3ab7e9,judgeAgent:_0x4df753,groupId:_0x24e1c1,taskIds:_0x29e22d,judgeCustomInstructions:_0x31102a,isPinned:_0x11107c}){const _0x30bc2d=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3ab7e9,'judgeAgent':_0x4df753,'groupId':_0x24e1c1,'taskIds':_0x29e22d,'judgeCustomInstructions':_0x31102a,'isPinned':_0x11107c})});if(!_0x30bc2d['ok']){const _0x3e5fe9=await _0x30bc2d['json']();throw new Error(_0x3e5fe9['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x30bc2d['json']();},async 'getJudgeTasks'(_0x5a08da){const _0x1330c0=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x5a08da));if(!_0x1330c0['ok']){const _0x3db137=await _0x1330c0['json']();throw new Error(_0x3db137['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1330c0['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x267b00,_0x6378de,_0x46ed3a=''){const _0x1edfab=await fetch(API_BASE+'/tasks/'+_0x267b00+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x6378de,'customPreamble':_0x46ed3a})});if(!_0x1edfab['ok']){const _0x1920c1=await _0x1edfab['json']();throw new Error(_0x1920c1['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1edfab['json']();},async 'getJiraConfig'(){const _0x439229=await fetch(API_BASE+'/jira/config');if(!_0x439229['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x439229['json']();},async 'getJiraIssue'(_0x2a79b3){const _0x33e046=await fetch(API_BASE+'/jira/issues/'+_0x2a79b3);if(!_0x33e046['ok']){const _0x3a1781=await _0x33e046['json']()['catch'](()=>({}));throw new Error(_0x3a1781['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x33e046['statusText']);}return await _0x33e046['json']();},async 'searchJiraIssues'(_0x3165fc,_0x9eed8a=0x14){const _0xe49486=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3165fc,'maxResults':_0x9eed8a})});if(!_0xe49486['ok']){const _0x124ffa=await _0xe49486['json']()['catch'](()=>({}));throw new Error(_0x124ffa['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xe49486['statusText']);}return await _0xe49486['json']();},async 'postJiraComment'(_0x15b39c,_0x41c748){const _0x551c24=await fetch(API_BASE+'/jira/issues/'+_0x15b39c+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x41c748})});if(!_0x551c24['ok']){const _0x4def96=await _0x551c24['json']()['catch'](()=>({}));throw new Error(_0x4def96['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x551c24['statusText']);}return await _0x551c24['json']();},async 'getJiraComments'(_0x1b0035){const _0x63ca9=await fetch(API_BASE+'/jira/issues/'+_0x1b0035+'/comments');if(!_0x63ca9['ok']){const _0x36bf44=await _0x63ca9['json']()['catch'](()=>({}));throw new Error(_0x36bf44['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x63ca9['statusText']);}return await _0x63ca9['json']();},async 'promptParameter'({environment:_0x1d0776,command:_0x2b3fea,parser:parser='json'}){const _0x128beb=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1d0776,'command':_0x2b3fea,'parser':parser})});if(!_0x128beb['ok']){const _0xb7fc75=await _0x128beb['json']()['catch'](()=>({}));throw new Error(_0xb7fc75['message']||_0xb7fc75['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x128beb['statusText']);}return await _0x128beb['json']();},async 'promptParameterStream'(_0x19c513,_0x117e1c){const _0x19f05a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19c513)});if(!_0x19f05a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x19f05a['statusText']);const _0x38e7a4=_0x19f05a['body']['getReader'](),_0x3efa00=new TextDecoder();let _0x5869e8='';return new Promise((_0x36c129,_0x4d2cf6)=>{const _0x393eda=async()=>{try{const {done:_0x15eb77,value:_0x17e9bc}=await _0x38e7a4['read']();if(_0x15eb77)return;_0x5869e8+=_0x3efa00['decode'](_0x17e9bc,{'stream':!![]});const _0x490734=_0x5869e8['split']('\x0a\x0a');_0x5869e8=_0x490734['pop']()||'';for(const _0x1bf0cc of _0x490734){if(!_0x1bf0cc['trim']())continue;const _0x1700d9=_0x1bf0cc['split']('\x0a');let _0xd6f3a8='message',_0x496ce7='';for(const _0x10c3fc of _0x1700d9){if(_0x10c3fc['startsWith']('event:'))_0xd6f3a8=_0x10c3fc['substring'](0x6)['trim']();else _0x10c3fc['startsWith']('data:')&&(_0x496ce7=_0x10c3fc['substring'](0x5)['trim']());}if(!_0x496ce7)continue;try{const _0x1fe399=JSON['parse'](_0x496ce7);if(_0xd6f3a8==='progress'&&_0x117e1c)_0x117e1c(_0x1fe399['stage'],_0x1fe399['message']);else{if(_0xd6f3a8==='result'){_0x36c129(_0x1fe399);return;}else{if(_0xd6f3a8==='error'){let _0x3fef84=_0x1fe399['message']||_0x1fe399['error']||'Prompt\x20command\x20failed';_0x1fe399['rawOutput']&&(_0x3fef84+='\x0a\x0aRaw\x20output:\x0a'+_0x1fe399['rawOutput']);_0x4d2cf6(new Error(_0x3fef84));return;}}}}catch(_0x1e2536){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1e2536),console['error']('Event\x20type:',_0xd6f3a8),console['error']('Event\x20data:',_0x496ce7),console['error']('First\x20200\x20chars:',_0x496ce7['substring'](0x0,0xc8)),_0x4d2cf6(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1e2536['message']+'\x0a\x0aData:\x20'+_0x496ce7['substring'](0x0,0x1f4)));return;}}_0x393eda();}catch(_0x17ddc3){_0x4d2cf6(_0x17ddc3);}};_0x393eda();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x23ab66){const _0x5127d=await fetch(''+API_BASE+_0x23ab66);if(!_0x5127d['ok']){const _0x58f971=await _0x5127d['json']()['catch'](()=>({'error':_0x5127d['statusText']})),_0x2d14b4=new Error(_0x58f971['error']||_0x58f971['message']||_0x5127d['statusText']);if(_0x58f971['detail']!==undefined)_0x2d14b4['detail']=_0x58f971['detail'];throw _0x2d14b4;}return await _0x5127d['json']();},async 'post'(_0x363b21,_0x572b0d){const _0x167932=await fetch(''+API_BASE+_0x363b21,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572b0d)});if(!_0x167932['ok']){const _0x18a7c6=await _0x167932['json']()['catch'](()=>({'error':_0x167932['statusText']})),_0xf4c2ed=new Error(_0x18a7c6['error']||_0x18a7c6['message']||_0x167932['statusText']);if(_0x18a7c6['detail']!==undefined)_0xf4c2ed['detail']=_0x18a7c6['detail'];throw _0xf4c2ed;}return await _0x167932['json']();},async 'put'(_0x4265b2,_0x2b4c50){const _0x340839=await fetch(''+API_BASE+_0x4265b2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b4c50)});if(!_0x340839['ok']){const _0x56726d=await _0x340839['json']()['catch'](()=>({'error':_0x340839['statusText']})),_0x535f55=new Error(_0x56726d['error']||_0x56726d['message']||_0x340839['statusText']);if(_0x56726d['detail']!==undefined)_0x535f55['detail']=_0x56726d['detail'];throw _0x535f55;}return await _0x340839['json']();},async 'delete'(_0x2bf7ae,_0x2faf1c){const _0x32a908={'method':'DELETE'};_0x2faf1c&&(_0x32a908['headers']={'Content-Type':'application/json'},_0x32a908['body']=JSON['stringify'](_0x2faf1c));const _0x1a0e44=await fetch(''+API_BASE+_0x2bf7ae,_0x32a908);if(!_0x1a0e44['ok']){const _0x3c0af1=await _0x1a0e44['json']()['catch'](()=>({'error':_0x1a0e44['statusText']})),_0x4105af=new Error(_0x3c0af1['error']||_0x3c0af1['message']||_0x1a0e44['statusText']);if(_0x3c0af1['detail']!==undefined)_0x4105af['detail']=_0x3c0af1['detail'];throw _0x4105af;}return await _0x1a0e44['json']();},async 'getSkills'(){const _0x2b0da5=await fetch(API_BASE+'/skills');if(!_0x2b0da5['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2b0da5['statusText']);return await _0x2b0da5['json']();},async 'getSkill'(_0x2133e9){const _0xb214e9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2133e9));if(!_0xb214e9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0xb214e9['statusText']);return await _0xb214e9['json']();},async 'createSkill'(_0x4f5e67){const _0xa543f4=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f5e67)});if(!_0xa543f4['ok']){const _0x472dfd=await _0xa543f4['json']()['catch'](()=>({'error':_0xa543f4['statusText']})),_0x20fec2=new Error(_0x472dfd['error']||_0x472dfd['message']||_0xa543f4['statusText']);if(_0x472dfd['detail']!==undefined)_0x20fec2['detail']=_0x472dfd['detail'];throw _0x20fec2;}return await _0xa543f4['json']();},async 'updateSkill'(_0x40bfc1,_0x512214){const _0x3b7eee=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x40bfc1),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x512214)});if(!_0x3b7eee['ok']){const _0x30a0ae=await _0x3b7eee['json']()['catch'](()=>({'error':_0x3b7eee['statusText']})),_0x2bb6ea=new Error(_0x30a0ae['error']||_0x30a0ae['message']||_0x3b7eee['statusText']);if(_0x30a0ae['detail']!==undefined)_0x2bb6ea['detail']=_0x30a0ae['detail'];throw _0x2bb6ea;}return await _0x3b7eee['json']();},async 'deleteSkill'(_0x5788f3){const _0x1c988a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5788f3),{'method':'DELETE'});if(!_0x1c988a['ok']){const _0x9835d=await _0x1c988a['json']()['catch'](()=>({'error':_0x1c988a['statusText']})),_0x5b72d0=new Error(_0x9835d['error']||_0x9835d['message']||_0x1c988a['statusText']);if(_0x9835d['detail']!==undefined)_0x5b72d0['detail']=_0x9835d['detail'];throw _0x5b72d0;}return await _0x1c988a['json']();},async 'getSkillFile'(_0x36676f,_0x1146bc){const _0x4b9421=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36676f)+'/files/'+_0x1146bc);if(!_0x4b9421['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x4b9421['statusText']);return await _0x4b9421['json']();},async 'saveSkillFile'(_0x1496e9,_0x51ccf7,_0x23e357){const _0x294a62=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1496e9)+'/files/'+_0x51ccf7,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x23e357})});if(!_0x294a62['ok']){const _0x43bacc=await _0x294a62['json']()['catch'](()=>({'error':_0x294a62['statusText']})),_0x3ffd20=new Error(_0x43bacc['error']||_0x43bacc['message']||_0x294a62['statusText']);if(_0x43bacc['detail']!==undefined)_0x3ffd20['detail']=_0x43bacc['detail'];throw _0x3ffd20;}return await _0x294a62['json']();},async 'deleteSkillFile'(_0x335213,_0x2d4566){const _0x544746=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x335213)+'/files/'+_0x2d4566,{'method':'DELETE'});if(!_0x544746['ok']){const _0xa55178=await _0x544746['json']()['catch'](()=>({'error':_0x544746['statusText']})),_0x1b45aa=new Error(_0xa55178['error']||_0xa55178['message']||_0x544746['statusText']);if(_0xa55178['detail']!==undefined)_0x1b45aa['detail']=_0xa55178['detail'];throw _0x1b45aa;}return await _0x544746['json']();},async 'pullSkills'(){const _0x590b0d=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x590b0d['ok']){const _0x198bed=await _0x590b0d['json']()['catch'](()=>({'error':_0x590b0d['statusText']})),_0xe92507=new Error(_0x198bed['error']||_0x198bed['message']||_0x590b0d['statusText']);if(_0x198bed['detail']!==undefined)_0xe92507['detail']=_0x198bed['detail'];throw _0xe92507;}return await _0x590b0d['json']();},async 'commitSkills'(_0x5f236f,_0x447de2={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x447de2,_0x35b3b5=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5f236f,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x35b3b5['ok']){const _0x1751e3=await _0x35b3b5['json']()['catch'](()=>({'error':_0x35b3b5['statusText']})),_0x591178=new Error(_0x1751e3['error']||_0x1751e3['message']||_0x35b3b5['statusText']);if(_0x1751e3['detail']!==undefined)_0x591178['detail']=_0x1751e3['detail'];throw _0x591178;}return await _0x35b3b5['json']();},async 'discardSkillsChanges'(){const _0x5d4af4=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x5d4af4['ok']){const _0x1eabb2=await _0x5d4af4['json']()['catch'](()=>({'error':_0x5d4af4['statusText']})),_0x3f0edf=new Error(_0x1eabb2['error']||_0x1eabb2['message']||_0x5d4af4['statusText']);if(_0x1eabb2['detail']!==undefined)_0x3f0edf['detail']=_0x1eabb2['detail'];throw _0x3f0edf;}return await _0x5d4af4['json']();},async 'getSkillCatalog'(){const _0xcd954a=await fetch(API_BASE+'/external-skills/catalog');if(!_0xcd954a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xcd954a['statusText']);return await _0xcd954a['json']();},async 'getImportedSkillsRegistry'(){const _0x490de7=await fetch(API_BASE+'/external-skills/registry');if(!_0x490de7['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x490de7['statusText']);return await _0x490de7['json']();},async 'importCatalogSkill'(_0x2d862e){const _0x404f0e=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2d862e})});if(!_0x404f0e['ok']){const _0xb9f18e=await _0x404f0e['json']()['catch'](()=>({'error':_0x404f0e['statusText']})),_0x1f05e2=new Error(_0xb9f18e['error']||_0xb9f18e['message']||_0x404f0e['statusText']);if(_0xb9f18e['detail']!==undefined)_0x1f05e2['detail']=_0xb9f18e['detail'];throw _0x1f05e2;}return await _0x404f0e['json']();},async 'importSkillFromGit'(_0x29e318,_0x4dbda1,_0x2ad9a0='main',_0x370589=null){const _0x43a878=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x29e318,'skillPath':_0x4dbda1,'branch':_0x2ad9a0,'skillId':_0x370589})});if(!_0x43a878['ok']){const _0x28930b=await _0x43a878['json']()['catch'](()=>({'error':_0x43a878['statusText']})),_0x5374ed=new Error(_0x28930b['error']||_0x28930b['message']||_0x43a878['statusText']);if(_0x28930b['detail']!==undefined)_0x5374ed['detail']=_0x28930b['detail'];throw _0x5374ed;}return await _0x43a878['json']();},async 'probeMarketplace'(_0x18fa72,_0x54ada3='main'){const _0xe839e5=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x18fa72,'branch':_0x54ada3})});if(!_0xe839e5['ok']){const _0x38e5ac=await _0xe839e5['json']()['catch'](()=>({'error':_0xe839e5['statusText']})),_0x4b4a97=new Error(_0x38e5ac['error']||_0x38e5ac['message']||_0xe839e5['statusText']);if(_0x38e5ac['detail']!==undefined)_0x4b4a97['detail']=_0x38e5ac['detail'];throw _0x4b4a97;}return await _0xe839e5['json']();},async 'importMarketplaceBundle'(_0x399df5,_0x5d6b31,_0x5ecb31,_0x6e231d=null){const _0x5616b3=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x399df5,'branch':_0x5d6b31,'bundleId':_0x5ecb31,'selectedSkills':_0x6e231d})});if(!_0x5616b3['ok']){const _0x20cf28=await _0x5616b3['json']()['catch'](()=>({'error':_0x5616b3['statusText']})),_0x528a00=new Error(_0x20cf28['error']||_0x20cf28['message']||_0x5616b3['statusText']);if(_0x20cf28['detail']!==undefined)_0x528a00['detail']=_0x20cf28['detail'];throw _0x528a00;}return await _0x5616b3['json']();},async 'importSkillFromFolder'(_0x4f44b7,_0x3efad1=null){const _0x3386c4=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4f44b7,'skillId':_0x3efad1})});if(!_0x3386c4['ok']){const _0x3a1824=await _0x3386c4['json']()['catch'](()=>({'error':_0x3386c4['statusText']})),_0x5c137b=new Error(_0x3a1824['error']||_0x3a1824['message']||_0x3386c4['statusText']);if(_0x3a1824['detail']!==undefined)_0x5c137b['detail']=_0x3a1824['detail'];throw _0x5c137b;}return await _0x3386c4['json']();},async 'importSkillFromNpm'(_0x131360,_0x1029ec='latest',_0xe0447b=null,_0x47bd10=null){const _0x33e41b=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x131360,'version':_0x1029ec,'skillId':_0xe0447b,'registry':_0x47bd10})});if(!_0x33e41b['ok']){const _0xfcfff=await _0x33e41b['json']()['catch'](()=>({'error':_0x33e41b['statusText']})),_0x491fa3=new Error(_0xfcfff['error']||_0xfcfff['message']||_0x33e41b['statusText']);if(_0xfcfff['detail']!==undefined)_0x491fa3['detail']=_0xfcfff['detail'];throw _0x491fa3;}return await _0x33e41b['json']();},async 'checkSkillUpdates'(_0x28699e){const _0xf3e12c=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x28699e)+'/check-updates',{'method':'POST'});if(!_0xf3e12c['ok']){const _0x3d2f93=await _0xf3e12c['json']()['catch'](()=>({'error':_0xf3e12c['statusText']})),_0x461c1e=new Error(_0x3d2f93['error']||_0x3d2f93['message']||_0xf3e12c['statusText']);if(_0x3d2f93['detail']!==undefined)_0x461c1e['detail']=_0x3d2f93['detail'];throw _0x461c1e;}return await _0xf3e12c['json']();},async 'updateExternalSkill'(_0x1866b8){const _0x3aee85=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1866b8)+'/update',{'method':'POST'});if(!_0x3aee85['ok']){const _0x53fb41=await _0x3aee85['json']()['catch'](()=>({'error':_0x3aee85['statusText']})),_0x4a3bfc=new Error(_0x53fb41['error']||_0x53fb41['message']||_0x3aee85['statusText']);if(_0x53fb41['detail']!==undefined)_0x4a3bfc['detail']=_0x53fb41['detail'];throw _0x4a3bfc;}return await _0x3aee85['json']();},async 'updateSkillFlags'(_0x27c7ef,_0x1f8ed0){const _0x55de9b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x27c7ef)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x1f8ed0})});if(!_0x55de9b['ok']){const _0x3d6b25=await _0x55de9b['json']()['catch'](()=>({'error':_0x55de9b['statusText']})),_0x125e84=new Error(_0x3d6b25['error']||_0x3d6b25['message']||_0x55de9b['statusText']);if(_0x3d6b25['detail']!==undefined)_0x125e84['detail']=_0x3d6b25['detail'];throw _0x125e84;}return await _0x55de9b['json']();},async 'removeFromImportedRegistry'(_0x1c8b82){const _0x581684=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1c8b82)+'/registry',{'method':'DELETE'});if(!_0x581684['ok']){const _0x57561f=await _0x581684['json']()['catch'](()=>({'error':_0x581684['statusText']})),_0x2b6445=new Error(_0x57561f['error']||_0x57561f['message']||_0x581684['statusText']);if(_0x57561f['detail']!==undefined)_0x2b6445['detail']=_0x57561f['detail'];throw _0x2b6445;}return await _0x581684['json']();},async 'getTeams'(){const _0x1cf9e8=await fetch(API_BASE+'/teams');if(!_0x1cf9e8['ok']){const _0x49e3a0=await _0x1cf9e8['json']()['catch'](()=>({'message':_0x1cf9e8['statusText']}));throw new Error(_0x49e3a0['message']||'Failed\x20to\x20get\x20teams');}return await _0x1cf9e8['json']();},async 'getTeam'(_0x4497f2){const _0x29a446=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4497f2));if(!_0x29a446['ok']){const _0x3cf20f=await _0x29a446['json']()['catch'](()=>({'message':_0x29a446['statusText']}));throw new Error(_0x3cf20f['message']||'Failed\x20to\x20get\x20team');}return await _0x29a446['json']();},async 'createTeam'(_0x163db6){const _0x33bc89=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x163db6)});if(!_0x33bc89['ok']){const _0x56190c=await _0x33bc89['json']()['catch'](()=>({'message':_0x33bc89['statusText']}));throw new Error(_0x56190c['message']||'Failed\x20to\x20create\x20team');}return await _0x33bc89['json']();},async 'updateTeam'(_0x114aae,_0x478247){const _0x4fcd3e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x114aae),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x478247)});if(!_0x4fcd3e['ok']){const _0x3d2090=await _0x4fcd3e['json']()['catch'](()=>({'message':_0x4fcd3e['statusText']}));throw new Error(_0x3d2090['message']||'Failed\x20to\x20update\x20team');}return await _0x4fcd3e['json']();},async 'deleteTeam'(_0x11be3d){const _0x337a38=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11be3d),{'method':'DELETE'});if(!_0x337a38['ok']){const _0x5af727=await _0x337a38['json']()['catch'](()=>({'message':_0x337a38['statusText']}));throw new Error(_0x5af727['message']||'Failed\x20to\x20delete\x20team');}return await _0x337a38['json']();},async 'addTeamMember'(_0x11d1a4,_0x5a956e){const _0x2e7e2f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11d1a4)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5a956e})});if(!_0x2e7e2f['ok']){const _0x3da20e=await _0x2e7e2f['json']()['catch'](()=>({'message':_0x2e7e2f['statusText']}));throw new Error(_0x3da20e['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2e7e2f['json']();},async 'removeTeamMember'(_0x25623e,_0x12914a){const _0x44b377=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x25623e)+'/members/'+encodeURIComponent(_0x12914a),{'method':'DELETE'});if(!_0x44b377['ok']){const _0xe8ddb8=await _0x44b377['json']()['catch'](()=>({'message':_0x44b377['statusText']}));throw new Error(_0xe8ddb8['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x44b377['json']();},async 'getBindings'(_0x52ec33={}){const _0x370d36=new URLSearchParams();if(_0x52ec33['resource_type'])_0x370d36['set']('resource_type',_0x52ec33['resource_type']);if(_0x52ec33['resource_id'])_0x370d36['set']('resource_id',_0x52ec33['resource_id']);if(_0x52ec33['subject_type'])_0x370d36['set']('subject_type',_0x52ec33['subject_type']);if(_0x52ec33['subject_id'])_0x370d36['set']('subject_id',_0x52ec33['subject_id']);const _0x1d513d=_0x370d36['toString'](),_0x3c59fd=await fetch(API_BASE+'/bindings'+(_0x1d513d?'?'+_0x1d513d:''));if(!_0x3c59fd['ok']){const _0x2a391f=await _0x3c59fd['json']()['catch'](()=>({'message':_0x3c59fd['statusText']}));throw new Error(_0x2a391f['message']||'Failed\x20to\x20get\x20bindings');}return await _0x3c59fd['json']();},async 'createBinding'(_0x36b182){const _0x49f9e2=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36b182)});if(!_0x49f9e2['ok']){const _0x3fdffb=await _0x49f9e2['json']()['catch'](()=>({'message':_0x49f9e2['statusText']}));throw new Error(_0x3fdffb['message']||'Failed\x20to\x20create\x20binding');}return await _0x49f9e2['json']();},async 'updateBinding'(_0x9a2f71,_0x1b6882){const _0x445990=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x9a2f71),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b6882)});if(!_0x445990['ok']){const _0x2c0c31=await _0x445990['json']()['catch'](()=>({'message':_0x445990['statusText']}));throw new Error(_0x2c0c31['message']||'Failed\x20to\x20update\x20binding');}return await _0x445990['json']();},async 'deleteBinding'(_0x4adc81){const _0x46b800=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4adc81),{'method':'DELETE'});if(!_0x46b800['ok']){const _0x596200=await _0x46b800['json']()['catch'](()=>({'message':_0x46b800['statusText']}));throw new Error(_0x596200['message']||'Failed\x20to\x20delete\x20binding');}return await _0x46b800['json']();},async 'getRoleDefinitions'(){const _0x420bdf=await fetch(API_BASE+'/roles');if(!_0x420bdf['ok']){const _0xed8c9f=await _0x420bdf['json']()['catch'](()=>({'message':_0x420bdf['statusText']}));throw new Error(_0xed8c9f['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x420bdf['json']();},async 'getRoleDefinition'(_0x35d35b){const _0x505665=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x35d35b));if(!_0x505665['ok']){const _0xb6e032=await _0x505665['json']()['catch'](()=>({'message':_0x505665['statusText']}));throw new Error(_0xb6e032['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x505665['json']();},async 'createRoleDefinition'(_0x177f43){const _0x1b4da9=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x177f43)});if(!_0x1b4da9['ok']){const _0x29d9a2=await _0x1b4da9['json']()['catch'](()=>({'message':_0x1b4da9['statusText']}));throw new Error(_0x29d9a2['message']||_0x29d9a2['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1b4da9['json']();},async 'updateRoleDefinition'(_0xf04102,_0xc0d15f){const _0x4c0815=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xf04102),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc0d15f)});if(!_0x4c0815['ok']){const _0x53f9ba=await _0x4c0815['json']()['catch'](()=>({'message':_0x4c0815['statusText']}));throw new Error(_0x53f9ba['message']||_0x53f9ba['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4c0815['json']();},async 'deleteRoleDefinition'(_0x10d314){const _0x267069=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x10d314),{'method':'DELETE'});if(!_0x267069['ok']){const _0x3ef317=await _0x267069['json']()['catch'](()=>({'message':_0x267069['statusText']}));throw new Error(_0x3ef317['message']||_0x3ef317['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x267069['json']();},async 'getAvailablePermissions'(){const _0x339c7c=await fetch(API_BASE+'/roles/available-permissions');if(!_0x339c7c['ok']){const _0x1c2bfb=await _0x339c7c['json']()['catch'](()=>({'message':_0x339c7c['statusText']}));throw new Error(_0x1c2bfb['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x339c7c['json']();},async 'getGitProviderAllowedTeams'(_0x192f8d){const _0x422ec5=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x192f8d)+'/allowed-teams');if(!_0x422ec5['ok']){const _0x40785b=await _0x422ec5['json']()['catch'](()=>({'message':_0x422ec5['statusText']}));throw new Error(_0x40785b['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x422ec5['json']();},async 'setGitProviderAllowedTeams'(_0xa2c8c9,_0x97ccba){const _0x541e52=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xa2c8c9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x97ccba})});if(!_0x541e52['ok']){const _0x83cdf6=await _0x541e52['json']()['catch'](()=>({'message':_0x541e52['statusText']}));throw new Error(_0x83cdf6['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x541e52['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 _0x533c1e=toastState['baseBottom'];toastState['toasts']['forEach'](_0x5c04c6=>{_0x5c04c6['el']['style']['bottom']=_0x533c1e+'px';const _0x44c449=_0x5c04c6['el']['offsetHeight']||toastState['defaultHeight'];_0x533c1e+=_0x44c449+toastState['gap'];});});}function removeToastById(_0x4c0e30){const _0x41b28f=toastState['toasts']['findIndex'](_0x504114=>_0x504114['id']===_0x4c0e30);if(_0x41b28f===-0x1)return;const _0x49cc8c=toastState['toasts'][_0x41b28f];if(_0x49cc8c['timeoutId'])clearTimeout(_0x49cc8c['timeoutId']);_0x49cc8c['el']['classList']['remove']('show'),setTimeout(()=>_0x49cc8c['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x41b28f,0x1),repositionAllToasts();}function registerToast(_0x5e1ba7){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x5e1ba7),repositionAllToasts(),_0x5e1ba7['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(_0x25336e){if(_0x25336e===null||_0x25336e===undefined)return'';return String(_0x25336e)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x250e08,_0x175ae7){if(_0x250e08&&typeof _0x250e08==='object'&&!Array['isArray'](_0x250e08))return{'code':typeof _0x250e08['text']==='string'?_0x250e08['text']:'','language':typeof _0x250e08['lang']==='string'?_0x250e08['lang']:''};return{'code':typeof _0x250e08==='string'?_0x250e08:'','language':typeof _0x175ae7==='string'?_0x175ae7:''};}function buildMermaidBlock(_0x548e0f){const _0x329e0a=String(_0x548e0f||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x329e0a))+'\x22>'+escapeHtmlValue(_0x329e0a)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x269521=new marked['Renderer'](),_0x8701b8=_0x269521['code']['bind'](_0x269521);return _0x269521['code']=function(_0x3b4294,_0x20da73,..._0x3a4941){const {code:_0x59a1bc,language:_0x5af143}=getMarkdownCodeBlockPayload(_0x3b4294,_0x20da73),_0x256217=String(_0x5af143||'')['trim']()['toLowerCase']();if(_0x256217==='mermaid')return buildMermaidBlock(_0x59a1bc);const _0x97a5b5=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x97a5b5&&_0x256217)try{const _0x128b25=_0x97a5b5['getLanguage'](_0x256217)?_0x256217:'plaintext',_0x1cafcf=_0x97a5b5['highlight'](_0x59a1bc,{'language':_0x128b25})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x256217)+'\x22>'+_0x1cafcf+'</code></pre>';}catch(_0x4a29dc){console['error']('Syntax\x20highlighting\x20error:',_0x4a29dc);}return _0x8701b8(_0x3b4294,_0x20da73,..._0x3a4941);},sharedMarkedRenderer=_0x269521,_0x269521;}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 _0x4c4a76=window['mermaid'];if(!_0x4c4a76||typeof _0x4c4a76['initialize']!=='function')return _0x4c4a76||null;return _0x4c4a76['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4c4a76;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4b0cab,_0x168040)=>{const _0x230cea=()=>_0x4b0cab(configureMermaidInstance()),_0x23370c=()=>{mermaidLoadPromise=null,_0x168040(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x33e2e3=document['getElementById'](MERMAID_SCRIPT_ID);!_0x33e2e3&&(_0x33e2e3=document['createElement']('script'),_0x33e2e3['id']=MERMAID_SCRIPT_ID,_0x33e2e3['src']=MERMAID_SCRIPT_SRC,_0x33e2e3['async']=!![],document['head']['appendChild'](_0x33e2e3));if(window['mermaid']){_0x230cea();return;}_0x33e2e3['addEventListener']('load',_0x230cea,{'once':!![]}),_0x33e2e3['addEventListener']('error',_0x23370c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4bffee){const _0x5bd946=_0x4bffee['getAttribute']('data-mermaid-source');if(!_0x5bd946)return null;let _0x149f4f=_0x5bd946;try{_0x149f4f=decodeURIComponent(_0x5bd946);}catch{}return _0x4bffee['textContent']=_0x149f4f,_0x4bffee['removeAttribute']('data-processed'),_0x4bffee['removeAttribute']('aria-roledescription'),_0x4bffee['removeAttribute']('role'),_0x4bffee['removeAttribute']('aria-label'),_0x149f4f;}function collectMermaidNodes(_0x4f4a38,_0x42b275){if(!(_0x4f4a38 instanceof Element))return;_0x4f4a38['matches']('.mermaid[data-mermaid-source]')&&_0x42b275['add'](_0x4f4a38),_0x4f4a38['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3a163d=>{_0x42b275['add'](_0x3a163d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x385728=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xdebb6c=>setTimeout(_0xdebb6c,0x0);_0x385728(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x780ea4=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x780ea4);});});}function queueMermaidRender(_0x28123f){const _0x20bb7b=new Set();_0x28123f instanceof Document||_0x28123f instanceof DocumentFragment?_0x28123f['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x36c9fd=>_0x20bb7b['add'](_0x36c9fd)):collectMermaidNodes(_0x28123f,_0x20bb7b);if(_0x20bb7b['size']===0x0)return;_0x20bb7b['forEach'](_0x15b0f5=>pendingMermaidNodes['add'](_0x15b0f5)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x39a496=Array['from'](pendingMermaidNodes)['filter'](_0x322b03=>_0x322b03['isConnected']);pendingMermaidNodes['clear']();if(_0x39a496['length']===0x0)return;const _0xf896da=await loadMermaid();if(!_0xf896da)return;configureMermaidInstance();const _0x533877=getMermaidTheme();for(const _0x40bafd of _0x39a496){const _0x404f9b=_0x40bafd['getAttribute']('data-mermaid-source');if(!_0x404f9b)continue;const _0x8d2ffc=_0x40bafd['getAttribute']('data-processed')==='true';if(_0x8d2ffc&&_0x40bafd['dataset']['mermaidTheme']===_0x533877)continue;restoreMermaidSource(_0x40bafd);try{if(typeof _0xf896da['run']==='function')await _0xf896da['run']({'nodes':[_0x40bafd]});else typeof _0xf896da['init']==='function'&&_0xf896da['init'](undefined,[_0x40bafd]);_0x40bafd['dataset']['mermaidTheme']=_0x533877,delete _0x40bafd['dataset']['mermaidError'];}catch(_0x149775){console['error']('Mermaid\x20render\x20failed:',_0x149775),restoreMermaidSource(_0x40bafd),_0x40bafd['dataset']['mermaidError']='true',delete _0x40bafd['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x8ba1e6=>{_0x8ba1e6['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x8ba1e6);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2bbf36=>{_0x2bbf36['forEach'](_0x1b29eb=>{_0x1b29eb['addedNodes']['forEach'](_0x1511e1=>{_0x1511e1['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x1511e1);});});}),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'(_0x35ce36){const _0x3494cd=new Date(_0x35ce36),_0x880b71=new Date(),_0x337e29=_0x880b71-_0x3494cd,_0x20adb5=Math['floor'](_0x337e29/0x3e8),_0x345a16=Math['floor'](_0x20adb5/0x3c),_0xbe618=Math['floor'](_0x345a16/0x3c),_0x2d47b9=Math['floor'](_0xbe618/0x18);if(_0x20adb5<0x3c)return'now';if(_0x345a16<0x3c)return _0x345a16+'m\x20ago';if(_0xbe618<0x18)return _0xbe618+'h\x20ago';return _0x2d47b9+'d\x20ago';},'getStatusIcon'(_0x4d169c){switch(_0x4d169c){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x1ebda3){switch(_0x1ebda3){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'(_0x2d6d6e,_0x319479=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x27cfbe={};_0x27cfbe['text/plain']=new Blob([_0x2d6d6e],{'type':'text/plain'});_0x319479&&(_0x27cfbe['text/html']=new Blob([_0x319479],{'type':'text/html'}));const _0x1fd635=new ClipboardItem(_0x27cfbe);return await navigator['clipboard']['write']([_0x1fd635]),!![];}catch(_0x5add2c){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5add2c);}try{const _0x3e26f5=_0x17f5a2=>{_0x17f5a2['preventDefault'](),_0x17f5a2['clipboardData']['setData']('text/plain',_0x2d6d6e),_0x319479&&_0x17f5a2['clipboardData']['setData']('text/html',_0x319479);};document['addEventListener']('copy',_0x3e26f5);const _0x1123d9=document['execCommand']('copy');document['removeEventListener']('copy',_0x3e26f5);if(_0x1123d9)return!![];}catch(_0x1f7dd3){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1f7dd3);}try{const _0x158c48=document['createElement']('textarea');_0x158c48['value']=_0x2d6d6e,_0x158c48['style']['position']='fixed',_0x158c48['style']['opacity']='0',_0x158c48['style']['pointerEvents']='none',document['body']['appendChild'](_0x158c48),_0x158c48['select']();const _0x1e8aa0=document['execCommand']('copy');return document['body']['removeChild'](_0x158c48),_0x1e8aa0;}catch(_0x4b86a6){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4b86a6),![];}},'showToast'(_0x37e333,_0x59e5f3='info'){const _0x1f0d7c=getNextToastId(),_0x48daac=document['createElement']('div');_0x48daac['className']='toast\x20toast-'+_0x59e5f3,_0x48daac['textContent']=_0x37e333,_0x48daac['dataset']['toastId']=_0x1f0d7c,document['body']['appendChild'](_0x48daac);const _0x358122=_0x59e5f3==='error'?0x2710:0xbb8,_0xdc23c7=setTimeout(()=>{removeToastById(_0x1f0d7c);},_0x358122),_0x29726c={'id':_0x1f0d7c,'el':_0x48daac,'timeoutId':_0xdc23c7};return registerToast(_0x29726c),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x48daac['classList']['add']('show');});}),_0x1f0d7c;},'showError'(_0x4b5802){console['error'](_0x4b5802);const _0x263beb=typeof _0x4b5802==='string'?_0x4b5802:_0x4b5802['message']||'An\x20error\x20occurred';this['showToast'](_0x263beb,'error');},'showSuccess'(_0x42a943){this['showToast'](_0x42a943,'success');},'capitalize'(_0x2750cd){if(!_0x2750cd)return'';return _0x2750cd['charAt'](0x0)['toUpperCase']()+_0x2750cd['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2c8e59){return escapeHtmlValue(_0x2c8e59);},'ansiToHtml'(_0x256997){if(_0x256997===null||_0x256997===undefined)return'';let _0x38ee2b=this['escapeHtml'](_0x256997);const _0x285143={'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'},_0x433649={'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 _0x54c619=0x0;return _0x38ee2b=_0x38ee2b['replace'](/\x1b\[([0-9;]*)m/g,(_0x4e4b5a,_0x3fff24)=>{if(!_0x3fff24||_0x3fff24==='0'){const _0x21f847='</span>'['repeat'](_0x54c619);return _0x54c619=0x0,_0x21f847;}const _0x7fa0ea=_0x3fff24['split'](';'),_0x1636dc=[];for(const _0x143985 of _0x7fa0ea){if(_0x143985==='1')_0x1636dc['push']('font-weight:bold');else{if(_0x143985==='2')_0x1636dc['push']('opacity:0.7');else{if(_0x143985==='3')_0x1636dc['push']('font-style:italic');else{if(_0x143985==='4')_0x1636dc['push']('text-decoration:underline');else{if(_0x143985==='9')_0x1636dc['push']('text-decoration:line-through');else{if(_0x285143[_0x143985])_0x1636dc['push']('color:'+_0x285143[_0x143985]);else{if(_0x433649[_0x143985])_0x1636dc['push']('background-color:'+_0x433649[_0x143985]);}}}}}}}if(_0x1636dc['length']>0x0)return _0x54c619++,'<span\x20style=\x22'+_0x1636dc['join'](';')+'\x22>';return'';}),_0x38ee2b+='</span>'['repeat'](_0x54c619),_0x38ee2b=_0x38ee2b['replace'](/\\u001b\[([0-9;]*)m/g,(_0x5d4ab7,_0x3f25f4)=>{if(!_0x3f25f4||_0x3f25f4==='0')return'';const _0x5311fc=_0x3f25f4['split'](';'),_0xa95260=[];for(const _0x156468 of _0x5311fc){if(_0x156468==='1')_0xa95260['push']('font-weight:bold');else{if(_0x285143[_0x156468])_0xa95260['push']('color:'+_0x285143[_0x156468]);else{if(_0x433649[_0x156468])_0xa95260['push']('background-color:'+_0x433649[_0x156468]);}}}if(_0xa95260['length']>0x0)return'<span\x20style=\x22'+_0xa95260['join'](';')+'\x22>';return'';}),_0x38ee2b;},'showModal'({title:_0x2068e8,content:_0x50dea7,buttons:buttons=[]}){const _0xe46210='\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'](_0x2068e8)+'</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'+_0x50dea7+'\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']((_0x1009f3,_0x41274f)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x1009f3['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x41274f+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x1009f3['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',_0x513d7c=document['createElement']('div');_0x513d7c['id']='utils-modal',_0x513d7c['className']='modal',_0x513d7c['innerHTML']=_0xe46210,document['body']['appendChild'](_0x513d7c);const _0x3934e8=document['getElementById']('utils-modal-close');_0x3934e8&&_0x3934e8['addEventListener']('click',()=>this['hideModal']());const _0x55cfad=_0x513d7c['querySelectorAll']('[data-btn-index]');_0x55cfad['forEach'](_0xfce695=>{const _0x1619d8=parseInt(_0xfce695['dataset']['btnIndex']);buttons[_0x1619d8]?.['onClick']&&_0xfce695['addEventListener']('click',buttons[_0x1619d8]['onClick']);});const _0xb0b3e4=document['getElementById']('utils-modal-overlay');_0xb0b3e4&&_0xb0b3e4['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x273597=document['getElementById']('utils-modal');_0x273597&&_0x273597['remove']();},'parseKeyValuePairs'(_0x35b301){const _0x5e7308={};if(!_0x35b301)return _0x5e7308;return _0x35b301['split'](/\r?\n/)['map'](_0x14e098=>_0x14e098['trim']())['filter'](Boolean)['forEach'](_0x174d3c=>{const _0x5020eb=_0x174d3c['indexOf']('=');if(_0x5020eb>0x0){const _0x51c51b=_0x174d3c['slice'](0x0,_0x5020eb)['trim'](),_0x9fb46b=_0x174d3c['slice'](_0x5020eb+0x1)['trim']();if(_0x51c51b)_0x5e7308[_0x51c51b]=_0x9fb46b;}}),_0x5e7308;},'debounce'(_0x2f0041,_0x5236e8=0xfa){let _0x5a510f=null;return(..._0x430980)=>{clearTimeout(_0x5a510f),_0x5a510f=setTimeout(()=>_0x2f0041['apply'](this,_0x430980),_0x5236e8);};},'formatTimestamp'(_0xdda566){if(!_0xdda566)return'N/A';const _0x558e11=new Date(_0xdda566);return _0x558e11['toLocaleDateString']()+'\x20'+_0x558e11['toLocaleTimeString']();},'getQueryParams'(){const _0x4ee51b=new URLSearchParams(window['location']['search']),_0x2c8530={};for(const [_0x37d339,_0x56ab3a]of _0x4ee51b){_0x2c8530[_0x37d339]=_0x56ab3a;}return _0x2c8530;},'formatDuration'(_0x6627b6,_0x820cd5){if(!_0x6627b6)return'N/A';const _0x2663ad=new Date(_0x6627b6),_0x422abc=_0x820cd5?new Date(_0x820cd5):new Date(),_0x4a9cae=_0x422abc-_0x2663ad;if(_0x4a9cae<0x0)return'0s';const _0x1c819d=Math['floor'](_0x4a9cae/0x3e8),_0x42deb8=Math['floor'](_0x1c819d/0x3c),_0x1a68ba=Math['floor'](_0x42deb8/0x3c),_0x507dd8=Math['floor'](_0x1a68ba/0x18);if(_0x1c819d<0x3c)return _0x1c819d+'s';if(_0x42deb8<0x3c)return _0x42deb8+'m\x20'+_0x1c819d%0x3c+'s';if(_0x1a68ba<0x18)return _0x1a68ba+'h\x20'+_0x42deb8%0x3c+'m\x20'+_0x1c819d%0x3c+'s';return _0x507dd8+'d\x20'+_0x1a68ba%0x18+'h\x20'+_0x42deb8%0x3c+'m';},'renderMarkdown'(_0x5b1c48,_0x5671d5={}){if(!_0x5b1c48)return'';_0x5b1c48=this['rewriteAttachmentLinks'](_0x5b1c48,_0x5671d5),_0x5b1c48=this['rewriteColorSyntax'](_0x5b1c48);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5b1c48,_0x5671d5);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5b1c48);}catch(_0x502813){return console['error']('Markdown\x20parsing\x20error:',_0x502813),this['renderMarkdownFallback'](_0x5b1c48,_0x5671d5);}},'rewriteAttachmentLinks'(_0x2be97d,_0x5304ef={}){const _0x19204a=typeof _0x5304ef['resolveAttachmentUrl']==='function'?_0x5304ef['resolveAttachmentUrl']:_0x5304ef['taskId']?_0x5db216=>API_BASE+'/tasks/'+_0x5304ef['taskId']+'/attachments/'+encodeURIComponent(_0x5db216):null;if(!_0x19204a)return _0x2be97d;return String(_0x2be97d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x46c2f6,_0x435bfd)=>{const _0x3d32db=String(_0x435bfd||'')['trim']();if(!_0x3d32db)return _0x46c2f6;let _0x4a6982=_0x3d32db;try{_0x4a6982=decodeURIComponent(_0x3d32db);}catch{}const _0x2d74bd=_0x19204a(_0x4a6982);if(!_0x2d74bd)return _0x46c2f6;return']('+_0x2d74bd+')';});},'rewriteColorSyntax'(_0x4f263f){if(!_0x4f263f)return _0x4f263f;return String(_0x4f263f)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4a766a,_0x20e033,_0x5700b6)=>{const _0xa0e774=this['rewriteColorSyntax'](_0x5700b6);return'<span\x20style=\x22color:\x20'+_0x20e033+'\x22>'+_0xa0e774+'</span>';});},'renderMarkdownFallback'(_0x48b8c3,_0x3af602={}){if(!_0x48b8c3)return'';_0x48b8c3=_0x48b8c3['replace'](/\r\n/g,'\x0a'),_0x48b8c3=_0x48b8c3['replace'](/\r/g,'\x0a'),_0x48b8c3=this['rewriteAttachmentLinks'](_0x48b8c3,_0x3af602);let _0x4e4f0b=this['escapeHtml'](_0x48b8c3);return _0x4e4f0b=_0x4e4f0b['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x4e4f0b=_0x4e4f0b['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x4e4f0b=_0x4e4f0b['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x4e4f0b=_0x4e4f0b['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x4e4f0b=_0x4e4f0b['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x4e4f0b=_0x4e4f0b['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x4e4f0b=_0x4e4f0b['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x4e4f0b=_0x4e4f0b['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x4e4f0b=_0x4e4f0b['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x4e4f0b=_0x4e4f0b['replace'](/\n\n/g,'</p><p>'),_0x4e4f0b=_0x4e4f0b['replace'](/\n/g,'<br>'),'<p>'+_0x4e4f0b+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x270f9c=new Uint8Array(0x10);crypto['getRandomValues'](_0x270f9c),_0x270f9c[0x6]=_0x270f9c[0x6]&0xf|0x40,_0x270f9c[0x8]=_0x270f9c[0x8]&0x3f|0x80;const _0x2d381b=Array['from'](_0x270f9c,_0x1417e2=>_0x1417e2['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2d381b['slice'](0x0,0x8)+'-'+_0x2d381b['slice'](0x8,0xc)+'-'+_0x2d381b['slice'](0xc,0x10)+'-'+_0x2d381b['slice'](0x10,0x14)+'-'+_0x2d381b['slice'](0x14);}};export class CustomSelect{constructor(_0x58fe90,_0xd9917f={}){this['nativeSelect']=_0x58fe90,this['options']=_0xd9917f,this['isOpen']=![],this['selectedValue']=_0x58fe90['value']||'',this['searchable']=_0xd9917f['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2056f6=document['createElement']('div');_0x2056f6['className']='custom-select';const _0x483431=document['createElement']('div');_0x483431['className']='custom-select-trigger',_0x483431['setAttribute']('tabindex','0'),_0x483431['setAttribute']('role','button'),_0x483431['setAttribute']('aria-haspopup','listbox');const _0x3e5b8f=document['createElement']('span');_0x3e5b8f['className']='custom-select-trigger-text';const _0x5f1027=document['createElement']('span');_0x5f1027['className']='custom-select-arrow',_0x5f1027['textContent']='▼',_0x483431['appendChild'](_0x3e5b8f),_0x483431['appendChild'](_0x5f1027);const _0x393313=document['createElement']('div');_0x393313['className']='custom-select-dropdown',_0x393313['setAttribute']('role','listbox');if(this['searchable']){const _0x436e14=document['createElement']('div');_0x436e14['className']='custom-select-search';const _0x176ad6=document['createElement']('input');_0x176ad6['type']='text',_0x176ad6['className']='custom-select-search-input',_0x176ad6['placeholder']='Type\x20to\x20search...',_0x176ad6['setAttribute']('aria-label','Search\x20options'),_0x176ad6['addEventListener']('input',_0x22855c=>{this['searchQuery']=_0x22855c['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x176ad6['addEventListener']('keydown',_0x3ea006=>{if(_0x3ea006['key']==='Escape')_0x3ea006['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3ea006['key']==='Enter'){_0x3ea006['preventDefault'](),_0x3ea006['stopPropagation']();const _0x12a94b=_0x393313['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x12a94b){const _0x25a115=_0x12a94b['getAttribute']('data-value');this['select'](_0x25a115);}}}}),_0x436e14['appendChild'](_0x176ad6),_0x393313['appendChild'](_0x436e14),this['searchInput']=_0x176ad6;}const _0x3db971=document['createElement']('div');_0x3db971['className']='custom-select-options',_0x393313['appendChild'](_0x3db971),_0x2056f6['appendChild'](_0x483431),_0x2056f6['appendChild'](_0x393313),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2056f6,this['nativeSelect']),this['wrapper']=_0x2056f6,this['trigger']=_0x483431,this['triggerText']=_0x3e5b8f,this['dropdown']=_0x393313,this['optionsContainer']=_0x3db971,_0x483431['addEventListener']('click',()=>this['toggle']()),_0x483431['addEventListener']('keydown',_0x3c9d1b=>this['handleKeydown'](_0x3c9d1b)),document['addEventListener']('click',_0x513693=>{!_0x2056f6['contains'](_0x513693['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4e3ff3=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4e3ff3['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x37cf2c=new MutationObserver(()=>{this['updateDisabledState']();});_0x37cf2c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0xf63692=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0xf63692['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x1c4800=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x1c4800),this['trigger']['setAttribute']('aria-disabled',_0x1c4800?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x1c4800?'-1':'0'),_0x1c4800&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x289592=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x10d19a=_0x289592['filter'](_0x439177=>!_0x439177['disabled']&&!_0x439177['hidden']);_0x289592['forEach']((_0x5e40db,_0x35409e)=>{const _0x1f3a3=document['createElement']('div');_0x1f3a3['className']='custom-select-option',_0x1f3a3['textContent']=_0x5e40db['textContent'],_0x1f3a3['setAttribute']('data-value',_0x5e40db['value']),_0x1f3a3['setAttribute']('data-index',_0x35409e),_0x1f3a3['setAttribute']('role','option'),_0x5e40db['disabled']?_0x1f3a3['classList']['add']('disabled'):_0x1f3a3['addEventListener']('click',()=>this['select'](_0x5e40db['value'])),_0x5e40db['value']===this['selectedValue']&&_0x1f3a3['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1f3a3),this['allOptions']['push']({'element':_0x1f3a3,'text':_0x5e40db['textContent']['toLowerCase'](),'value':_0x5e40db['value'],'disabled':_0x5e40db['disabled']});});if(this['searchable']&&this['searchInput']){const _0x5e6cac=this['searchInput']['parentElement'];_0x10d19a['length']>0x3?_0x5e6cac['style']['display']='':_0x5e6cac['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2987cb=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x214c91=>{if(!_0x2987cb||_0x214c91['disabled'])_0x214c91['element']['style']['display']='';else{const _0x19d689=_0x214c91['text']['includes'](_0x2987cb);_0x214c91['element']['style']['display']=_0x19d689?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x4bb73a){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x4bb73a,this['nativeSelect']['value']=_0x4bb73a;const _0xafbc75=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xafbc75),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x401261=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x401261&&(this['triggerText']['textContent']=_0x401261['textContent'],_0x401261['disabled']||_0x401261['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2daf88=>{_0x2daf88['getAttribute']('data-value')===this['selectedValue']?_0x2daf88['classList']['add']('selected'):_0x2daf88['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 _0x2ed6c9=window['getComputedStyle'](this['dropdown']);if(_0x2ed6c9['position']==='fixed'){const _0x4c796e=this['trigger']['getBoundingClientRect'](),_0x3ec63f=parseInt(_0x2ed6c9['maxHeight'])||0xc8,_0x3da2f0=window['innerHeight'],_0x40bbb6=_0x3da2f0-_0x4c796e['bottom'],_0x5e09d2=_0x4c796e['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x244744;_0x40bbb6<_0x3ec63f&&_0x5e09d2>_0x40bbb6?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3da2f0-_0x4c796e['top']+'px',_0x244744=Math['min'](_0x3ec63f,_0x5e09d2-0xa),this['dropdown']['style']['maxHeight']=_0x244744+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4c796e['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x244744=Math['min'](_0x3ec63f,_0x40bbb6-0xa),this['dropdown']['style']['maxHeight']=_0x244744+'px');if(this['optionsContainer']){let _0x854e9b=_0x244744;if(this['searchInput']){const _0x47cf54=this['searchInput']['parentElement'];_0x47cf54&&(_0x854e9b-=_0x47cf54['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x854e9b)+'px';}this['dropdown']['style']['left']=_0x4c796e['left']+'px',this['dropdown']['style']['width']=_0x4c796e['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x509a7e=this['searchInput']['parentElement'];_0x509a7e&&_0x509a7e['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'](_0xb642b0){if(this['nativeSelect']['disabled'])return;if(_0xb642b0['key']==='Enter'||_0xb642b0['key']==='\x20')_0xb642b0['preventDefault'](),this['toggle']();else _0xb642b0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2f61bc='\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',_0x2f61bc),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x264006=document['getElementById']('confirm-dialog-close'),_0xd6e089=document['getElementById']('confirm-dialog-cancel'),_0xa09b65=document['getElementById']('confirm-dialog-confirm'),_0x3421ac=this['_modal']['querySelector']('.modal-overlay');_0x264006['addEventListener']('click',()=>this['_resolve'](![])),_0xd6e089['addEventListener']('click',()=>this['_resolve'](![])),_0xa09b65['addEventListener']('click',()=>this['_resolve'](!![])),_0x3421ac['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x5dcc4a=>{if(_0x5dcc4a['key']==='Escape')_0x5dcc4a['preventDefault'](),this['_resolve'](![]);else _0x5dcc4a['key']==='Enter'&&(_0x5dcc4a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x584000,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0xef43e3=>{this['_resolvePromise']=_0xef43e3,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x584000;const _0x2d7589=document['getElementById']('confirm-dialog-cancel'),_0x23a1b4=document['getElementById']('confirm-dialog-confirm');_0x2d7589['textContent']=cancelText,_0x23a1b4['textContent']=confirmText,_0x23a1b4['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x23a1b4['focus']();});},'_resolve'(_0x525fda){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x525fda),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x519ad1,_0x5e0c76={}){this['container']=_0x519ad1,this['options']={'placeholder':_0x5e0c76['placeholder']||'Type\x20to\x20search...','maxItems':_0x5e0c76['maxItems']||0x64,'loadItems':_0x5e0c76['loadItems']||(async()=>[]),'renderItem':_0x5e0c76['renderItem']||(_0x38e581=>({'primary':String(_0x38e581),'secondary':''})),'onSelect':_0x5e0c76['onSelect']||(()=>{}),'filterItems':_0x5e0c76['filterItems']||null,'getItemValue':_0x5e0c76['getItemValue']||(_0x5d9a95=>_0x5d9a95),'sortItems':_0x5e0c76['sortItems']||null,'debounceMs':_0x5e0c76['debounceMs']||0xc8,'minCharsForSearch':_0x5e0c76['minCharsForSearch']||0x0,'emptyMessage':_0x5e0c76['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5e0c76['loadingMessage']||'Loading...','preload':_0x5e0c76['preload']!==![],'searchMode':_0x5e0c76['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',_0x5b9e22=>this['onBlur'](_0x5b9e22)),this['input']['addEventListener']('input',_0x415690=>this['onInput'](_0x415690)),this['input']['addEventListener']('keydown',_0x8e68a4=>this['onKeydown'](_0x8e68a4)),this['clearBtn']['addEventListener']('mousedown',_0x51b437=>{_0x51b437['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x457345=>{_0x457345['preventDefault']();}),document['addEventListener']('click',_0x23f5dd=>{!this['wrapper']['contains'](_0x23f5dd['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(_0x139f98){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x139f98);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x456c70){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x35d06b){const _0x3538e9=_0x35d06b['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3538e9);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3538e9):this['loadAndShow'](_0x3538e9);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x40216b){switch(_0x40216b['key']){case'ArrowDown':_0x40216b['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x40216b['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x40216b['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x40216b['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4ceed4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2acee2=this['selectedIndex']+_0x4ceed4;if(_0x2acee2>=0x0&&_0x2acee2<this['filteredItems']['length']){this['selectedIndex']=_0x2acee2,this['updateSelectionHighlight']();const _0x559b70=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x559b70[this['selectedIndex']]&&_0x559b70[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x36ba86=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x36ba86['forEach']((_0x2e14ce,_0x485fe8)=>{_0x2e14ce['classList']['toggle']('keyboard-selected',_0x485fe8===this['selectedIndex']);});}async['loadAndShow'](_0x15bff0){this['showLoading']();try{const _0x3fa053=await this['options']['loadItems'](_0x15bff0);if(this['options']['searchMode']==='server'){let _0x23ebbe=_0x3fa053;this['options']['sortItems']&&(_0x23ebbe=this['options']['sortItems']([..._0x3fa053]));this['filteredItems']=_0x23ebbe;const _0x3abc2b=this['filteredItems']['length']>=this['options']['maxItems'];_0x3abc2b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3abc2b),this['open']();}else this['allItems']=_0x3fa053,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x15bff0);}catch(_0x3e92ac){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x3e92ac),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x396b2a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x396b2a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2f5440=this['filteredItems']['length']>=this['options']['maxItems'];_0x2f5440&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2f5440),this['open']();}['renderItems'](_0x1ba49f){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']((_0x3299aa,_0x232675)=>{const _0xebd2d0=document['createElement']('div');_0xebd2d0['className']='autocomplete-select-item',_0xebd2d0['setAttribute']('role','option'),_0xebd2d0['setAttribute']('data-index',_0x232675);const _0x16825c=this['options']['renderItem'](_0x3299aa);let _0xd98fd8='';_0x16825c['icon']&&(_0xd98fd8='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x16825c['iconClass']||'')+'\x22>'+_0x16825c['icon']+'</span>'),_0xebd2d0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xd98fd8+'\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'](_0x16825c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x16825c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x16825c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xebd2d0['addEventListener']('click',()=>{this['selectItem'](_0x3299aa);}),_0xebd2d0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x232675,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xebd2d0);}),_0x1ba49f?(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'](_0x57d614){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x57d614)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x457154){this['selectedItem']=_0x457154;const _0x48dc25=this['options']['renderItem'](_0x457154);this['input']['value']=_0x48dc25['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x457154);}['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'](_0x306ad8){if(_0x306ad8){this['selectedItem']=_0x306ad8;const _0xa4352f=this['options']['renderItem'](_0x306ad8);this['input']['value']=_0xa4352f['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x2fe559){this['allItems']=_0x2fe559,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'](_0x552f1c){this['input']['placeholder']=_0x552f1c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x5613b1=null){const _0x30f5a8=document['getElementById']('admin-menu-container'),_0x45cbe2=document['getElementById']('admin-menu-btn'),_0x5da77d=document['getElementById']('admin-menu');if(!_0x30f5a8||!_0x45cbe2||!_0x5da77d)return;try{!_0x5613b1&&(_0x5613b1=await API['getCurrentUser']());if(_0x5613b1){const _0xe170ec=window['Permissions'],_0x3fef82=_0xe170ec['hasServerPermission'](_0x5613b1,'*')||_0xe170ec['hasEnvPermission'](_0x5613b1,'environments:manage')||_0xe170ec['hasServerPermission'](_0x5613b1,'users:create')||_0xe170ec['hasTeamPermission'](_0x5613b1,'teams:manage')||_0xe170ec['hasEnvPermission'](_0x5613b1,'environments:view_details');if(!_0x3fef82)return;_0x30f5a8['hidden']=![];if(!_0xe170ec['hasServerPermission'](_0x5613b1,'*')){const _0x197bb5=_0x5da77d['querySelectorAll']('.admin-menu-item');_0x197bb5['forEach'](_0x12b002=>{const _0x19d149=_0x12b002['querySelector']('.option-text')?.['textContent']?.['trim']();_0x19d149==='Users'&&!_0xe170ec['hasServerPermission'](_0x5613b1,'users:create')&&(_0x12b002['hidden']=!![]),_0x19d149==='Skills'&&(_0x12b002['hidden']=!![]),_0x19d149==='Server\x20Settings'&&(_0x12b002['hidden']=!![]),_0x19d149==='Server\x20Health'&&(_0x12b002['hidden']=!![]),_0x19d149==='Git\x20History'&&(_0x12b002['hidden']=!![]),_0x19d149==='Roles'&&(_0x12b002['hidden']=!![]);});}_0x45cbe2['addEventListener']('click',_0x1c10ef=>{_0x1c10ef['stopPropagation']();const _0x5c7da5=document['getElementById']('actions-menu');if(_0x5c7da5)_0x5c7da5['hidden']=!![];_0x5da77d['hidden']=!_0x5da77d['hidden'];}),document['addEventListener']('click',_0x470315=>{!_0x5da77d['hidden']&&!_0x45cbe2['contains'](_0x470315['target'])&&!_0x5da77d['contains'](_0x470315['target'])&&(_0x5da77d['hidden']=!![]);}),document['addEventListener']('keydown',_0x1947fc=>{_0x1947fc['key']==='Escape'&&!_0x5da77d['hidden']&&(_0x5da77d['hidden']=!![]);});const _0x2f1c8d=document['getElementById']('server-health-btn');_0x2f1c8d&&_0x2f1c8d['addEventListener']('click',async()=>{_0x5da77d['hidden']=!![];const {openServerHealthModal:_0x1f9acf}=await import('./server-health.js');_0x1f9acf();});}}catch(_0x5e0af6){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5e0af6['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 _0x50b2f3=window['location']['pathname'],_0x40a93c=_0x50b2f3['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x40a93c)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x40a93c[0x1]),_0x40a93c[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1bc039={}){const _0x72803=new URLSearchParams();_0x1bc039['userId']&&_0x72803['set']('userId',String(_0x1bc039['userId']));_0x1bc039['automation']&&_0x72803['set']('automation',String(_0x1bc039['automation']));const _0x3d9517=API_BASE+'/tasks/stats'+(_0x72803['toString']()?'?'+_0x72803['toString']():''),_0x261cbf=await fetch(_0x3d9517);if(!_0x261cbf['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x261cbf['statusText']);return await _0x261cbf['json']();},async 'getTasks'(_0x41eb60={}){const _0x5caf26=new URLSearchParams();_0x41eb60['status']&&_0x5caf26['set']('status',String(_0x41eb60['status']));_0x41eb60['environment']&&_0x5caf26['set']('environment',String(_0x41eb60['environment']));_0x41eb60['automation']&&_0x5caf26['set']('automation',String(_0x41eb60['automation']));if(_0x41eb60['include']){const _0x4a9ab6=Array['isArray'](_0x41eb60['include'])?_0x41eb60['include']['join'](','):String(_0x41eb60['include']);_0x4a9ab6&&_0x5caf26['set']('include',_0x4a9ab6);}_0x41eb60['filter']&&_0x5caf26['set']('filter',String(_0x41eb60['filter']));_0x41eb60['page']&&_0x5caf26['set']('page',String(_0x41eb60['page']));_0x41eb60['limit']&&_0x5caf26['set']('limit',String(_0x41eb60['limit']));_0x41eb60['userId']&&_0x5caf26['set']('userId',String(_0x41eb60['userId']));_0x41eb60['search']&&_0x5caf26['set']('search',String(_0x41eb60['search']));_0x41eb60['includeChildTasks']&&_0x5caf26['set']('includeChildTasks','true');const _0x496563=API_BASE+'/tasks'+(_0x5caf26['toString']()?'?'+_0x5caf26['toString']():''),_0x3f3eab=await fetch(_0x496563);if(!_0x3f3eab['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3f3eab['statusText']);return await _0x3f3eab['json']();},async 'getAutomations'(_0x372580={}){const _0x10b035=new URLSearchParams();_0x372580['environment']&&_0x10b035['set']('environment',String(_0x372580['environment']));const _0x5d904d=await fetch(API_BASE+'/api/automations'+(_0x10b035['toString']()?'?'+_0x10b035['toString']():''));if(!_0x5d904d['ok']){const _0x1e2294=await _0x5d904d['json']()['catch'](()=>({}));throw new Error(_0x1e2294['message']||_0x1e2294['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x5d904d['statusText']);}return await _0x5d904d['json']();},async 'getAutomation'(_0x7fa3aa){const _0x98e15d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x7fa3aa));if(!_0x98e15d['ok']){const _0x212d45=await _0x98e15d['json']()['catch'](()=>({}));throw new Error(_0x212d45['message']||_0x212d45['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x98e15d['statusText']);}return await _0x98e15d['json']();},async 'createAutomation'(_0x5977ae){const _0x3f6a49=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5977ae||{})});if(!_0x3f6a49['ok']){const _0x8469dd=await _0x3f6a49['json']()['catch'](()=>({}));throw new Error(_0x8469dd['message']||_0x8469dd['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3f6a49['statusText']);}return await _0x3f6a49['json']();},async 'updateAutomation'(_0x2702e2,_0x4191ca){const _0x25a429=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2702e2),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4191ca||{})});if(!_0x25a429['ok']){const _0x1216cd=await _0x25a429['json']()['catch'](()=>({}));throw new Error(_0x1216cd['message']||_0x1216cd['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x25a429['statusText']);}return await _0x25a429['json']();},async 'deleteAutomation'(_0x216ea8){const _0x382a42=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x216ea8),{'method':'DELETE'});if(!_0x382a42['ok']){const _0x5e7983=await _0x382a42['json']()['catch'](()=>({}));throw new Error(_0x5e7983['message']||_0x5e7983['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x382a42['statusText']);}return await _0x382a42['json']();},async 'triggerAutomation'(_0x235b52){const _0x450a92=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x235b52)+'/trigger',{'method':'POST'});if(!_0x450a92['ok']){const _0x43abfb=await _0x450a92['json']()['catch'](()=>({}));throw new Error(_0x43abfb['message']||_0x43abfb['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x450a92['statusText']);}return await _0x450a92['json']();},async 'setAutomationEnabled'(_0x3c22c4,_0x28afa9){const _0x103112=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3c22c4)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x28afa9})});if(!_0x103112['ok']){const _0x5928e7=await _0x103112['json']()['catch'](()=>({}));throw new Error(_0x5928e7['message']||_0x5928e7['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x103112['statusText']);}return await _0x103112['json']();},async 'getAutomationHistory'(_0xa531ea,_0xfb3946=0x32){const _0x52ade5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa531ea)+'/history?limit='+encodeURIComponent(String(_0xfb3946)));if(!_0x52ade5['ok']){const _0x5ea58f=await _0x52ade5['json']()['catch'](()=>({}));throw new Error(_0x5ea58f['message']||_0x5ea58f['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x52ade5['statusText']);}return await _0x52ade5['json']();},async 'getTask'(_0x53b392,_0x2b8972={}){const _0x4e9514=new URLSearchParams();if(_0x2b8972['include']){const _0x134775=Array['isArray'](_0x2b8972['include'])?_0x2b8972['include']['join'](','):String(_0x2b8972['include']);if(_0x134775)_0x4e9514['set']('include',_0x134775);}const _0x56f54b=await fetch(API_BASE+'/tasks/'+_0x53b392+(_0x4e9514['toString']()?'?'+_0x4e9514['toString']():''));if(!_0x56f54b['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x56f54b['statusText']);return await _0x56f54b['json']();},async 'getTaskResults'(_0x356e48){const _0x2b5b4f=await fetch(API_BASE+'/tasks/'+_0x356e48+'/results');if(!_0x2b5b4f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2b5b4f['statusText']);return await _0x2b5b4f['json']();},async 'getTaskPatches'(_0x32af6c){const _0x456ac7=await fetch(API_BASE+'/tasks/'+_0x32af6c+'/patches');if(!_0x456ac7['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x456ac7['statusText']);return await _0x456ac7['json']();},async 'getTaskAttachments'(_0x13dba1){const _0x10bfc0=await fetch(API_BASE+'/tasks/'+_0x13dba1+'/attachments');if(!_0x10bfc0['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x10bfc0['statusText']);return await _0x10bfc0['json']();},async 'uploadAttachments'(_0x5187dc,_0x22d2f4){const _0x1101a6=new FormData();for(const _0x31bf4d of _0x22d2f4){_0x1101a6['append']('attachments',_0x31bf4d);}const _0x49b1c4=await fetch(API_BASE+'/tasks/'+_0x5187dc+'/attachments',{'method':'POST','body':_0x1101a6});if(!_0x49b1c4['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x49b1c4['statusText']);return await _0x49b1c4['json']();},async 'isAINameGenerationAvailable'(){try{const _0x44b8ed=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x44b8ed['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x44b8ed['json']();}catch(_0x525931){return{'available':![],'reason':_0x525931['message']};}},async 'generateTaskName'(_0x272412){try{const _0x647aa9=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x272412})});return await _0x647aa9['json']();}catch(_0x32f299){return{'success':![],'error':_0x32f299['message']};}},async 'createTask'(_0x214494){let _0x5da179,_0x3ca501={};if(_0x214494['files']&&_0x214494['files']['length']>0x0){const _0x4afed3=new FormData();for(const [_0xe06d0e,_0x216c3f]of Object['entries'](_0x214494)){if(_0xe06d0e!=='files'){if(_0x216c3f==null)continue;typeof _0x216c3f==='object'?_0x4afed3['append'](_0xe06d0e,JSON['stringify'](_0x216c3f)):_0x4afed3['append'](_0xe06d0e,String(_0x216c3f));}}for(const _0x581391 of _0x214494['files']){_0x4afed3['append']('attachments',_0x581391);}_0x5da179=_0x4afed3;}else _0x3ca501['Content-Type']='application/json',_0x5da179=JSON['stringify'](_0x214494);const _0x59eeae=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3ca501,'body':_0x5da179});if(!_0x59eeae['ok']){const _0x135cbf=await _0x59eeae['json'](),_0xa74cb1=new Error(_0x135cbf['error']||'Failed\x20to\x20create\x20task:\x20'+_0x59eeae['statusText']),{message:_0x591f50,..._0x546019}=_0x135cbf;Object['assign'](_0xa74cb1,_0x546019);throw _0xa74cb1;}return await _0x59eeae['json']();},async 'createTestTask'(_0x195b07){const _0x161c74=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x195b07)});if(!_0x161c74['ok']){const _0x4fcc26=await _0x161c74['json']();throw new Error(_0x4fcc26['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x161c74['statusText']);}return await _0x161c74['json']();},async 'createEphemeralTest'(_0x478a2f){const _0x2121fa=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x478a2f)});if(!_0x2121fa['ok']){const _0x18c47a=await _0x2121fa['json']();throw new Error(_0x18c47a['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2121fa['statusText']);}return await _0x2121fa['json']();},async 'createDeployTask'(_0x327893){const _0x5db0d4=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x327893)});if(!_0x5db0d4['ok']){const _0x5a8c0d=await _0x5db0d4['json']();throw new Error(_0x5a8c0d['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5db0d4['statusText']);}return await _0x5db0d4['json']();},async 'getEnvironments'(){const _0x2ff4e=await fetch(API_BASE+'/environments');if(!_0x2ff4e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2ff4e['statusText']);return await _0x2ff4e['json']();},async 'getEnvironment'(_0x340781){const _0x5f186b=await fetch(API_BASE+'/environments/'+_0x340781);if(!_0x5f186b['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5f186b['statusText']);return await _0x5f186b['json']();},async 'getEnvironmentRepoHistory'(_0x343309,_0xb1e8a4,_0x47dc6d={}){if(!_0x343309||!_0xb1e8a4)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xd0058e=new URLSearchParams();if(_0x47dc6d['limit'])_0xd0058e['set']('limit',String(_0x47dc6d['limit']));if(_0x47dc6d['offset'])_0xd0058e['set']('offset',String(_0x47dc6d['offset']));if(_0x47dc6d['search'])_0xd0058e['set']('search',String(_0x47dc6d['search']));if(_0x47dc6d['branch'])_0xd0058e['set']('branch',String(_0x47dc6d['branch']));const _0x7c7d4b=API_BASE+'/environments/'+encodeURIComponent(_0x343309)+'/repos/'+encodeURIComponent(_0xb1e8a4)+'/git/history',_0x5a2fcf=await fetch(''+_0x7c7d4b+(_0xd0058e['toString']()?'?'+_0xd0058e['toString']():''));if(!_0x5a2fcf['ok']){const _0xcd0337=await _0x5a2fcf['json']()['catch'](()=>({}));throw new Error(_0xcd0337['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5a2fcf['statusText']);}return await _0x5a2fcf['json']();},async 'getEnvironmentRepoCommit'(_0x48df4e,_0x29a65f,_0x167f1d){if(!_0x48df4e||!_0x29a65f||!_0x167f1d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x22fefc=API_BASE+'/environments/'+encodeURIComponent(_0x48df4e)+'/repos/'+encodeURIComponent(_0x29a65f)+'/git/commits/'+encodeURIComponent(_0x167f1d),_0x11e2fa=await fetch(_0x22fefc);if(!_0x11e2fa['ok']){const _0x461bd8=await _0x11e2fa['json']()['catch'](()=>({}));throw new Error(_0x461bd8['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x11e2fa['statusText']);}return await _0x11e2fa['json']();},async 'getEnvironmentRepoBranches'(_0x531379,_0x259049){if(!_0x531379||!_0x259049)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x115530=API_BASE+'/environments/'+encodeURIComponent(_0x531379)+'/repos/'+encodeURIComponent(_0x259049)+'/git/branches',_0xc18ebb=await fetch(_0x115530);if(!_0xc18ebb['ok']){const _0x4d4744=await _0xc18ebb['json']()['catch'](()=>({}));throw new Error(_0x4d4744['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xc18ebb['statusText']);}return await _0xc18ebb['json']();},async 'revertEnvironmentRepoCommit'(_0x373e39,_0x12e1f1,_0x2eeb90,_0x15843e={}){if(!_0x373e39||!_0x12e1f1||!_0x2eeb90)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5e1422=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x373e39)+'/repos/'+encodeURIComponent(_0x12e1f1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2eeb90,..._0x15843e})});if(!_0x5e1422['ok']){const _0x4fa808=await _0x5e1422['json']()['catch'](()=>({}));throw new Error(_0x4fa808['message']||_0x4fa808['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5e1422['statusText']);}return await _0x5e1422['json']();},async 'getTemplates'(_0x833a56={}){const _0x4b3b84=new URLSearchParams();if(_0x833a56['include']){const _0x1a874b=Array['isArray'](_0x833a56['include'])?_0x833a56['include']['join'](','):String(_0x833a56['include']);if(_0x1a874b)_0x4b3b84['set']('include',_0x1a874b);}const _0x177096=await fetch(API_BASE+'/templates'+(_0x4b3b84['toString']()?'?'+_0x4b3b84['toString']():''));if(!_0x177096['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x177096['statusText']);return await _0x177096['json']();},async 'getTemplatesForEnvironment'(_0x45b535,_0x47a455={}){if(!_0x45b535)throw new Error('Environment\x20name\x20is\x20required');const _0x65cfec=new URLSearchParams();if(_0x47a455['include']){const _0xde3ff=Array['isArray'](_0x47a455['include'])?_0x47a455['include']['join'](','):String(_0x47a455['include']);if(_0xde3ff)_0x65cfec['set']('include',_0xde3ff);}const _0x2b1aa6=await fetch(API_BASE+'/templates/'+_0x45b535+(_0x65cfec['toString']()?'?'+_0x65cfec['toString']():''));if(!_0x2b1aa6['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x45b535+':\x20'+_0x2b1aa6['statusText']);return await _0x2b1aa6['json']();},async 'getTemplate'(_0xc6b0e0,_0x369d58,_0x3c1c40={}){if(!_0xc6b0e0||!_0x369d58)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x4b352c=new URLSearchParams();if(_0x3c1c40['include']){const _0x30e80b=Array['isArray'](_0x3c1c40['include'])?_0x3c1c40['include']['join'](','):String(_0x3c1c40['include']);if(_0x30e80b)_0x4b352c['set']('include',_0x30e80b);}const _0x2f3f2f=await fetch(API_BASE+'/templates/'+_0xc6b0e0+'/'+_0x369d58+(_0x4b352c['toString']()?'?'+_0x4b352c['toString']():''));if(!_0x2f3f2f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2f3f2f['statusText']);return await _0x2f3f2f['json']();},async 'getTaskLogs'(_0x335fd,_0x2e48a4={}){if(!_0x335fd)throw new Error('Task\x20ID\x20is\x20required');const _0x46f64f=new URLSearchParams();_0x2e48a4['tail']&&_0x46f64f['set']('tail',String(_0x2e48a4['tail']));const _0x496472=await fetch(API_BASE+'/tasks/'+_0x335fd+'/logs'+(_0x46f64f['toString']()?'?'+_0x46f64f['toString']():''));if(!_0x496472['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x496472['statusText']);return await _0x496472['text']();},async 'getContainers'(){const _0x57b311=await fetch(API_BASE+'/containers');if(!_0x57b311['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x57b311['statusText']);return await _0x57b311['json']();},async 'getContainer'(_0x34a05d){const _0x2bae5e=await fetch(API_BASE+'/containers/'+_0x34a05d);if(!_0x2bae5e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x2bae5e['statusText']);return await _0x2bae5e['json']();},async 'startInteractiveContainer'(_0x5551b8){const _0x4bf7c2=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5551b8)});if(!_0x4bf7c2['ok']){const _0x39bcf1=await _0x4bf7c2['json']()['catch'](()=>({}));throw new Error(_0x39bcf1['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4bf7c2['statusText']);}return await _0x4bf7c2['json']();},async 'stopContainer'(_0x3feedc){const _0x72fd0d=await fetch(API_BASE+'/containers/'+_0x3feedc,{'method':'DELETE'});if(!_0x72fd0d['ok']){const _0x318a5a=await _0x72fd0d['json']()['catch'](()=>({}));throw new Error(_0x318a5a['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x72fd0d['statusText']);}return await _0x72fd0d['json']();},async 'stopTask'(_0x5d1cd7){if(!_0x5d1cd7)throw new Error('Task\x20ID\x20is\x20required');const _0x2dbbf7=await fetch(API_BASE+'/tasks/'+_0x5d1cd7+'/stop',{'method':'POST'});if(!_0x2dbbf7['ok']){const _0x5e7e56=await _0x2dbbf7['json']()['catch'](()=>({}));throw new Error(_0x5e7e56['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2dbbf7['statusText']);}return await _0x2dbbf7['json']();},async 'interruptTask'(_0x2f8875){if(!_0x2f8875)throw new Error('Task\x20ID\x20is\x20required');const _0x51268c=await fetch(API_BASE+'/tasks/'+_0x2f8875+'/interrupt',{'method':'POST'});if(!_0x51268c['ok']){const _0x4d103e=await _0x51268c['json']()['catch'](()=>({}));throw new Error(_0x4d103e['error']||_0x4d103e['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x51268c['statusText']);}return await _0x51268c['json']();},async 'startTask'(_0x3d7b3c){if(!_0x3d7b3c)throw new Error('Task\x20ID\x20is\x20required');const _0x5b8e75=await fetch(API_BASE+'/tasks/'+_0x3d7b3c+'/start',{'method':'POST'});if(!_0x5b8e75['ok']){const _0x423f8d=await _0x5b8e75['json']()['catch'](()=>({}));throw new Error(_0x423f8d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5b8e75['statusText']);}return await _0x5b8e75['json']();},async 'deleteTask'(_0x482f2e){if(!_0x482f2e)throw new Error('Task\x20ID\x20is\x20required');const _0x399289=await fetch(API_BASE+'/tasks/'+_0x482f2e,{'method':'DELETE'});if(!_0x399289['ok']){const _0x42ad4a=await _0x399289['json']()['catch'](()=>({}));throw new Error(_0x42ad4a['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x399289['statusText']);}return await _0x399289['json']();},async 'refreshTasksFromDisk'(){const _0x4b7a28=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x4b7a28['ok']){const _0x4cb783=await _0x4b7a28['json']()['catch'](()=>({}));throw new Error(_0x4cb783['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x4b7a28['statusText']);}return await _0x4b7a28['json']();},async 'approveTask'(_0x313b27,_0x2ee8d7={}){if(!_0x313b27)throw new Error('Task\x20ID\x20is\x20required');const _0x482c0d={'commit_message':_0x2ee8d7['commit_message']||'','pull':_0x2ee8d7['pull']??![],'push':_0x2ee8d7['push']??![]};_0x2ee8d7['new_branch']&&(_0x482c0d['new_branch']=_0x2ee8d7['new_branch']);const _0x3610c3=await fetch(API_BASE+'/tasks/'+_0x313b27+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x482c0d)});if(!_0x3610c3['ok']){const _0x57b0c5=await _0x3610c3['json']()['catch'](()=>({}));let _0xb2de32=_0x57b0c5['error']||_0x57b0c5['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3610c3['statusText'];if(_0x57b0c5['results']&&Array['isArray'](_0x57b0c5['results'])){const _0x2e0414=_0x57b0c5['results']['filter'](_0x460008=>!_0x460008['success']&&_0x460008['error']);_0x2e0414['length']>0x0&&(_0xb2de32=_0x2e0414[0x0]['error']);}throw new Error(_0xb2de32);}return await _0x3610c3['json']();},async 'getPullRequestInfo'(_0x5eeba6){if(!_0x5eeba6)throw new Error('Task\x20ID\x20is\x20required');const _0x418828=await fetch(API_BASE+'/tasks/'+_0x5eeba6+'/pull-request-info');if(!_0x418828['ok']){const _0x54ba6c=await _0x418828['json']()['catch'](()=>({}));throw new Error(_0x54ba6c['error']||_0x54ba6c['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x418828['statusText']);}return await _0x418828['json']();},async 'createPullRequests'(_0x14a700,_0x249c92){if(!_0x14a700)throw new Error('Task\x20ID\x20is\x20required');if(!_0x249c92||!Array['isArray'](_0x249c92))throw new Error('repos\x20array\x20is\x20required');const _0x252884=await fetch(API_BASE+'/tasks/'+_0x14a700+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x249c92})});if(!_0x252884['ok']){const _0x4a4f38=await _0x252884['json']()['catch'](()=>({}));let _0x4c1eb9=_0x4a4f38['error']||_0x4a4f38['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x252884['statusText'];if(_0x4a4f38['results']&&Array['isArray'](_0x4a4f38['results'])){const _0x3acf59=_0x4a4f38['results']['filter'](_0x4f1fa3=>!_0x4f1fa3['success']&&_0x4f1fa3['error']);_0x3acf59['length']>0x0&&(_0x4c1eb9=_0x3acf59[0x0]['error']);}throw new Error(_0x4c1eb9);}return await _0x252884['json']();},async 'syncRepos'(_0x3af19a){if(!_0x3af19a)throw new Error('Task\x20ID\x20is\x20required');const _0x1a9431=await fetch(API_BASE+'/tasks/'+_0x3af19a+'/sync-repos',{'method':'POST'});if(!_0x1a9431['ok']){const _0x5f1121=await _0x1a9431['json']()['catch'](()=>({}));throw new Error(_0x5f1121['error']||_0x5f1121['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x1a9431['statusText']);}return await _0x1a9431['json']();},async 'getIbmiSyncInfo'(_0x54d475){if(!_0x54d475)throw new Error('Task\x20ID\x20is\x20required');const _0x579571=await fetch(API_BASE+'/tasks/'+_0x54d475+'/ibmi-sync-info');if(!_0x579571['ok']){const _0x3ed5e8=await _0x579571['json']()['catch'](()=>({}));throw new Error(_0x3ed5e8['error']||_0x3ed5e8['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x579571['json']();},async 'getSyncFiles'(_0x3e5b24){if(!_0x3e5b24)throw new Error('Task\x20ID\x20is\x20required');const _0x41249f=await fetch(API_BASE+'/tasks/'+_0x3e5b24+'/sync-to-ibmi/files');if(!_0x41249f['ok']){const _0x431017=await _0x41249f['json']()['catch'](()=>({}));throw new Error(_0x431017['error']||_0x431017['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x41249f['json']();},async 'syncToIbmi'(_0x3195e8,_0x31eb53,_0x226cca=null,_0x14fee1=null,_0xf5f4c6=null){if(!_0x3195e8)throw new Error('Task\x20ID\x20is\x20required');const _0x493ff6={'library':_0x31eb53};if(_0x226cca)_0x493ff6['user']=_0x226cca;if(_0x14fee1)_0x493ff6['password']=_0x14fee1;if(_0xf5f4c6)_0x493ff6['files']=_0xf5f4c6;const _0x2a1da3=await fetch(API_BASE+'/tasks/'+_0x3195e8+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x493ff6)});if(!_0x2a1da3['ok']){const _0x56604c=await _0x2a1da3['json']()['catch'](()=>({}));throw new Error(_0x56604c['error']||_0x56604c['message']||'Sync\x20failed');}return await _0x2a1da3['json']();},async 'getIbmiSyncLog'(_0x4d5cef){if(!_0x4d5cef)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7239=await fetch(API_BASE+'/tasks/'+_0x4d5cef+'/ibmi-sync-log');if(!_0x3f7239['ok']){const _0x1478f4=await _0x3f7239['json']()['catch'](()=>({}));throw new Error(_0x1478f4['error']||_0x1478f4['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3f7239['json']();},async 'pullChanges'(_0x5ab069){if(!_0x5ab069)throw new Error('Task\x20ID\x20is\x20required');const _0x591df4=await fetch(API_BASE+'/tasks/'+_0x5ab069+'/pull-changes',{'method':'POST'});if(!_0x591df4['ok']){const _0x5e3177=await _0x591df4['json']()['catch'](()=>({}));throw new Error(_0x5e3177['error']||_0x5e3177['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x591df4['statusText']);}return await _0x591df4['json']();},async 'readFile'(_0x2e9962,_0x140c8f){if(!_0x2e9962)throw new Error('Task\x20ID\x20is\x20required');if(!_0x140c8f)throw new Error('File\x20path\x20is\x20required');const _0xaee0aa=await fetch(API_BASE+'/tasks/'+_0x2e9962+'/files?path='+encodeURIComponent(_0x140c8f));if(!_0xaee0aa['ok']){const _0x1eeaf8=await _0xaee0aa['json']()['catch'](()=>({}));throw new Error(_0x1eeaf8['error']||_0x1eeaf8['message']||'Failed\x20to\x20read\x20file:\x20'+_0xaee0aa['statusText']);}return await _0xaee0aa['json']();},'getTaskFileDownloadUrl'(_0x15b785,_0xa6b7df){if(!_0x15b785)throw new Error('Task\x20ID\x20is\x20required');if(!_0xa6b7df)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x15b785+'/files/download?path='+encodeURIComponent(_0xa6b7df);},async 'writeFile'(_0x1d4811,_0x3a6d57,_0x2b8c8a){if(!_0x1d4811)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a6d57)throw new Error('File\x20path\x20is\x20required');if(_0x2b8c8a===undefined)throw new Error('Content\x20is\x20required');const _0x1e7ce9=await fetch(API_BASE+'/tasks/'+_0x1d4811+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a6d57,'content':_0x2b8c8a})});if(!_0x1e7ce9['ok']){const _0x47d463=await _0x1e7ce9['json']()['catch'](()=>({}));throw new Error(_0x47d463['error']||_0x47d463['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1e7ce9['statusText']);}return await _0x1e7ce9['json']();},async 'uploadTaskFiles'(_0x5a2d13,_0x269f5e,_0x595b9f){if(!_0x5a2d13)throw new Error('Task\x20ID\x20is\x20required');if(!_0x269f5e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x595b9f||_0x595b9f['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x3d490c=new FormData();_0x3d490c['append']('targetDir',_0x269f5e);for(const _0x1a84e9 of _0x595b9f){_0x3d490c['append']('files',_0x1a84e9,_0x1a84e9['name']);}const _0x1eae1b=await fetch(API_BASE+'/tasks/'+_0x5a2d13+'/files/upload',{'method':'POST','body':_0x3d490c});if(!_0x1eae1b['ok']){const _0x32d81d=await _0x1eae1b['json']()['catch'](()=>({}));throw new Error(_0x32d81d['error']||_0x32d81d['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1eae1b['statusText']);}return await _0x1eae1b['json']();},async 'deleteFile'(_0xc9ce1f,_0x21c4c5){if(!_0xc9ce1f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x21c4c5)throw new Error('File\x20path\x20is\x20required');const _0x4aaf7f=await fetch(API_BASE+'/tasks/'+_0xc9ce1f+'/files?path='+encodeURIComponent(_0x21c4c5),{'method':'DELETE'});if(!_0x4aaf7f['ok']){const _0x51353b=await _0x4aaf7f['json']()['catch'](()=>({}));throw new Error(_0x51353b['error']||_0x51353b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4aaf7f['statusText']);}return await _0x4aaf7f['json']();},async 'discardFile'(_0x2902c2,_0x2ac733,_0x46a693){if(!_0x2902c2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ac733)throw new Error('File\x20path\x20is\x20required');if(!_0x46a693)throw new Error('Repository\x20path\x20is\x20required');const _0x14b83c=await fetch(API_BASE+'/tasks/'+_0x2902c2+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2ac733,'repoPath':_0x46a693})});if(!_0x14b83c['ok']){const _0x2e88d0=await _0x14b83c['json']()['catch'](()=>({}));throw new Error(_0x2e88d0['error']||_0x2e88d0['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x14b83c['statusText']);}return await _0x14b83c['json']();},async 'followUpTask'(_0x3e5740,_0xb3047a={}){if(!_0x3e5740)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb3047a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x5d0d4b,_0x2b426c={};if(_0xb3047a['files']&&_0xb3047a['files']['length']>0x0){const _0x2d8f6f=new FormData();_0x2d8f6f['append']('instructions',_0xb3047a['instructions']);for(const _0x46b74b of _0xb3047a['files']){_0x2d8f6f['append']('attachments',_0x46b74b);}_0x5d0d4b=_0x2d8f6f;}else _0x2b426c['Content-Type']='application/json',_0x5d0d4b=JSON['stringify']({'instructions':_0xb3047a['instructions']});const _0x21b158=await fetch(API_BASE+'/tasks/'+_0x3e5740+'/follow-up',{'method':'POST','headers':_0x2b426c,'body':_0x5d0d4b});if(!_0x21b158['ok']){const _0x486206=await _0x21b158['json']()['catch'](()=>({}));throw new Error(_0x486206['error']||_0x486206['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x21b158['statusText']);}return await _0x21b158['json']();},async 'getTaskRewindPoints'(_0x5539ec){if(!_0x5539ec)throw new Error('Task\x20ID\x20is\x20required');const _0xd08221=await fetch(API_BASE+'/tasks/'+_0x5539ec+'/rewind-points');if(!_0xd08221['ok']){const _0x34aecb=await _0xd08221['json']()['catch'](()=>({}));throw new Error(_0x34aecb['error']||_0x34aecb['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xd08221['statusText']);}return await _0xd08221['json']();},async 'rewindTask'(_0x466493,_0x3339b4={}){if(!_0x466493)throw new Error('Task\x20ID\x20is\x20required');const _0x326ba3=Number['isInteger'](_0x3339b4['targetFollowUpCount'])?_0x3339b4['targetFollowUpCount']:0x0,_0x3d1184={'targetFollowUpCount':_0x326ba3};typeof _0x3339b4['instructions']==='string'&&_0x3339b4['instructions']['trim']()&&(_0x3d1184['instructions']=_0x3339b4['instructions']['trim']());typeof _0x3339b4['rewindFiles']==='boolean'&&(_0x3d1184['rewindFiles']=_0x3339b4['rewindFiles']);const _0x275045=await fetch(API_BASE+'/tasks/'+_0x466493+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d1184)});if(!_0x275045['ok']){const _0x15c6c2=await _0x275045['json']()['catch'](()=>({}));throw new Error(_0x15c6c2['error']||_0x15c6c2['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x275045['statusText']);}return await _0x275045['json']();},async 'login'(_0x31f8e8,_0x3002b4){const _0xb27d98=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x31f8e8,'password':_0x3002b4})});if(!_0xb27d98['ok']){const _0x16262a=await _0xb27d98['json']();throw new Error(_0x16262a['message']||'Login\x20failed');}return await _0xb27d98['json']();},async 'logout'(){const _0x276f6f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x276f6f['ok']){const _0x5f3252=await _0x276f6f['json']();throw new Error(_0x5f3252['message']||'Logout\x20failed');}return await _0x276f6f['json']();},async 'getCurrentUser'(){const _0x52027e=await fetch(API_BASE+'/auth/me');if(!_0x52027e['ok'])throw new Error('Not\x20authenticated');const _0x250f4c=await _0x52027e['json']();return _0x250f4c['user'];},async 'getRolesInfo'(){const _0x2dc927=await fetch(API_BASE+'/users/roles');if(!_0x2dc927['ok']){const _0x334e30=await _0x2dc927['json']();throw new Error(_0x334e30['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2dc927['json']();},async 'getUsers'(){const _0x447b25=await fetch(API_BASE+'/users');if(!_0x447b25['ok']){const _0x228e28=await _0x447b25['json']();throw new Error(_0x228e28['message']||'Failed\x20to\x20get\x20users');}return await _0x447b25['json']();},async 'getUser'(_0x1efa7b){const _0x592812=await fetch(API_BASE+'/users/'+_0x1efa7b);if(!_0x592812['ok']){const _0x22090b=await _0x592812['json']();throw new Error(_0x22090b['message']||'Failed\x20to\x20get\x20user');}return await _0x592812['json']();},async 'createUser'(_0x3eef7f){const _0xcd94b0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3eef7f)});if(!_0xcd94b0['ok']){const _0x1a9ec1=await _0xcd94b0['json']();throw new Error(_0x1a9ec1['message']||'Failed\x20to\x20create\x20user');}return await _0xcd94b0['json']();},async 'updateUser'(_0x33607b,_0x42ddd0){const _0x1a4d6c=await fetch(API_BASE+'/users/'+_0x33607b,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42ddd0)});if(!_0x1a4d6c['ok']){const _0x22a5c3=await _0x1a4d6c['json']();throw new Error(_0x22a5c3['message']||'Failed\x20to\x20update\x20user');}return await _0x1a4d6c['json']();},async 'deleteUser'(_0x487040){const _0x49e296=await fetch(API_BASE+'/users/'+_0x487040,{'method':'DELETE'});if(!_0x49e296['ok']){const _0x3c976d=await _0x49e296['json']();throw new Error(_0x3c976d['message']||'Failed\x20to\x20delete\x20user');}return await _0x49e296['json']();},async 'stopAllContainers'(){const _0x5c0ea7=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0xfd1cf1=await _0x5c0ea7['json']()['catch'](()=>({}));if(!_0x5c0ea7['ok'])throw new Error(_0xfd1cf1['message']||_0xfd1cf1['error']||'Failed\x20to\x20stop\x20containers');return _0xfd1cf1;},async 'removeStoppedContainers'(){const _0x3f5b73=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5b78bc=await _0x3f5b73['json']()['catch'](()=>({}));if(!_0x3f5b73['ok'])throw new Error(_0x5b78bc['message']||_0x5b78bc['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5b78bc;},async 'pruneDockerResources'(){const _0x5e7633=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x509712=await _0x5e7633['json']()['catch'](()=>({}));if(!_0x5e7633['ok'])throw new Error(_0x509712['message']||_0x509712['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x509712;},async 'createPasswordToken'(_0xba54d,_0x447103='setup',_0x6944b=![]){const _0x17be97=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xba54d,'type':_0x447103,'sendEmail':_0x6944b})});if(!_0x17be97['ok']){const _0x7eb970=await _0x17be97['json']();throw new Error(_0x7eb970['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x17be97['json']();},async 'getEmailConfig'(){const _0x5a4c19=await fetch(API_BASE+'/password/email-config');if(!_0x5a4c19['ok']){const _0x20f9f4=await _0x5a4c19['json']();throw new Error(_0x20f9f4['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5a4c19['json']();},async 'updateTaskName'(_0x3365de,_0x429cd7){const _0x9f5401=await fetch(API_BASE+'/tasks/'+_0x3365de,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x429cd7})});if(!_0x9f5401['ok']){const _0xa453e7=await _0x9f5401['json']();throw new Error(_0xa453e7['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x9f5401['json']();},async 'pinTask'(_0x425b76,_0x4721fc,_0xdc3aa2=null){if(!_0x425b76)throw new Error('Task\x20ID\x20is\x20required');const _0xd44710={'pinned':_0x4721fc};_0xdc3aa2&&_0xdc3aa2['length']>0x0&&(_0xd44710['additionalTaskIds']=_0xdc3aa2);const _0x1f52c6=await fetch(API_BASE+'/tasks/'+_0x425b76+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd44710)});if(!_0x1f52c6['ok']){const _0x6bbaa7=await _0x1f52c6['json']();throw new Error(_0x6bbaa7['error']||'Failed\x20to\x20pin\x20task');}return await _0x1f52c6['json']();},async 'setTaskWinner'(_0x39e2d6,_0xfa33e2,_0x5de333=[]){if(!_0x39e2d6)throw new Error('Task\x20ID\x20is\x20required');const _0x38c557=await fetch(API_BASE+'/tasks/'+_0x39e2d6+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0xfa33e2,'siblings':_0x5de333})});if(!_0x38c557['ok']){const _0x381000=await _0x38c557['json']();throw new Error(_0x381000['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x38c557['json']();},async 'setTaskLoser'(_0x1e7f88,_0x2f242d){if(!_0x1e7f88)throw new Error('Task\x20ID\x20is\x20required');const _0x54050c=await fetch(API_BASE+'/tasks/'+_0x1e7f88+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2f242d})});if(!_0x54050c['ok']){const _0x421817=await _0x54050c['json']();throw new Error(_0x421817['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x54050c['json']();},async 'createTaskGroup'(_0x484682){const _0x869b30=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x484682)});if(!_0x869b30['ok']){const _0x1feb91=await _0x869b30['json']();throw new Error(_0x1feb91['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x869b30['json']();},async 'getTaskGroups'(_0x106d31={}){const _0x2f1556=new URLSearchParams();if(_0x106d31['userId'])_0x2f1556['set']('userId',String(_0x106d31['userId']));if(_0x106d31['status'])_0x2f1556['set']('status',String(_0x106d31['status']));if(_0x106d31['limit'])_0x2f1556['set']('limit',String(_0x106d31['limit']));const _0x231ee8=API_BASE+'/tasks/groups'+(_0x2f1556['toString']()?'?'+_0x2f1556['toString']():''),_0x3c7f3b=await fetch(_0x231ee8);if(!_0x3c7f3b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3c7f3b['json']();},async 'getTaskGroup'(_0x27cf30){const _0x53deff=await fetch(API_BASE+'/tasks/groups/'+_0x27cf30);if(!_0x53deff['ok']){const _0x583487=await _0x53deff['json']();throw new Error(_0x583487['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x53deff['json']();},async 'updateTaskGroup'(_0x28d3dd,_0x4d8ba4,_0x130dd3){const _0x484b8c=await fetch(API_BASE+'/tasks/'+_0x28d3dd+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4d8ba4,'groupIndex':_0x130dd3})});if(!_0x484b8c['ok']){const _0x4931b5=await _0x484b8c['json']();throw new Error(_0x4931b5['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x484b8c['json']();},async 'removeTaskFromGroup'(_0x35bf6d){return this['updateTaskGroup'](_0x35bf6d,null,null);},async 'deleteTaskGroup'(_0x48dabc,_0x155113=![]){const _0x3dc3ed=_0x155113?'?deleteTasks=true':'',_0x167e83=await fetch(API_BASE+'/tasks/groups/'+_0x48dabc+_0x3dc3ed,{'method':'DELETE'});if(!_0x167e83['ok']){const _0x43dcdd=await _0x167e83['json']();throw new Error(_0x43dcdd['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x32e8c1,_0x581fa1){const _0x3c4300=await fetch(API_BASE+'/tasks/groups/'+_0x32e8c1+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x581fa1})});if(!_0x3c4300['ok']){const _0x476d6c=await _0x3c4300['json']();throw new Error(_0x476d6c['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3c4300['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0xaad829){if(!_0xaad829)throw new Error('Task\x20ID\x20is\x20required');const _0x1fe6ec=await fetch(API_BASE+'/tasks/'+_0xaad829+'/comments');if(!_0x1fe6ec['ok']){const _0x122e90=await _0x1fe6ec['json']()['catch'](()=>({}));throw new Error(_0x122e90['error']||'Failed\x20to\x20get\x20comments');}return await _0x1fe6ec['json']();},async 'addComment'(_0x3d5f3e,_0x477547){if(!_0x3d5f3e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x477547)throw new Error('Comment\x20content\x20is\x20required');const _0x4a84a8=await fetch(API_BASE+'/tasks/'+_0x3d5f3e+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x477547})});if(!_0x4a84a8['ok']){const _0x27f489=await _0x4a84a8['json']()['catch'](()=>({}));throw new Error(_0x27f489['error']||'Failed\x20to\x20add\x20comment');}return await _0x4a84a8['json']();},async 'updateComment'(_0x5d684a,_0x40ec18,_0xc7eb3){if(!_0x5d684a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40ec18)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xc7eb3)throw new Error('Comment\x20content\x20is\x20required');const _0xa9dfef=await fetch(API_BASE+'/tasks/'+_0x5d684a+'/comments/'+_0x40ec18,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xc7eb3})});if(!_0xa9dfef['ok']){const _0x504f15=await _0xa9dfef['json']()['catch'](()=>({}));throw new Error(_0x504f15['error']||'Failed\x20to\x20update\x20comment');}return await _0xa9dfef['json']();},async 'deleteComment'(_0x4f7044,_0x47dcb1){if(!_0x4f7044)throw new Error('Task\x20ID\x20is\x20required');if(!_0x47dcb1)throw new Error('Comment\x20ID\x20is\x20required');const _0x4aba16=await fetch(API_BASE+'/tasks/'+_0x4f7044+'/comments/'+_0x47dcb1,{'method':'DELETE'});if(!_0x4aba16['ok']){const _0xc0b74f=await _0x4aba16['json']()['catch'](()=>({}));throw new Error(_0xc0b74f['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4aba16['json']();},async 'createObjective'(_0x517e33){const _0x4dc78e={'objective':!![],'name':_0x517e33['name']||'','environment':_0x517e33['environment']||null,'agents':_0x517e33['agents']||[],'branches':_0x517e33['branches']||{},'isPinned':_0x517e33['isPinned']||![],'parentObjectiveId':_0x517e33['parentObjectiveId']||null,'env_vars':_0x517e33['envVars']||{},'parameters':{'instructions':_0x517e33['instructions']||''},'files':_0x517e33['files']||[],'jira':_0x517e33['jira']||null};return this['createTask'](_0x4dc78e);},async 'updateObjective'(_0x103a4b,_0x3d107b,_0x59c92b=[],_0x264377=[]){let _0x47934f,_0x3d3c21={};const _0xd1de9d={..._0x3d107b};_0x264377&&_0x264377['length']>0x0&&(_0xd1de9d['removeAttachments']=_0x264377);if(_0x59c92b&&_0x59c92b['length']>0x0){const _0x457d22=new FormData();for(const [_0x253cb1,_0x579286]of Object['entries'](_0xd1de9d)){if(_0x579286==null)continue;typeof _0x579286==='object'?_0x457d22['append'](_0x253cb1,JSON['stringify'](_0x579286)):_0x457d22['append'](_0x253cb1,String(_0x579286));}for(const _0x440116 of _0x59c92b){_0x457d22['append']('attachments',_0x440116);}_0x47934f=_0x457d22;}else _0x3d3c21['Content-Type']='application/json',_0x47934f=JSON['stringify'](_0xd1de9d);const _0x489dd7=await fetch(API_BASE+'/tasks/'+_0x103a4b,{'method':'PATCH','headers':_0x3d3c21,'body':_0x47934f});if(!_0x489dd7['ok']){const _0x3457f8=await _0x489dd7['json']();throw new Error(_0x3457f8['error']||'Failed\x20to\x20update\x20objective');}return await _0x489dd7['json']();},async 'deleteObjective'(_0x416c57){return this['deleteTask'](_0x416c57);},async 'launchObjective'(_0x20c36e,_0x48807e={}){const _0x504dc3=await fetch(API_BASE+'/tasks/'+_0x20c36e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48807e)});if(!_0x504dc3['ok']){const _0x487756=await _0x504dc3['json']();throw new Error(_0x487756['error']||'Failed\x20to\x20launch\x20objective');}return await _0x504dc3['json']();},async 'getObjectiveAttachments'(_0x302903){return this['getTaskAttachments'](_0x302903);},async 'createJudgeTask'({environment:_0x4bb041,judgeAgent:_0x573596,groupId:_0x4a834c,taskIds:_0x3cc56c,judgeCustomInstructions:_0xb0d9a2,isPinned:_0x4fd9fb}){const _0x828c95=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4bb041,'judgeAgent':_0x573596,'groupId':_0x4a834c,'taskIds':_0x3cc56c,'judgeCustomInstructions':_0xb0d9a2,'isPinned':_0x4fd9fb})});if(!_0x828c95['ok']){const _0x4ce816=await _0x828c95['json']();throw new Error(_0x4ce816['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x828c95['json']();},async 'getJudgeTasks'(_0x468838){const _0xf6844e=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x468838));if(!_0xf6844e['ok']){const _0x268874=await _0xf6844e['json']();throw new Error(_0x268874['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xf6844e['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x587c76,_0x1dacf9,_0x544d88=''){const _0x1a7799=await fetch(API_BASE+'/tasks/'+_0x587c76+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x1dacf9,'customPreamble':_0x544d88})});if(!_0x1a7799['ok']){const _0x5b16a2=await _0x1a7799['json']();throw new Error(_0x5b16a2['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1a7799['json']();},async 'getJiraConfig'(){const _0x4c4a17=await fetch(API_BASE+'/jira/config');if(!_0x4c4a17['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4c4a17['json']();},async 'getJiraIssue'(_0x50c386){const _0x2be8e5=await fetch(API_BASE+'/jira/issues/'+_0x50c386);if(!_0x2be8e5['ok']){const _0x141606=await _0x2be8e5['json']()['catch'](()=>({}));throw new Error(_0x141606['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x2be8e5['statusText']);}return await _0x2be8e5['json']();},async 'searchJiraIssues'(_0x445ddb,_0x39155b=0x14){const _0xa7a591=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x445ddb,'maxResults':_0x39155b})});if(!_0xa7a591['ok']){const _0x4c0fe0=await _0xa7a591['json']()['catch'](()=>({}));throw new Error(_0x4c0fe0['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xa7a591['statusText']);}return await _0xa7a591['json']();},async 'postJiraComment'(_0x59a68d,_0x6fef2f){const _0x1bdfe9=await fetch(API_BASE+'/jira/issues/'+_0x59a68d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x6fef2f})});if(!_0x1bdfe9['ok']){const _0x209969=await _0x1bdfe9['json']()['catch'](()=>({}));throw new Error(_0x209969['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1bdfe9['statusText']);}return await _0x1bdfe9['json']();},async 'getJiraComments'(_0x2fc7de){const _0x2ae76b=await fetch(API_BASE+'/jira/issues/'+_0x2fc7de+'/comments');if(!_0x2ae76b['ok']){const _0x5150c8=await _0x2ae76b['json']()['catch'](()=>({}));throw new Error(_0x5150c8['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2ae76b['statusText']);}return await _0x2ae76b['json']();},async 'promptParameter'({environment:_0x2bd44a,command:_0x737610,parser:parser='json'}){const _0xb1e4d3=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2bd44a,'command':_0x737610,'parser':parser})});if(!_0xb1e4d3['ok']){const _0x50973b=await _0xb1e4d3['json']()['catch'](()=>({}));throw new Error(_0x50973b['message']||_0x50973b['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xb1e4d3['statusText']);}return await _0xb1e4d3['json']();},async 'promptParameterStream'(_0xd06eeb,_0x45731a){const _0x2ec1ba=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd06eeb)});if(!_0x2ec1ba['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2ec1ba['statusText']);const _0x4bc463=_0x2ec1ba['body']['getReader'](),_0x5ba90f=new TextDecoder();let _0x337e38='';return new Promise((_0x5ca753,_0x409b3d)=>{const _0x143d15=async()=>{try{const {done:_0x2aa525,value:_0x423447}=await _0x4bc463['read']();if(_0x2aa525)return;_0x337e38+=_0x5ba90f['decode'](_0x423447,{'stream':!![]});const _0x22b12c=_0x337e38['split']('\x0a\x0a');_0x337e38=_0x22b12c['pop']()||'';for(const _0x465135 of _0x22b12c){if(!_0x465135['trim']())continue;const _0x1a1214=_0x465135['split']('\x0a');let _0xf498e9='message',_0x3f4df7='';for(const _0x2862b7 of _0x1a1214){if(_0x2862b7['startsWith']('event:'))_0xf498e9=_0x2862b7['substring'](0x6)['trim']();else _0x2862b7['startsWith']('data:')&&(_0x3f4df7=_0x2862b7['substring'](0x5)['trim']());}if(!_0x3f4df7)continue;try{const _0x22b239=JSON['parse'](_0x3f4df7);if(_0xf498e9==='progress'&&_0x45731a)_0x45731a(_0x22b239['stage'],_0x22b239['message']);else{if(_0xf498e9==='result'){_0x5ca753(_0x22b239);return;}else{if(_0xf498e9==='error'){let _0x34b2aa=_0x22b239['message']||_0x22b239['error']||'Prompt\x20command\x20failed';_0x22b239['rawOutput']&&(_0x34b2aa+='\x0a\x0aRaw\x20output:\x0a'+_0x22b239['rawOutput']);_0x409b3d(new Error(_0x34b2aa));return;}}}}catch(_0x423d64){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x423d64),console['error']('Event\x20type:',_0xf498e9),console['error']('Event\x20data:',_0x3f4df7),console['error']('First\x20200\x20chars:',_0x3f4df7['substring'](0x0,0xc8)),_0x409b3d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x423d64['message']+'\x0a\x0aData:\x20'+_0x3f4df7['substring'](0x0,0x1f4)));return;}}_0x143d15();}catch(_0x1ef6bd){_0x409b3d(_0x1ef6bd);}};_0x143d15();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3c1ff3){const _0x129e92=await fetch(''+API_BASE+_0x3c1ff3);if(!_0x129e92['ok']){const _0x828a86=await _0x129e92['json']()['catch'](()=>({'error':_0x129e92['statusText']})),_0x4921ce=new Error(_0x828a86['error']||_0x828a86['message']||_0x129e92['statusText']);if(_0x828a86['detail']!==undefined)_0x4921ce['detail']=_0x828a86['detail'];throw _0x4921ce;}return await _0x129e92['json']();},async 'post'(_0x50d93c,_0x1a9a19){const _0x5757d6=await fetch(''+API_BASE+_0x50d93c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a9a19)});if(!_0x5757d6['ok']){const _0x52fefd=await _0x5757d6['json']()['catch'](()=>({'error':_0x5757d6['statusText']})),_0x575bf1=new Error(_0x52fefd['error']||_0x52fefd['message']||_0x5757d6['statusText']);if(_0x52fefd['detail']!==undefined)_0x575bf1['detail']=_0x52fefd['detail'];throw _0x575bf1;}return await _0x5757d6['json']();},async 'put'(_0x33da44,_0x44c6f2){const _0x1031f3=await fetch(''+API_BASE+_0x33da44,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44c6f2)});if(!_0x1031f3['ok']){const _0x1ea500=await _0x1031f3['json']()['catch'](()=>({'error':_0x1031f3['statusText']})),_0x347cfc=new Error(_0x1ea500['error']||_0x1ea500['message']||_0x1031f3['statusText']);if(_0x1ea500['detail']!==undefined)_0x347cfc['detail']=_0x1ea500['detail'];throw _0x347cfc;}return await _0x1031f3['json']();},async 'delete'(_0x230207,_0x1dbdfb){const _0x562f9b={'method':'DELETE'};_0x1dbdfb&&(_0x562f9b['headers']={'Content-Type':'application/json'},_0x562f9b['body']=JSON['stringify'](_0x1dbdfb));const _0x220da4=await fetch(''+API_BASE+_0x230207,_0x562f9b);if(!_0x220da4['ok']){const _0x1e2df4=await _0x220da4['json']()['catch'](()=>({'error':_0x220da4['statusText']})),_0x3bdeda=new Error(_0x1e2df4['error']||_0x1e2df4['message']||_0x220da4['statusText']);if(_0x1e2df4['detail']!==undefined)_0x3bdeda['detail']=_0x1e2df4['detail'];throw _0x3bdeda;}return await _0x220da4['json']();},async 'getSkills'(){const _0x381428=await fetch(API_BASE+'/skills');if(!_0x381428['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x381428['statusText']);return await _0x381428['json']();},async 'getSkill'(_0x4561e0){const _0x148980=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4561e0));if(!_0x148980['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x148980['statusText']);return await _0x148980['json']();},async 'createSkill'(_0x2e63e9){const _0x1d84cf=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e63e9)});if(!_0x1d84cf['ok']){const _0x42d6a9=await _0x1d84cf['json']()['catch'](()=>({'error':_0x1d84cf['statusText']})),_0x44735e=new Error(_0x42d6a9['error']||_0x42d6a9['message']||_0x1d84cf['statusText']);if(_0x42d6a9['detail']!==undefined)_0x44735e['detail']=_0x42d6a9['detail'];throw _0x44735e;}return await _0x1d84cf['json']();},async 'updateSkill'(_0x1b0559,_0x113463){const _0x5b676f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b0559),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x113463)});if(!_0x5b676f['ok']){const _0xbed103=await _0x5b676f['json']()['catch'](()=>({'error':_0x5b676f['statusText']})),_0x3711d0=new Error(_0xbed103['error']||_0xbed103['message']||_0x5b676f['statusText']);if(_0xbed103['detail']!==undefined)_0x3711d0['detail']=_0xbed103['detail'];throw _0x3711d0;}return await _0x5b676f['json']();},async 'deleteSkill'(_0x1d3db6){const _0x3e80db=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1d3db6),{'method':'DELETE'});if(!_0x3e80db['ok']){const _0x22ccf7=await _0x3e80db['json']()['catch'](()=>({'error':_0x3e80db['statusText']})),_0x42ff3f=new Error(_0x22ccf7['error']||_0x22ccf7['message']||_0x3e80db['statusText']);if(_0x22ccf7['detail']!==undefined)_0x42ff3f['detail']=_0x22ccf7['detail'];throw _0x42ff3f;}return await _0x3e80db['json']();},async 'getSkillFile'(_0x522174,_0x105d53){const _0x429475=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x522174)+'/files/'+_0x105d53);if(!_0x429475['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x429475['statusText']);return await _0x429475['json']();},async 'saveSkillFile'(_0x421f79,_0x2e1434,_0x36628e){const _0x4c86d9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x421f79)+'/files/'+_0x2e1434,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x36628e})});if(!_0x4c86d9['ok']){const _0x9b92b2=await _0x4c86d9['json']()['catch'](()=>({'error':_0x4c86d9['statusText']})),_0x4e1433=new Error(_0x9b92b2['error']||_0x9b92b2['message']||_0x4c86d9['statusText']);if(_0x9b92b2['detail']!==undefined)_0x4e1433['detail']=_0x9b92b2['detail'];throw _0x4e1433;}return await _0x4c86d9['json']();},async 'deleteSkillFile'(_0x716e51,_0x1e2c66){const _0x4c2323=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x716e51)+'/files/'+_0x1e2c66,{'method':'DELETE'});if(!_0x4c2323['ok']){const _0x1ac4f2=await _0x4c2323['json']()['catch'](()=>({'error':_0x4c2323['statusText']})),_0x3c356d=new Error(_0x1ac4f2['error']||_0x1ac4f2['message']||_0x4c2323['statusText']);if(_0x1ac4f2['detail']!==undefined)_0x3c356d['detail']=_0x1ac4f2['detail'];throw _0x3c356d;}return await _0x4c2323['json']();},async 'pullSkills'(){const _0x29c70d=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x29c70d['ok']){const _0x2a3fcc=await _0x29c70d['json']()['catch'](()=>({'error':_0x29c70d['statusText']})),_0x264c1a=new Error(_0x2a3fcc['error']||_0x2a3fcc['message']||_0x29c70d['statusText']);if(_0x2a3fcc['detail']!==undefined)_0x264c1a['detail']=_0x2a3fcc['detail'];throw _0x264c1a;}return await _0x29c70d['json']();},async 'commitSkills'(_0x1eea7c,_0x21640a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x21640a,_0x3ddf1c=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1eea7c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3ddf1c['ok']){const _0x210b1a=await _0x3ddf1c['json']()['catch'](()=>({'error':_0x3ddf1c['statusText']})),_0x13e9f1=new Error(_0x210b1a['error']||_0x210b1a['message']||_0x3ddf1c['statusText']);if(_0x210b1a['detail']!==undefined)_0x13e9f1['detail']=_0x210b1a['detail'];throw _0x13e9f1;}return await _0x3ddf1c['json']();},async 'discardSkillsChanges'(){const _0x26de02=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x26de02['ok']){const _0x4b5f04=await _0x26de02['json']()['catch'](()=>({'error':_0x26de02['statusText']})),_0x3a5045=new Error(_0x4b5f04['error']||_0x4b5f04['message']||_0x26de02['statusText']);if(_0x4b5f04['detail']!==undefined)_0x3a5045['detail']=_0x4b5f04['detail'];throw _0x3a5045;}return await _0x26de02['json']();},async 'getSkillCatalog'(){const _0x347dd3=await fetch(API_BASE+'/external-skills/catalog');if(!_0x347dd3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x347dd3['statusText']);return await _0x347dd3['json']();},async 'getImportedSkillsRegistry'(){const _0x408740=await fetch(API_BASE+'/external-skills/registry');if(!_0x408740['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x408740['statusText']);return await _0x408740['json']();},async 'importCatalogSkill'(_0x278a90){const _0x4f92e9=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x278a90})});if(!_0x4f92e9['ok']){const _0x4d651d=await _0x4f92e9['json']()['catch'](()=>({'error':_0x4f92e9['statusText']})),_0x135470=new Error(_0x4d651d['error']||_0x4d651d['message']||_0x4f92e9['statusText']);if(_0x4d651d['detail']!==undefined)_0x135470['detail']=_0x4d651d['detail'];throw _0x135470;}return await _0x4f92e9['json']();},async 'importSkillFromGit'(_0x52523d,_0x357ed4,_0x39abab='main',_0x3028a6=null){const _0x1503f0=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x52523d,'skillPath':_0x357ed4,'branch':_0x39abab,'skillId':_0x3028a6})});if(!_0x1503f0['ok']){const _0x13742f=await _0x1503f0['json']()['catch'](()=>({'error':_0x1503f0['statusText']})),_0x1db842=new Error(_0x13742f['error']||_0x13742f['message']||_0x1503f0['statusText']);if(_0x13742f['detail']!==undefined)_0x1db842['detail']=_0x13742f['detail'];throw _0x1db842;}return await _0x1503f0['json']();},async 'probeMarketplace'(_0x17e4cf,_0xbe4c3d='main'){const _0x2b6dd9=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x17e4cf,'branch':_0xbe4c3d})});if(!_0x2b6dd9['ok']){const _0x1aca12=await _0x2b6dd9['json']()['catch'](()=>({'error':_0x2b6dd9['statusText']})),_0x3f75ae=new Error(_0x1aca12['error']||_0x1aca12['message']||_0x2b6dd9['statusText']);if(_0x1aca12['detail']!==undefined)_0x3f75ae['detail']=_0x1aca12['detail'];throw _0x3f75ae;}return await _0x2b6dd9['json']();},async 'importMarketplaceBundle'(_0xf5ad2d,_0x1a902d,_0x123118,_0x16a855=null){const _0x54d86f=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xf5ad2d,'branch':_0x1a902d,'bundleId':_0x123118,'selectedSkills':_0x16a855})});if(!_0x54d86f['ok']){const _0x28fb48=await _0x54d86f['json']()['catch'](()=>({'error':_0x54d86f['statusText']})),_0x2ccc57=new Error(_0x28fb48['error']||_0x28fb48['message']||_0x54d86f['statusText']);if(_0x28fb48['detail']!==undefined)_0x2ccc57['detail']=_0x28fb48['detail'];throw _0x2ccc57;}return await _0x54d86f['json']();},async 'importSkillFromFolder'(_0x44f02c,_0x4f4703=null){const _0x27233c=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x44f02c,'skillId':_0x4f4703})});if(!_0x27233c['ok']){const _0x3e6670=await _0x27233c['json']()['catch'](()=>({'error':_0x27233c['statusText']})),_0x1500a6=new Error(_0x3e6670['error']||_0x3e6670['message']||_0x27233c['statusText']);if(_0x3e6670['detail']!==undefined)_0x1500a6['detail']=_0x3e6670['detail'];throw _0x1500a6;}return await _0x27233c['json']();},async 'importSkillFromNpm'(_0x32b281,_0x213333='latest',_0x2c9904=null,_0x3867e4=null){const _0x119e13=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x32b281,'version':_0x213333,'skillId':_0x2c9904,'registry':_0x3867e4})});if(!_0x119e13['ok']){const _0x4ec8be=await _0x119e13['json']()['catch'](()=>({'error':_0x119e13['statusText']})),_0x222af3=new Error(_0x4ec8be['error']||_0x4ec8be['message']||_0x119e13['statusText']);if(_0x4ec8be['detail']!==undefined)_0x222af3['detail']=_0x4ec8be['detail'];throw _0x222af3;}return await _0x119e13['json']();},async 'checkSkillUpdates'(_0x5a5689){const _0x474093=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5a5689)+'/check-updates',{'method':'POST'});if(!_0x474093['ok']){const _0x2e0855=await _0x474093['json']()['catch'](()=>({'error':_0x474093['statusText']})),_0x1e46ac=new Error(_0x2e0855['error']||_0x2e0855['message']||_0x474093['statusText']);if(_0x2e0855['detail']!==undefined)_0x1e46ac['detail']=_0x2e0855['detail'];throw _0x1e46ac;}return await _0x474093['json']();},async 'updateExternalSkill'(_0x2067fd){const _0x329aa7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2067fd)+'/update',{'method':'POST'});if(!_0x329aa7['ok']){const _0x353afc=await _0x329aa7['json']()['catch'](()=>({'error':_0x329aa7['statusText']})),_0x2c3896=new Error(_0x353afc['error']||_0x353afc['message']||_0x329aa7['statusText']);if(_0x353afc['detail']!==undefined)_0x2c3896['detail']=_0x353afc['detail'];throw _0x2c3896;}return await _0x329aa7['json']();},async 'updateSkillFlags'(_0x5f3a74,_0x405861){const _0x3a89aa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5f3a74)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x405861})});if(!_0x3a89aa['ok']){const _0x7ea689=await _0x3a89aa['json']()['catch'](()=>({'error':_0x3a89aa['statusText']})),_0x144000=new Error(_0x7ea689['error']||_0x7ea689['message']||_0x3a89aa['statusText']);if(_0x7ea689['detail']!==undefined)_0x144000['detail']=_0x7ea689['detail'];throw _0x144000;}return await _0x3a89aa['json']();},async 'removeFromImportedRegistry'(_0x40957b){const _0x491275=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x40957b)+'/registry',{'method':'DELETE'});if(!_0x491275['ok']){const _0x36a40b=await _0x491275['json']()['catch'](()=>({'error':_0x491275['statusText']})),_0x1e95e2=new Error(_0x36a40b['error']||_0x36a40b['message']||_0x491275['statusText']);if(_0x36a40b['detail']!==undefined)_0x1e95e2['detail']=_0x36a40b['detail'];throw _0x1e95e2;}return await _0x491275['json']();},async 'getTeams'(){const _0x19587d=await fetch(API_BASE+'/teams');if(!_0x19587d['ok']){const _0x389376=await _0x19587d['json']()['catch'](()=>({'message':_0x19587d['statusText']}));throw new Error(_0x389376['message']||'Failed\x20to\x20get\x20teams');}return await _0x19587d['json']();},async 'getTeam'(_0x5cbf98){const _0x1abe12=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5cbf98));if(!_0x1abe12['ok']){const _0x57d0a7=await _0x1abe12['json']()['catch'](()=>({'message':_0x1abe12['statusText']}));throw new Error(_0x57d0a7['message']||'Failed\x20to\x20get\x20team');}return await _0x1abe12['json']();},async 'createTeam'(_0x3a13d5){const _0x6bf09f=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a13d5)});if(!_0x6bf09f['ok']){const _0x41d5a2=await _0x6bf09f['json']()['catch'](()=>({'message':_0x6bf09f['statusText']}));throw new Error(_0x41d5a2['message']||'Failed\x20to\x20create\x20team');}return await _0x6bf09f['json']();},async 'updateTeam'(_0x2b5c36,_0x2d1cc7){const _0x4628a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b5c36),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d1cc7)});if(!_0x4628a2['ok']){const _0x2aeddb=await _0x4628a2['json']()['catch'](()=>({'message':_0x4628a2['statusText']}));throw new Error(_0x2aeddb['message']||'Failed\x20to\x20update\x20team');}return await _0x4628a2['json']();},async 'deleteTeam'(_0x44c701){const _0x1a4009=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x44c701),{'method':'DELETE'});if(!_0x1a4009['ok']){const _0x591f38=await _0x1a4009['json']()['catch'](()=>({'message':_0x1a4009['statusText']}));throw new Error(_0x591f38['message']||'Failed\x20to\x20delete\x20team');}return await _0x1a4009['json']();},async 'addTeamMember'(_0x3700e7,_0x2b849c){const _0x329213=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3700e7)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2b849c})});if(!_0x329213['ok']){const _0x2f8fa3=await _0x329213['json']()['catch'](()=>({'message':_0x329213['statusText']}));throw new Error(_0x2f8fa3['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x329213['json']();},async 'removeTeamMember'(_0x41de8c,_0x7bb887){const _0x4a5971=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x41de8c)+'/members/'+encodeURIComponent(_0x7bb887),{'method':'DELETE'});if(!_0x4a5971['ok']){const _0x306eca=await _0x4a5971['json']()['catch'](()=>({'message':_0x4a5971['statusText']}));throw new Error(_0x306eca['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4a5971['json']();},async 'getBindings'(_0x54f9b6={}){const _0x5db84f=new URLSearchParams();if(_0x54f9b6['resource_type'])_0x5db84f['set']('resource_type',_0x54f9b6['resource_type']);if(_0x54f9b6['resource_id'])_0x5db84f['set']('resource_id',_0x54f9b6['resource_id']);if(_0x54f9b6['subject_type'])_0x5db84f['set']('subject_type',_0x54f9b6['subject_type']);if(_0x54f9b6['subject_id'])_0x5db84f['set']('subject_id',_0x54f9b6['subject_id']);const _0x4de104=_0x5db84f['toString'](),_0x499c2c=await fetch(API_BASE+'/bindings'+(_0x4de104?'?'+_0x4de104:''));if(!_0x499c2c['ok']){const _0x42142f=await _0x499c2c['json']()['catch'](()=>({'message':_0x499c2c['statusText']}));throw new Error(_0x42142f['message']||'Failed\x20to\x20get\x20bindings');}return await _0x499c2c['json']();},async 'createBinding'(_0x3072d0){const _0x33d64b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3072d0)});if(!_0x33d64b['ok']){const _0x34cd35=await _0x33d64b['json']()['catch'](()=>({'message':_0x33d64b['statusText']}));throw new Error(_0x34cd35['message']||'Failed\x20to\x20create\x20binding');}return await _0x33d64b['json']();},async 'updateBinding'(_0x548e01,_0x43f7ce){const _0x47f39b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x548e01),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43f7ce)});if(!_0x47f39b['ok']){const _0x40e75d=await _0x47f39b['json']()['catch'](()=>({'message':_0x47f39b['statusText']}));throw new Error(_0x40e75d['message']||'Failed\x20to\x20update\x20binding');}return await _0x47f39b['json']();},async 'deleteBinding'(_0x122143){const _0x275e57=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x122143),{'method':'DELETE'});if(!_0x275e57['ok']){const _0x432566=await _0x275e57['json']()['catch'](()=>({'message':_0x275e57['statusText']}));throw new Error(_0x432566['message']||'Failed\x20to\x20delete\x20binding');}return await _0x275e57['json']();},async 'getRoleDefinitions'(){const _0xbda060=await fetch(API_BASE+'/roles');if(!_0xbda060['ok']){const _0x477e72=await _0xbda060['json']()['catch'](()=>({'message':_0xbda060['statusText']}));throw new Error(_0x477e72['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xbda060['json']();},async 'getRoleDefinition'(_0x16a7a5){const _0x56d69e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x16a7a5));if(!_0x56d69e['ok']){const _0x5ee600=await _0x56d69e['json']()['catch'](()=>({'message':_0x56d69e['statusText']}));throw new Error(_0x5ee600['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x56d69e['json']();},async 'createRoleDefinition'(_0xd221f3){const _0x404ec5=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd221f3)});if(!_0x404ec5['ok']){const _0x13217e=await _0x404ec5['json']()['catch'](()=>({'message':_0x404ec5['statusText']}));throw new Error(_0x13217e['message']||_0x13217e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x404ec5['json']();},async 'updateRoleDefinition'(_0x358ff4,_0x26f110){const _0x327957=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x358ff4),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26f110)});if(!_0x327957['ok']){const _0x4a5af5=await _0x327957['json']()['catch'](()=>({'message':_0x327957['statusText']}));throw new Error(_0x4a5af5['message']||_0x4a5af5['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x327957['json']();},async 'deleteRoleDefinition'(_0x2f0d57){const _0x5e0383=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2f0d57),{'method':'DELETE'});if(!_0x5e0383['ok']){const _0xb2f665=await _0x5e0383['json']()['catch'](()=>({'message':_0x5e0383['statusText']}));throw new Error(_0xb2f665['message']||_0xb2f665['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x5e0383['json']();},async 'getAvailablePermissions'(){const _0x533d81=await fetch(API_BASE+'/roles/available-permissions');if(!_0x533d81['ok']){const _0x208b40=await _0x533d81['json']()['catch'](()=>({'message':_0x533d81['statusText']}));throw new Error(_0x208b40['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x533d81['json']();},async 'getGitProviderAllowedTeams'(_0x51982c){const _0x5f0b50=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x51982c)+'/allowed-teams');if(!_0x5f0b50['ok']){const _0xe98061=await _0x5f0b50['json']()['catch'](()=>({'message':_0x5f0b50['statusText']}));throw new Error(_0xe98061['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5f0b50['json']();},async 'setGitProviderAllowedTeams'(_0x24ffc9,_0x324a80){const _0x46771f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x24ffc9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x324a80})});if(!_0x46771f['ok']){const _0xd28db4=await _0x46771f['json']()['catch'](()=>({'message':_0x46771f['statusText']}));throw new Error(_0xd28db4['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x46771f['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 _0x344900=toastState['baseBottom'];toastState['toasts']['forEach'](_0x435af2=>{_0x435af2['el']['style']['bottom']=_0x344900+'px';const _0xff551=_0x435af2['el']['offsetHeight']||toastState['defaultHeight'];_0x344900+=_0xff551+toastState['gap'];});});}function removeToastById(_0x3e00cf){const _0x2ef120=toastState['toasts']['findIndex'](_0x28a26e=>_0x28a26e['id']===_0x3e00cf);if(_0x2ef120===-0x1)return;const _0x342d71=toastState['toasts'][_0x2ef120];if(_0x342d71['timeoutId'])clearTimeout(_0x342d71['timeoutId']);_0x342d71['el']['classList']['remove']('show'),setTimeout(()=>_0x342d71['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2ef120,0x1),repositionAllToasts();}function registerToast(_0x39d585){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x39d585),repositionAllToasts(),_0x39d585['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(_0x4947fa){if(_0x4947fa===null||_0x4947fa===undefined)return'';return String(_0x4947fa)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x32a4b6,_0x312aeb){if(_0x32a4b6&&typeof _0x32a4b6==='object'&&!Array['isArray'](_0x32a4b6))return{'code':typeof _0x32a4b6['text']==='string'?_0x32a4b6['text']:'','language':typeof _0x32a4b6['lang']==='string'?_0x32a4b6['lang']:''};return{'code':typeof _0x32a4b6==='string'?_0x32a4b6:'','language':typeof _0x312aeb==='string'?_0x312aeb:''};}function buildMermaidBlock(_0x9a1762){const _0x11f14e=String(_0x9a1762||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x11f14e))+'\x22>'+escapeHtmlValue(_0x11f14e)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x392c34=new marked['Renderer'](),_0x2bc123=_0x392c34['code']['bind'](_0x392c34);return _0x392c34['code']=function(_0x3122a0,_0x492ffe,..._0x2a3c67){const {code:_0x4e62d4,language:_0xb11a33}=getMarkdownCodeBlockPayload(_0x3122a0,_0x492ffe),_0x1b713b=String(_0xb11a33||'')['trim']()['toLowerCase']();if(_0x1b713b==='mermaid')return buildMermaidBlock(_0x4e62d4);const _0x1e4add=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1e4add&&_0x1b713b)try{const _0x11882f=_0x1e4add['getLanguage'](_0x1b713b)?_0x1b713b:'plaintext',_0x1e11b4=_0x1e4add['highlight'](_0x4e62d4,{'language':_0x11882f})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1b713b)+'\x22>'+_0x1e11b4+'</code></pre>';}catch(_0x1105af){console['error']('Syntax\x20highlighting\x20error:',_0x1105af);}return _0x2bc123(_0x3122a0,_0x492ffe,..._0x2a3c67);},sharedMarkedRenderer=_0x392c34,_0x392c34;}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 _0x41a11a=window['mermaid'];if(!_0x41a11a||typeof _0x41a11a['initialize']!=='function')return _0x41a11a||null;return _0x41a11a['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x41a11a;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x3a3505,_0x2df75b)=>{const _0x11e16e=()=>_0x3a3505(configureMermaidInstance()),_0x176721=()=>{mermaidLoadPromise=null,_0x2df75b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x531134=document['getElementById'](MERMAID_SCRIPT_ID);!_0x531134&&(_0x531134=document['createElement']('script'),_0x531134['id']=MERMAID_SCRIPT_ID,_0x531134['src']=MERMAID_SCRIPT_SRC,_0x531134['async']=!![],document['head']['appendChild'](_0x531134));if(window['mermaid']){_0x11e16e();return;}_0x531134['addEventListener']('load',_0x11e16e,{'once':!![]}),_0x531134['addEventListener']('error',_0x176721,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4c4d62){const _0x3e2789=_0x4c4d62['getAttribute']('data-mermaid-source');if(!_0x3e2789)return null;let _0x1d6b6a=_0x3e2789;try{_0x1d6b6a=decodeURIComponent(_0x3e2789);}catch{}return _0x4c4d62['textContent']=_0x1d6b6a,_0x4c4d62['removeAttribute']('data-processed'),_0x4c4d62['removeAttribute']('aria-roledescription'),_0x4c4d62['removeAttribute']('role'),_0x4c4d62['removeAttribute']('aria-label'),_0x1d6b6a;}function collectMermaidNodes(_0x23a0c0,_0x50f099){if(!(_0x23a0c0 instanceof Element))return;_0x23a0c0['matches']('.mermaid[data-mermaid-source]')&&_0x50f099['add'](_0x23a0c0),_0x23a0c0['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3ff5d6=>{_0x50f099['add'](_0x3ff5d6);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x1d5580=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xd934c2=>setTimeout(_0xd934c2,0x0);_0x1d5580(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3dfaf7=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3dfaf7);});});}function queueMermaidRender(_0x5d853e){const _0x337187=new Set();_0x5d853e instanceof Document||_0x5d853e instanceof DocumentFragment?_0x5d853e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5da542=>_0x337187['add'](_0x5da542)):collectMermaidNodes(_0x5d853e,_0x337187);if(_0x337187['size']===0x0)return;_0x337187['forEach'](_0x526be8=>pendingMermaidNodes['add'](_0x526be8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x106ac7=Array['from'](pendingMermaidNodes)['filter'](_0x38d3b7=>_0x38d3b7['isConnected']);pendingMermaidNodes['clear']();if(_0x106ac7['length']===0x0)return;const _0x1b449f=await loadMermaid();if(!_0x1b449f)return;configureMermaidInstance();const _0x322123=getMermaidTheme();for(const _0xad8470 of _0x106ac7){const _0x862247=_0xad8470['getAttribute']('data-mermaid-source');if(!_0x862247)continue;const _0x5a9384=_0xad8470['getAttribute']('data-processed')==='true';if(_0x5a9384&&_0xad8470['dataset']['mermaidTheme']===_0x322123)continue;restoreMermaidSource(_0xad8470);try{if(typeof _0x1b449f['run']==='function')await _0x1b449f['run']({'nodes':[_0xad8470]});else typeof _0x1b449f['init']==='function'&&_0x1b449f['init'](undefined,[_0xad8470]);_0xad8470['dataset']['mermaidTheme']=_0x322123,delete _0xad8470['dataset']['mermaidError'];}catch(_0x1cf238){console['error']('Mermaid\x20render\x20failed:',_0x1cf238),restoreMermaidSource(_0xad8470),_0xad8470['dataset']['mermaidError']='true',delete _0xad8470['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xac5186=>{_0xac5186['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0xac5186);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x12ea9d=>{_0x12ea9d['forEach'](_0x353b10=>{_0x353b10['addedNodes']['forEach'](_0x169b33=>{_0x169b33['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x169b33);});});}),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'(_0x9efbbe){const _0x1693a6=new Date(_0x9efbbe),_0x4fe98b=new Date(),_0xe179d=_0x4fe98b-_0x1693a6,_0x4f4925=Math['floor'](_0xe179d/0x3e8),_0x56b7fe=Math['floor'](_0x4f4925/0x3c),_0x572de9=Math['floor'](_0x56b7fe/0x3c),_0x1c39c3=Math['floor'](_0x572de9/0x18);if(_0x4f4925<0x3c)return'now';if(_0x56b7fe<0x3c)return _0x56b7fe+'m\x20ago';if(_0x572de9<0x18)return _0x572de9+'h\x20ago';return _0x1c39c3+'d\x20ago';},'getStatusIcon'(_0x389617){switch(_0x389617){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3fbe71){switch(_0x3fbe71){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'(_0x46585d,_0x352c7e=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1ba749={};_0x1ba749['text/plain']=new Blob([_0x46585d],{'type':'text/plain'});_0x352c7e&&(_0x1ba749['text/html']=new Blob([_0x352c7e],{'type':'text/html'}));const _0x5ea660=new ClipboardItem(_0x1ba749);return await navigator['clipboard']['write']([_0x5ea660]),!![];}catch(_0xc80507){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xc80507);}try{const _0xcc013f=_0x2a3032=>{_0x2a3032['preventDefault'](),_0x2a3032['clipboardData']['setData']('text/plain',_0x46585d),_0x352c7e&&_0x2a3032['clipboardData']['setData']('text/html',_0x352c7e);};document['addEventListener']('copy',_0xcc013f);const _0x26726f=document['execCommand']('copy');document['removeEventListener']('copy',_0xcc013f);if(_0x26726f)return!![];}catch(_0x56c056){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x56c056);}try{const _0x50de16=document['createElement']('textarea');_0x50de16['value']=_0x46585d,_0x50de16['style']['position']='fixed',_0x50de16['style']['opacity']='0',_0x50de16['style']['pointerEvents']='none',document['body']['appendChild'](_0x50de16),_0x50de16['select']();const _0xcdf81f=document['execCommand']('copy');return document['body']['removeChild'](_0x50de16),_0xcdf81f;}catch(_0x372baf){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x372baf),![];}},'showToast'(_0x3750f5,_0x26177c='info'){const _0x51a9be=getNextToastId(),_0x5d8d73=document['createElement']('div');_0x5d8d73['className']='toast\x20toast-'+_0x26177c,_0x5d8d73['textContent']=_0x3750f5,_0x5d8d73['dataset']['toastId']=_0x51a9be,document['body']['appendChild'](_0x5d8d73);const _0x4026ed=_0x26177c==='error'?0x2710:0xbb8,_0x17ce37=setTimeout(()=>{removeToastById(_0x51a9be);},_0x4026ed),_0x3970f0={'id':_0x51a9be,'el':_0x5d8d73,'timeoutId':_0x17ce37};return registerToast(_0x3970f0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5d8d73['classList']['add']('show');});}),_0x51a9be;},'showError'(_0x291f79){console['error'](_0x291f79);const _0x412c04=typeof _0x291f79==='string'?_0x291f79:_0x291f79['message']||'An\x20error\x20occurred';this['showToast'](_0x412c04,'error');},'showSuccess'(_0x45888a){this['showToast'](_0x45888a,'success');},'capitalize'(_0xeab409){if(!_0xeab409)return'';return _0xeab409['charAt'](0x0)['toUpperCase']()+_0xeab409['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x40496d){return escapeHtmlValue(_0x40496d);},'ansiToHtml'(_0x2d3769){if(_0x2d3769===null||_0x2d3769===undefined)return'';let _0x198f71=this['escapeHtml'](_0x2d3769);const _0xf1dc52={'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'},_0x2da1c3={'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 _0x5d9ac9=0x0;return _0x198f71=_0x198f71['replace'](/\x1b\[([0-9;]*)m/g,(_0x3c020d,_0x3c91bd)=>{if(!_0x3c91bd||_0x3c91bd==='0'){const _0x476314='</span>'['repeat'](_0x5d9ac9);return _0x5d9ac9=0x0,_0x476314;}const _0x4afc18=_0x3c91bd['split'](';'),_0x38c830=[];for(const _0xe6b293 of _0x4afc18){if(_0xe6b293==='1')_0x38c830['push']('font-weight:bold');else{if(_0xe6b293==='2')_0x38c830['push']('opacity:0.7');else{if(_0xe6b293==='3')_0x38c830['push']('font-style:italic');else{if(_0xe6b293==='4')_0x38c830['push']('text-decoration:underline');else{if(_0xe6b293==='9')_0x38c830['push']('text-decoration:line-through');else{if(_0xf1dc52[_0xe6b293])_0x38c830['push']('color:'+_0xf1dc52[_0xe6b293]);else{if(_0x2da1c3[_0xe6b293])_0x38c830['push']('background-color:'+_0x2da1c3[_0xe6b293]);}}}}}}}if(_0x38c830['length']>0x0)return _0x5d9ac9++,'<span\x20style=\x22'+_0x38c830['join'](';')+'\x22>';return'';}),_0x198f71+='</span>'['repeat'](_0x5d9ac9),_0x198f71=_0x198f71['replace'](/\\u001b\[([0-9;]*)m/g,(_0x13c475,_0x156547)=>{if(!_0x156547||_0x156547==='0')return'';const _0x35d051=_0x156547['split'](';'),_0x4c7566=[];for(const _0x1ec952 of _0x35d051){if(_0x1ec952==='1')_0x4c7566['push']('font-weight:bold');else{if(_0xf1dc52[_0x1ec952])_0x4c7566['push']('color:'+_0xf1dc52[_0x1ec952]);else{if(_0x2da1c3[_0x1ec952])_0x4c7566['push']('background-color:'+_0x2da1c3[_0x1ec952]);}}}if(_0x4c7566['length']>0x0)return'<span\x20style=\x22'+_0x4c7566['join'](';')+'\x22>';return'';}),_0x198f71;},'showModal'({title:_0x1cbafc,content:_0x42236d,buttons:buttons=[]}){const _0x5a5250='\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'](_0x1cbafc)+'</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'+_0x42236d+'\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']((_0x297e80,_0x58e90f)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x297e80['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x58e90f+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x297e80['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',_0x45b195=document['createElement']('div');_0x45b195['id']='utils-modal',_0x45b195['className']='modal',_0x45b195['innerHTML']=_0x5a5250,document['body']['appendChild'](_0x45b195);const _0x350202=document['getElementById']('utils-modal-close');_0x350202&&_0x350202['addEventListener']('click',()=>this['hideModal']());const _0x380eed=_0x45b195['querySelectorAll']('[data-btn-index]');_0x380eed['forEach'](_0x40396d=>{const _0x1a4181=parseInt(_0x40396d['dataset']['btnIndex']);buttons[_0x1a4181]?.['onClick']&&_0x40396d['addEventListener']('click',buttons[_0x1a4181]['onClick']);});const _0x524598=document['getElementById']('utils-modal-overlay');_0x524598&&_0x524598['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x512a4d=document['getElementById']('utils-modal');_0x512a4d&&_0x512a4d['remove']();},'parseKeyValuePairs'(_0x1a8d09){const _0x35a481={};if(!_0x1a8d09)return _0x35a481;return _0x1a8d09['split'](/\r?\n/)['map'](_0x5d515a=>_0x5d515a['trim']())['filter'](Boolean)['forEach'](_0x45c2a6=>{const _0x16e7bf=_0x45c2a6['indexOf']('=');if(_0x16e7bf>0x0){const _0x5cb69b=_0x45c2a6['slice'](0x0,_0x16e7bf)['trim'](),_0x4d0378=_0x45c2a6['slice'](_0x16e7bf+0x1)['trim']();if(_0x5cb69b)_0x35a481[_0x5cb69b]=_0x4d0378;}}),_0x35a481;},'debounce'(_0x3c7a1a,_0x4aaa7b=0xfa){let _0x2c6291=null;return(..._0x355a7c)=>{clearTimeout(_0x2c6291),_0x2c6291=setTimeout(()=>_0x3c7a1a['apply'](this,_0x355a7c),_0x4aaa7b);};},'formatTimestamp'(_0x51d0b6){if(!_0x51d0b6)return'N/A';const _0x329a86=new Date(_0x51d0b6);return _0x329a86['toLocaleDateString']()+'\x20'+_0x329a86['toLocaleTimeString']();},'getQueryParams'(){const _0x51942b=new URLSearchParams(window['location']['search']),_0x5338b1={};for(const [_0x4dfb1a,_0xdcb44a]of _0x51942b){_0x5338b1[_0x4dfb1a]=_0xdcb44a;}return _0x5338b1;},'formatDuration'(_0x3ff272,_0x21401b){if(!_0x3ff272)return'N/A';const _0x575a5f=new Date(_0x3ff272),_0x26ef1b=_0x21401b?new Date(_0x21401b):new Date(),_0x2fd6cc=_0x26ef1b-_0x575a5f;if(_0x2fd6cc<0x0)return'0s';const _0x285684=Math['floor'](_0x2fd6cc/0x3e8),_0x239c53=Math['floor'](_0x285684/0x3c),_0x120c91=Math['floor'](_0x239c53/0x3c),_0x12ea7f=Math['floor'](_0x120c91/0x18);if(_0x285684<0x3c)return _0x285684+'s';if(_0x239c53<0x3c)return _0x239c53+'m\x20'+_0x285684%0x3c+'s';if(_0x120c91<0x18)return _0x120c91+'h\x20'+_0x239c53%0x3c+'m\x20'+_0x285684%0x3c+'s';return _0x12ea7f+'d\x20'+_0x120c91%0x18+'h\x20'+_0x239c53%0x3c+'m';},'renderMarkdown'(_0x580345,_0x2a92ae={}){if(!_0x580345)return'';_0x580345=this['rewriteAttachmentLinks'](_0x580345,_0x2a92ae),_0x580345=this['rewriteColorSyntax'](_0x580345);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x580345,_0x2a92ae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x580345);}catch(_0x3618c0){return console['error']('Markdown\x20parsing\x20error:',_0x3618c0),this['renderMarkdownFallback'](_0x580345,_0x2a92ae);}},'rewriteAttachmentLinks'(_0x37d6d8,_0x3937f4={}){const _0x12f12c=typeof _0x3937f4['resolveAttachmentUrl']==='function'?_0x3937f4['resolveAttachmentUrl']:_0x3937f4['taskId']?_0x103636=>API_BASE+'/tasks/'+_0x3937f4['taskId']+'/attachments/'+encodeURIComponent(_0x103636):null;if(!_0x12f12c)return _0x37d6d8;return String(_0x37d6d8)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x242280,_0x9dcf5e)=>{const _0x327920=String(_0x9dcf5e||'')['trim']();if(!_0x327920)return _0x242280;let _0x213611=_0x327920;try{_0x213611=decodeURIComponent(_0x327920);}catch{}const _0x4e357e=_0x12f12c(_0x213611);if(!_0x4e357e)return _0x242280;return']('+_0x4e357e+')';});},'rewriteColorSyntax'(_0x45c142){if(!_0x45c142)return _0x45c142;return String(_0x45c142)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x38716d,_0x23be16,_0x1fec9c)=>{const _0x323753=this['rewriteColorSyntax'](_0x1fec9c);return'<span\x20style=\x22color:\x20'+_0x23be16+'\x22>'+_0x323753+'</span>';});},'renderMarkdownFallback'(_0x2c0860,_0x47fc4c={}){if(!_0x2c0860)return'';_0x2c0860=_0x2c0860['replace'](/\r\n/g,'\x0a'),_0x2c0860=_0x2c0860['replace'](/\r/g,'\x0a'),_0x2c0860=this['rewriteAttachmentLinks'](_0x2c0860,_0x47fc4c);let _0x3bdcfb=this['escapeHtml'](_0x2c0860);return _0x3bdcfb=_0x3bdcfb['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3bdcfb=_0x3bdcfb['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3bdcfb=_0x3bdcfb['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3bdcfb=_0x3bdcfb['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3bdcfb=_0x3bdcfb['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3bdcfb=_0x3bdcfb['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3bdcfb=_0x3bdcfb['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3bdcfb=_0x3bdcfb['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3bdcfb=_0x3bdcfb['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3bdcfb=_0x3bdcfb['replace'](/\n\n/g,'</p><p>'),_0x3bdcfb=_0x3bdcfb['replace'](/\n/g,'<br>'),'<p>'+_0x3bdcfb+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3512d4=new Uint8Array(0x10);crypto['getRandomValues'](_0x3512d4),_0x3512d4[0x6]=_0x3512d4[0x6]&0xf|0x40,_0x3512d4[0x8]=_0x3512d4[0x8]&0x3f|0x80;const _0x211beb=Array['from'](_0x3512d4,_0x3a610d=>_0x3a610d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x211beb['slice'](0x0,0x8)+'-'+_0x211beb['slice'](0x8,0xc)+'-'+_0x211beb['slice'](0xc,0x10)+'-'+_0x211beb['slice'](0x10,0x14)+'-'+_0x211beb['slice'](0x14);}};export class CustomSelect{constructor(_0x1ad0b4,_0x4297e8={}){this['nativeSelect']=_0x1ad0b4,this['options']=_0x4297e8,this['isOpen']=![],this['selectedValue']=_0x1ad0b4['value']||'',this['searchable']=_0x4297e8['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0xd9cee5=document['createElement']('div');_0xd9cee5['className']='custom-select';const _0x5152ad=document['createElement']('div');_0x5152ad['className']='custom-select-trigger',_0x5152ad['setAttribute']('tabindex','0'),_0x5152ad['setAttribute']('role','button'),_0x5152ad['setAttribute']('aria-haspopup','listbox');const _0x267518=document['createElement']('span');_0x267518['className']='custom-select-trigger-text';const _0x24bca4=document['createElement']('span');_0x24bca4['className']='custom-select-arrow',_0x24bca4['textContent']='▼',_0x5152ad['appendChild'](_0x267518),_0x5152ad['appendChild'](_0x24bca4);const _0x1ac0b4=document['createElement']('div');_0x1ac0b4['className']='custom-select-dropdown',_0x1ac0b4['setAttribute']('role','listbox');if(this['searchable']){const _0x7f1796=document['createElement']('div');_0x7f1796['className']='custom-select-search';const _0x24afa0=document['createElement']('input');_0x24afa0['type']='text',_0x24afa0['className']='custom-select-search-input',_0x24afa0['placeholder']='Type\x20to\x20search...',_0x24afa0['setAttribute']('aria-label','Search\x20options'),_0x24afa0['addEventListener']('input',_0x936666=>{this['searchQuery']=_0x936666['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x24afa0['addEventListener']('keydown',_0x242fb5=>{if(_0x242fb5['key']==='Escape')_0x242fb5['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x242fb5['key']==='Enter'){_0x242fb5['preventDefault'](),_0x242fb5['stopPropagation']();const _0x1da4ab=_0x1ac0b4['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1da4ab){const _0x3d054e=_0x1da4ab['getAttribute']('data-value');this['select'](_0x3d054e);}}}}),_0x7f1796['appendChild'](_0x24afa0),_0x1ac0b4['appendChild'](_0x7f1796),this['searchInput']=_0x24afa0;}const _0x28c34b=document['createElement']('div');_0x28c34b['className']='custom-select-options',_0x1ac0b4['appendChild'](_0x28c34b),_0xd9cee5['appendChild'](_0x5152ad),_0xd9cee5['appendChild'](_0x1ac0b4),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0xd9cee5,this['nativeSelect']),this['wrapper']=_0xd9cee5,this['trigger']=_0x5152ad,this['triggerText']=_0x267518,this['dropdown']=_0x1ac0b4,this['optionsContainer']=_0x28c34b,_0x5152ad['addEventListener']('click',()=>this['toggle']()),_0x5152ad['addEventListener']('keydown',_0xbfc325=>this['handleKeydown'](_0xbfc325)),document['addEventListener']('click',_0x358a54=>{!_0xd9cee5['contains'](_0x358a54['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x25f20d=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x25f20d['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x44b919=new MutationObserver(()=>{this['updateDisabledState']();});_0x44b919['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x42c82f=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x42c82f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3ed07c=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3ed07c),this['trigger']['setAttribute']('aria-disabled',_0x3ed07c?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3ed07c?'-1':'0'),_0x3ed07c&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2fffe6=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x8d71cf=_0x2fffe6['filter'](_0x5e36f0=>!_0x5e36f0['disabled']&&!_0x5e36f0['hidden']);_0x2fffe6['forEach']((_0x395043,_0x24341a)=>{const _0x2fd42d=document['createElement']('div');_0x2fd42d['className']='custom-select-option',_0x2fd42d['textContent']=_0x395043['textContent'],_0x2fd42d['setAttribute']('data-value',_0x395043['value']),_0x2fd42d['setAttribute']('data-index',_0x24341a),_0x2fd42d['setAttribute']('role','option'),_0x395043['disabled']?_0x2fd42d['classList']['add']('disabled'):_0x2fd42d['addEventListener']('click',()=>this['select'](_0x395043['value'])),_0x395043['value']===this['selectedValue']&&_0x2fd42d['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2fd42d),this['allOptions']['push']({'element':_0x2fd42d,'text':_0x395043['textContent']['toLowerCase'](),'value':_0x395043['value'],'disabled':_0x395043['disabled']});});if(this['searchable']&&this['searchInput']){const _0x54af67=this['searchInput']['parentElement'];_0x8d71cf['length']>0x3?_0x54af67['style']['display']='':_0x54af67['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x26b7d5=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3c7204=>{if(!_0x26b7d5||_0x3c7204['disabled'])_0x3c7204['element']['style']['display']='';else{const _0x3ea67f=_0x3c7204['text']['includes'](_0x26b7d5);_0x3c7204['element']['style']['display']=_0x3ea67f?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x43f169){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x43f169,this['nativeSelect']['value']=_0x43f169;const _0x554a03=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x554a03),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x359b60=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x359b60&&(this['triggerText']['textContent']=_0x359b60['textContent'],_0x359b60['disabled']||_0x359b60['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x207989=>{_0x207989['getAttribute']('data-value')===this['selectedValue']?_0x207989['classList']['add']('selected'):_0x207989['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 _0x109a3d=window['getComputedStyle'](this['dropdown']);if(_0x109a3d['position']==='fixed'){const _0x130ab7=this['trigger']['getBoundingClientRect'](),_0xe7e0b3=parseInt(_0x109a3d['maxHeight'])||0xc8,_0x5368db=window['innerHeight'],_0x3e4df2=_0x5368db-_0x130ab7['bottom'],_0x105899=_0x130ab7['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4e3c27;_0x3e4df2<_0xe7e0b3&&_0x105899>_0x3e4df2?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x5368db-_0x130ab7['top']+'px',_0x4e3c27=Math['min'](_0xe7e0b3,_0x105899-0xa),this['dropdown']['style']['maxHeight']=_0x4e3c27+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x130ab7['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4e3c27=Math['min'](_0xe7e0b3,_0x3e4df2-0xa),this['dropdown']['style']['maxHeight']=_0x4e3c27+'px');if(this['optionsContainer']){let _0x5ea2e2=_0x4e3c27;if(this['searchInput']){const _0x528be5=this['searchInput']['parentElement'];_0x528be5&&(_0x5ea2e2-=_0x528be5['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5ea2e2)+'px';}this['dropdown']['style']['left']=_0x130ab7['left']+'px',this['dropdown']['style']['width']=_0x130ab7['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x23152a=this['searchInput']['parentElement'];_0x23152a&&_0x23152a['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'](_0x46eba2){if(this['nativeSelect']['disabled'])return;if(_0x46eba2['key']==='Enter'||_0x46eba2['key']==='\x20')_0x46eba2['preventDefault'](),this['toggle']();else _0x46eba2['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5b5b80='\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',_0x5b5b80),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xf00283=document['getElementById']('confirm-dialog-close'),_0x3d6fae=document['getElementById']('confirm-dialog-cancel'),_0x44dc88=document['getElementById']('confirm-dialog-confirm'),_0x403f4e=this['_modal']['querySelector']('.modal-overlay');_0xf00283['addEventListener']('click',()=>this['_resolve'](![])),_0x3d6fae['addEventListener']('click',()=>this['_resolve'](![])),_0x44dc88['addEventListener']('click',()=>this['_resolve'](!![])),_0x403f4e['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x885363=>{if(_0x885363['key']==='Escape')_0x885363['preventDefault'](),this['_resolve'](![]);else _0x885363['key']==='Enter'&&(_0x885363['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x289e6b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x16df9a=>{this['_resolvePromise']=_0x16df9a,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x289e6b;const _0x30066c=document['getElementById']('confirm-dialog-cancel'),_0x53780f=document['getElementById']('confirm-dialog-confirm');_0x30066c['textContent']=cancelText,_0x53780f['textContent']=confirmText,_0x53780f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x53780f['focus']();});},'_resolve'(_0x547c3d){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x547c3d),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1a3f87,_0x3b0aa3={}){this['container']=_0x1a3f87,this['options']={'placeholder':_0x3b0aa3['placeholder']||'Type\x20to\x20search...','maxItems':_0x3b0aa3['maxItems']||0x64,'loadItems':_0x3b0aa3['loadItems']||(async()=>[]),'renderItem':_0x3b0aa3['renderItem']||(_0x30beef=>({'primary':String(_0x30beef),'secondary':''})),'onSelect':_0x3b0aa3['onSelect']||(()=>{}),'filterItems':_0x3b0aa3['filterItems']||null,'getItemValue':_0x3b0aa3['getItemValue']||(_0x250957=>_0x250957),'sortItems':_0x3b0aa3['sortItems']||null,'debounceMs':_0x3b0aa3['debounceMs']||0xc8,'minCharsForSearch':_0x3b0aa3['minCharsForSearch']||0x0,'emptyMessage':_0x3b0aa3['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x3b0aa3['loadingMessage']||'Loading...','preload':_0x3b0aa3['preload']!==![],'searchMode':_0x3b0aa3['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',_0x17a6e8=>this['onBlur'](_0x17a6e8)),this['input']['addEventListener']('input',_0x214723=>this['onInput'](_0x214723)),this['input']['addEventListener']('keydown',_0x2e8cdd=>this['onKeydown'](_0x2e8cdd)),this['clearBtn']['addEventListener']('mousedown',_0x516f03=>{_0x516f03['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x25f750=>{_0x25f750['preventDefault']();}),document['addEventListener']('click',_0x487260=>{!this['wrapper']['contains'](_0x487260['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(_0x7964ab){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x7964ab);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x37c759){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5cd13c){const _0x207a8b=_0x5cd13c['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x207a8b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x207a8b):this['loadAndShow'](_0x207a8b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4cf526){switch(_0x4cf526['key']){case'ArrowDown':_0x4cf526['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4cf526['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4cf526['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4cf526['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x37dc99){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x32dd83=this['selectedIndex']+_0x37dc99;if(_0x32dd83>=0x0&&_0x32dd83<this['filteredItems']['length']){this['selectedIndex']=_0x32dd83,this['updateSelectionHighlight']();const _0x1de69b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1de69b[this['selectedIndex']]&&_0x1de69b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2c684a=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2c684a['forEach']((_0x5aeaa5,_0x109dee)=>{_0x5aeaa5['classList']['toggle']('keyboard-selected',_0x109dee===this['selectedIndex']);});}async['loadAndShow'](_0x245ecb){this['showLoading']();try{const _0x38cb58=await this['options']['loadItems'](_0x245ecb);if(this['options']['searchMode']==='server'){let _0x28bba4=_0x38cb58;this['options']['sortItems']&&(_0x28bba4=this['options']['sortItems']([..._0x38cb58]));this['filteredItems']=_0x28bba4;const _0x32f56b=this['filteredItems']['length']>=this['options']['maxItems'];_0x32f56b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x32f56b),this['open']();}else this['allItems']=_0x38cb58,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x245ecb);}catch(_0x72ec37){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x72ec37),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x558629){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x558629):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5f06df=this['filteredItems']['length']>=this['options']['maxItems'];_0x5f06df&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5f06df),this['open']();}['renderItems'](_0x5cb050){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']((_0x3607bb,_0x55cbc8)=>{const _0x4df8fd=document['createElement']('div');_0x4df8fd['className']='autocomplete-select-item',_0x4df8fd['setAttribute']('role','option'),_0x4df8fd['setAttribute']('data-index',_0x55cbc8);const _0x64c304=this['options']['renderItem'](_0x3607bb);let _0x3591b2='';_0x64c304['icon']&&(_0x3591b2='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x64c304['iconClass']||'')+'\x22>'+_0x64c304['icon']+'</span>'),_0x4df8fd['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3591b2+'\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'](_0x64c304['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x64c304['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x64c304['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x4df8fd['addEventListener']('click',()=>{this['selectItem'](_0x3607bb);}),_0x4df8fd['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x55cbc8,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x4df8fd);}),_0x5cb050?(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'](_0x5f11c8){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5f11c8)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x3c240a){this['selectedItem']=_0x3c240a;const _0x8ed926=this['options']['renderItem'](_0x3c240a);this['input']['value']=_0x8ed926['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x3c240a);}['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'](_0xd08b82){if(_0xd08b82){this['selectedItem']=_0xd08b82;const _0x2e4645=this['options']['renderItem'](_0xd08b82);this['input']['value']=_0x2e4645['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x582cf8){this['allItems']=_0x582cf8,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'](_0x225dbf){this['input']['placeholder']=_0x225dbf;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0xeaba9e=null){const _0x4f5c0c=document['getElementById']('admin-menu-container'),_0x40b87a=document['getElementById']('admin-menu-btn'),_0x193114=document['getElementById']('admin-menu');if(!_0x4f5c0c||!_0x40b87a||!_0x193114)return;try{!_0xeaba9e&&(_0xeaba9e=await API['getCurrentUser']());if(_0xeaba9e){const _0x175197=window['Permissions'],_0x2d99d8=_0x175197['hasServerPermission'](_0xeaba9e,'*')||_0x175197['hasEnvPermission'](_0xeaba9e,'environments:manage')||_0x175197['hasServerPermission'](_0xeaba9e,'users:create')||_0x175197['hasTeamPermission'](_0xeaba9e,'teams:manage')||_0x175197['hasEnvPermission'](_0xeaba9e,'environments:view_details');if(!_0x2d99d8)return;_0x4f5c0c['hidden']=![];if(!_0x175197['hasServerPermission'](_0xeaba9e,'*')){const _0x1fa734=_0x193114['querySelectorAll']('.admin-menu-item');_0x1fa734['forEach'](_0x2f7e03=>{const _0x1c21d5=_0x2f7e03['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1c21d5==='Users'&&!_0x175197['hasServerPermission'](_0xeaba9e,'users:create')&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Skills'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Server\x20Settings'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Server\x20Health'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Git\x20History'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Roles'&&(_0x2f7e03['hidden']=!![]);});}_0x40b87a['addEventListener']('click',_0x2728ed=>{_0x2728ed['stopPropagation']();const _0x469deb=document['getElementById']('actions-menu');if(_0x469deb)_0x469deb['hidden']=!![];_0x193114['hidden']=!_0x193114['hidden'];}),document['addEventListener']('click',_0x242925=>{!_0x193114['hidden']&&!_0x40b87a['contains'](_0x242925['target'])&&!_0x193114['contains'](_0x242925['target'])&&(_0x193114['hidden']=!![]);}),document['addEventListener']('keydown',_0x186167=>{_0x186167['key']==='Escape'&&!_0x193114['hidden']&&(_0x193114['hidden']=!![]);});const _0x424684=document['getElementById']('server-health-btn');_0x424684&&_0x424684['addEventListener']('click',async()=>{_0x193114['hidden']=!![];const {openServerHealthModal:_0x3cface}=await import('./server-health.js');_0x3cface();});}}catch(_0x5834bb){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5834bb['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};