@profoundlogic/coderflow-server 0.6.6 → 0.6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/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
  179. package/dist/start.js.bak +0 -1381
@@ -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 _0x16a5bb=window['location']['pathname'],_0x1166bd=_0x16a5bb['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1166bd)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1166bd[0x1]),_0x1166bd[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xdab3ea={}){const _0x57cd7f=new URLSearchParams();_0xdab3ea['userId']&&_0x57cd7f['set']('userId',String(_0xdab3ea['userId']));_0xdab3ea['automation']&&_0x57cd7f['set']('automation',String(_0xdab3ea['automation']));const _0x2b6e9b=API_BASE+'/tasks/stats'+(_0x57cd7f['toString']()?'?'+_0x57cd7f['toString']():''),_0x4a0fb3=await fetch(_0x2b6e9b);if(!_0x4a0fb3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4a0fb3['statusText']);return await _0x4a0fb3['json']();},async 'getTasks'(_0x4ba6d4={}){const _0x10309b=new URLSearchParams();_0x4ba6d4['status']&&_0x10309b['set']('status',String(_0x4ba6d4['status']));_0x4ba6d4['environment']&&_0x10309b['set']('environment',String(_0x4ba6d4['environment']));_0x4ba6d4['automation']&&_0x10309b['set']('automation',String(_0x4ba6d4['automation']));if(_0x4ba6d4['include']){const _0x2487d4=Array['isArray'](_0x4ba6d4['include'])?_0x4ba6d4['include']['join'](','):String(_0x4ba6d4['include']);_0x2487d4&&_0x10309b['set']('include',_0x2487d4);}_0x4ba6d4['filter']&&_0x10309b['set']('filter',String(_0x4ba6d4['filter']));_0x4ba6d4['page']&&_0x10309b['set']('page',String(_0x4ba6d4['page']));_0x4ba6d4['limit']&&_0x10309b['set']('limit',String(_0x4ba6d4['limit']));_0x4ba6d4['userId']&&_0x10309b['set']('userId',String(_0x4ba6d4['userId']));_0x4ba6d4['search']&&_0x10309b['set']('search',String(_0x4ba6d4['search']));_0x4ba6d4['includeChildTasks']&&_0x10309b['set']('includeChildTasks','true');const _0x452868=API_BASE+'/tasks'+(_0x10309b['toString']()?'?'+_0x10309b['toString']():''),_0x4a1414=await fetch(_0x452868);if(!_0x4a1414['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4a1414['statusText']);return await _0x4a1414['json']();},async 'getAutomations'(_0x5b0899={}){const _0x582c33=new URLSearchParams();_0x5b0899['environment']&&_0x582c33['set']('environment',String(_0x5b0899['environment']));const _0x427adf=await fetch(API_BASE+'/api/automations'+(_0x582c33['toString']()?'?'+_0x582c33['toString']():''));if(!_0x427adf['ok']){const _0x4e17ac=await _0x427adf['json']()['catch'](()=>({}));throw new Error(_0x4e17ac['message']||_0x4e17ac['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x427adf['statusText']);}return await _0x427adf['json']();},async 'getAutomation'(_0x29324e){const _0x222d77=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x29324e));if(!_0x222d77['ok']){const _0x52209b=await _0x222d77['json']()['catch'](()=>({}));throw new Error(_0x52209b['message']||_0x52209b['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x222d77['statusText']);}return await _0x222d77['json']();},async 'createAutomation'(_0x3e7812){const _0x4e5ad9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e7812||{})});if(!_0x4e5ad9['ok']){const _0x2dac86=await _0x4e5ad9['json']()['catch'](()=>({}));throw new Error(_0x2dac86['message']||_0x2dac86['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x4e5ad9['statusText']);}return await _0x4e5ad9['json']();},async 'updateAutomation'(_0x77de56,_0x1b743f){const _0x5e02c3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x77de56),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b743f||{})});if(!_0x5e02c3['ok']){const _0xa9a115=await _0x5e02c3['json']()['catch'](()=>({}));throw new Error(_0xa9a115['message']||_0xa9a115['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x5e02c3['statusText']);}return await _0x5e02c3['json']();},async 'deleteAutomation'(_0x4e6e1c){const _0x5f2596=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e6e1c),{'method':'DELETE'});if(!_0x5f2596['ok']){const _0x564693=await _0x5f2596['json']()['catch'](()=>({}));throw new Error(_0x564693['message']||_0x564693['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5f2596['statusText']);}return await _0x5f2596['json']();},async 'triggerAutomation'(_0x14c910){const _0x4292fd=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x14c910)+'/trigger',{'method':'POST'});if(!_0x4292fd['ok']){const _0x3206fd=await _0x4292fd['json']()['catch'](()=>({}));throw new Error(_0x3206fd['message']||_0x3206fd['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4292fd['statusText']);}return await _0x4292fd['json']();},async 'setAutomationEnabled'(_0x37dede,_0x22e6aa){const _0x4571e7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x37dede)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x22e6aa})});if(!_0x4571e7['ok']){const _0x3b76ba=await _0x4571e7['json']()['catch'](()=>({}));throw new Error(_0x3b76ba['message']||_0x3b76ba['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4571e7['statusText']);}return await _0x4571e7['json']();},async 'getAutomationHistory'(_0x1d5554,_0x2fe09=0x32){const _0x5c16a1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1d5554)+'/history?limit='+encodeURIComponent(String(_0x2fe09)));if(!_0x5c16a1['ok']){const _0x44cf61=await _0x5c16a1['json']()['catch'](()=>({}));throw new Error(_0x44cf61['message']||_0x44cf61['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5c16a1['statusText']);}return await _0x5c16a1['json']();},async 'getTask'(_0x34e931,_0x16a293={}){const _0x27a30e=new URLSearchParams();if(_0x16a293['include']){const _0x255f25=Array['isArray'](_0x16a293['include'])?_0x16a293['include']['join'](','):String(_0x16a293['include']);if(_0x255f25)_0x27a30e['set']('include',_0x255f25);}const _0x12afd6=await fetch(API_BASE+'/tasks/'+_0x34e931+(_0x27a30e['toString']()?'?'+_0x27a30e['toString']():''));if(!_0x12afd6['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x12afd6['statusText']);return await _0x12afd6['json']();},async 'getTaskResults'(_0x21ffb6){const _0x291738=await fetch(API_BASE+'/tasks/'+_0x21ffb6+'/results');if(!_0x291738['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x291738['statusText']);return await _0x291738['json']();},async 'getTaskPatches'(_0x4b9f66){const _0x5bea7e=await fetch(API_BASE+'/tasks/'+_0x4b9f66+'/patches');if(!_0x5bea7e['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5bea7e['statusText']);return await _0x5bea7e['json']();},async 'getTaskAttachments'(_0x2228c0){const _0x522b74=await fetch(API_BASE+'/tasks/'+_0x2228c0+'/attachments');if(!_0x522b74['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x522b74['statusText']);return await _0x522b74['json']();},async 'uploadAttachments'(_0x37ed01,_0x3f005e){const _0x271fb5=new FormData();for(const _0x5f59df of _0x3f005e){_0x271fb5['append']('attachments',_0x5f59df);}const _0x2e8fec=await fetch(API_BASE+'/tasks/'+_0x37ed01+'/attachments',{'method':'POST','body':_0x271fb5});if(!_0x2e8fec['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2e8fec['statusText']);return await _0x2e8fec['json']();},async 'isAINameGenerationAvailable'(){try{const _0x52f359=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x52f359['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x52f359['json']();}catch(_0xa6d14d){return{'available':![],'reason':_0xa6d14d['message']};}},async 'generateTaskName'(_0xcc1eb7){try{const _0x7b28e4=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0xcc1eb7})});return await _0x7b28e4['json']();}catch(_0x50c24e){return{'success':![],'error':_0x50c24e['message']};}},async 'createTask'(_0x434094){let _0x46305c,_0x5957ce={};if(_0x434094['files']&&_0x434094['files']['length']>0x0){const _0x41dfdf=new FormData();for(const [_0x39113a,_0x65f3fb]of Object['entries'](_0x434094)){if(_0x39113a!=='files'){if(_0x65f3fb==null)continue;typeof _0x65f3fb==='object'?_0x41dfdf['append'](_0x39113a,JSON['stringify'](_0x65f3fb)):_0x41dfdf['append'](_0x39113a,String(_0x65f3fb));}}for(const _0x481ff9 of _0x434094['files']){_0x41dfdf['append']('attachments',_0x481ff9);}_0x46305c=_0x41dfdf;}else _0x5957ce['Content-Type']='application/json',_0x46305c=JSON['stringify'](_0x434094);const _0x6c5c19=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5957ce,'body':_0x46305c});if(!_0x6c5c19['ok']){const _0x17173a=await _0x6c5c19['json'](),_0x38bb29=new Error(_0x17173a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x6c5c19['statusText']),{message:_0x1a171d,..._0x4e8ec4}=_0x17173a;Object['assign'](_0x38bb29,_0x4e8ec4);throw _0x38bb29;}return await _0x6c5c19['json']();},async 'createTestTask'(_0xd23af0){const _0x16636d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd23af0)});if(!_0x16636d['ok']){const _0x433907=await _0x16636d['json']();throw new Error(_0x433907['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x16636d['statusText']);}return await _0x16636d['json']();},async 'createEphemeralTest'(_0x307b54){const _0x4e5972=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x307b54)});if(!_0x4e5972['ok']){const _0x35f82a=await _0x4e5972['json']();throw new Error(_0x35f82a['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4e5972['statusText']);}return await _0x4e5972['json']();},async 'createDeployTask'(_0x3b1b64){const _0x5dd642=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b1b64)});if(!_0x5dd642['ok']){const _0x276d40=await _0x5dd642['json']();throw new Error(_0x276d40['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5dd642['statusText']);}return await _0x5dd642['json']();},async 'getEnvironments'(){const _0xf306bf=await fetch(API_BASE+'/environments');if(!_0xf306bf['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xf306bf['statusText']);return await _0xf306bf['json']();},async 'getEnvironment'(_0xbcf113){const _0x222acc=await fetch(API_BASE+'/environments/'+_0xbcf113);if(!_0x222acc['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x222acc['statusText']);return await _0x222acc['json']();},async 'getEnvironmentRepoHistory'(_0xc0a49f,_0x2b8605,_0x2fc718={}){if(!_0xc0a49f||!_0x2b8605)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x27153c=new URLSearchParams();if(_0x2fc718['limit'])_0x27153c['set']('limit',String(_0x2fc718['limit']));if(_0x2fc718['offset'])_0x27153c['set']('offset',String(_0x2fc718['offset']));if(_0x2fc718['search'])_0x27153c['set']('search',String(_0x2fc718['search']));if(_0x2fc718['branch'])_0x27153c['set']('branch',String(_0x2fc718['branch']));const _0x4c17c9=API_BASE+'/environments/'+encodeURIComponent(_0xc0a49f)+'/repos/'+encodeURIComponent(_0x2b8605)+'/git/history',_0x4b8c3c=await fetch(''+_0x4c17c9+(_0x27153c['toString']()?'?'+_0x27153c['toString']():''));if(!_0x4b8c3c['ok']){const _0x4de6a0=await _0x4b8c3c['json']()['catch'](()=>({}));throw new Error(_0x4de6a0['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4b8c3c['statusText']);}return await _0x4b8c3c['json']();},async 'getEnvironmentRepoCommit'(_0x3879ce,_0x258fbf,_0xbf0d41){if(!_0x3879ce||!_0x258fbf||!_0xbf0d41)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4bee1a=API_BASE+'/environments/'+encodeURIComponent(_0x3879ce)+'/repos/'+encodeURIComponent(_0x258fbf)+'/git/commits/'+encodeURIComponent(_0xbf0d41),_0xce2de2=await fetch(_0x4bee1a);if(!_0xce2de2['ok']){const _0x41e758=await _0xce2de2['json']()['catch'](()=>({}));throw new Error(_0x41e758['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0xce2de2['statusText']);}return await _0xce2de2['json']();},async 'getEnvironmentRepoBranches'(_0x2ddfcf,_0x31cc08){if(!_0x2ddfcf||!_0x31cc08)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x506b17=API_BASE+'/environments/'+encodeURIComponent(_0x2ddfcf)+'/repos/'+encodeURIComponent(_0x31cc08)+'/git/branches',_0x447b5d=await fetch(_0x506b17);if(!_0x447b5d['ok']){const _0x585ac5=await _0x447b5d['json']()['catch'](()=>({}));throw new Error(_0x585ac5['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x447b5d['statusText']);}return await _0x447b5d['json']();},async 'revertEnvironmentRepoCommit'(_0x137770,_0x3a26c7,_0x2ec324,_0x2b3fe4={}){if(!_0x137770||!_0x3a26c7||!_0x2ec324)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2b1c62=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x137770)+'/repos/'+encodeURIComponent(_0x3a26c7)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2ec324,..._0x2b3fe4})});if(!_0x2b1c62['ok']){const _0x61a521=await _0x2b1c62['json']()['catch'](()=>({}));throw new Error(_0x61a521['message']||_0x61a521['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2b1c62['statusText']);}return await _0x2b1c62['json']();},async 'getTemplates'(_0x14b136={}){const _0x4bc08c=new URLSearchParams();if(_0x14b136['include']){const _0x1d06d6=Array['isArray'](_0x14b136['include'])?_0x14b136['include']['join'](','):String(_0x14b136['include']);if(_0x1d06d6)_0x4bc08c['set']('include',_0x1d06d6);}const _0x2d319f=await fetch(API_BASE+'/templates'+(_0x4bc08c['toString']()?'?'+_0x4bc08c['toString']():''));if(!_0x2d319f['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2d319f['statusText']);return await _0x2d319f['json']();},async 'getTemplatesForEnvironment'(_0x29c7e8,_0xc27596={}){if(!_0x29c7e8)throw new Error('Environment\x20name\x20is\x20required');const _0x22b6e2=new URLSearchParams();if(_0xc27596['include']){const _0x5af590=Array['isArray'](_0xc27596['include'])?_0xc27596['include']['join'](','):String(_0xc27596['include']);if(_0x5af590)_0x22b6e2['set']('include',_0x5af590);}const _0x2dc0a9=await fetch(API_BASE+'/templates/'+_0x29c7e8+(_0x22b6e2['toString']()?'?'+_0x22b6e2['toString']():''));if(!_0x2dc0a9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x29c7e8+':\x20'+_0x2dc0a9['statusText']);return await _0x2dc0a9['json']();},async 'getTemplate'(_0x3b4d56,_0x1ef3c2,_0x12ee8a={}){if(!_0x3b4d56||!_0x1ef3c2)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0xe1e7b5=new URLSearchParams();if(_0x12ee8a['include']){const _0x4db40f=Array['isArray'](_0x12ee8a['include'])?_0x12ee8a['include']['join'](','):String(_0x12ee8a['include']);if(_0x4db40f)_0xe1e7b5['set']('include',_0x4db40f);}const _0x453a12=await fetch(API_BASE+'/templates/'+_0x3b4d56+'/'+_0x1ef3c2+(_0xe1e7b5['toString']()?'?'+_0xe1e7b5['toString']():''));if(!_0x453a12['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x453a12['statusText']);return await _0x453a12['json']();},async 'getTaskLogs'(_0x165d3a,_0x57c0b8={}){if(!_0x165d3a)throw new Error('Task\x20ID\x20is\x20required');const _0x56060a=new URLSearchParams();_0x57c0b8['tail']&&_0x56060a['set']('tail',String(_0x57c0b8['tail']));const _0x42c386=await fetch(API_BASE+'/tasks/'+_0x165d3a+'/logs'+(_0x56060a['toString']()?'?'+_0x56060a['toString']():''));if(!_0x42c386['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x42c386['statusText']);return await _0x42c386['text']();},async 'getContainers'(){const _0x5e4d0f=await fetch(API_BASE+'/containers');if(!_0x5e4d0f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5e4d0f['statusText']);return await _0x5e4d0f['json']();},async 'getContainer'(_0x577b3b){const _0x33e663=await fetch(API_BASE+'/containers/'+_0x577b3b);if(!_0x33e663['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33e663['statusText']);return await _0x33e663['json']();},async 'startInteractiveContainer'(_0x2dc9c3){const _0x312882=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc9c3)});if(!_0x312882['ok']){const _0x51b62c=await _0x312882['json']()['catch'](()=>({}));throw new Error(_0x51b62c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x312882['statusText']);}return await _0x312882['json']();},async 'stopContainer'(_0x5e2053){const _0x4d1954=await fetch(API_BASE+'/containers/'+_0x5e2053,{'method':'DELETE'});if(!_0x4d1954['ok']){const _0x13f496=await _0x4d1954['json']()['catch'](()=>({}));throw new Error(_0x13f496['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4d1954['statusText']);}return await _0x4d1954['json']();},async 'stopTask'(_0x29586f){if(!_0x29586f)throw new Error('Task\x20ID\x20is\x20required');const _0x385f1e=await fetch(API_BASE+'/tasks/'+_0x29586f+'/stop',{'method':'POST'});if(!_0x385f1e['ok']){const _0x186518=await _0x385f1e['json']()['catch'](()=>({}));throw new Error(_0x186518['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x385f1e['statusText']);}return await _0x385f1e['json']();},async 'interruptTask'(_0x347371){if(!_0x347371)throw new Error('Task\x20ID\x20is\x20required');const _0x1c4069=await fetch(API_BASE+'/tasks/'+_0x347371+'/interrupt',{'method':'POST'});if(!_0x1c4069['ok']){const _0x2408cb=await _0x1c4069['json']()['catch'](()=>({}));throw new Error(_0x2408cb['error']||_0x2408cb['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x1c4069['statusText']);}return await _0x1c4069['json']();},async 'startTask'(_0x165412){if(!_0x165412)throw new Error('Task\x20ID\x20is\x20required');const _0x5125cb=await fetch(API_BASE+'/tasks/'+_0x165412+'/start',{'method':'POST'});if(!_0x5125cb['ok']){const _0x2102a9=await _0x5125cb['json']()['catch'](()=>({}));throw new Error(_0x2102a9['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5125cb['statusText']);}return await _0x5125cb['json']();},async 'deleteTask'(_0x1d69ee){if(!_0x1d69ee)throw new Error('Task\x20ID\x20is\x20required');const _0x48a762=await fetch(API_BASE+'/tasks/'+_0x1d69ee,{'method':'DELETE'});if(!_0x48a762['ok']){const _0x21467a=await _0x48a762['json']()['catch'](()=>({}));throw new Error(_0x21467a['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x48a762['statusText']);}return await _0x48a762['json']();},async 'refreshTasksFromDisk'(){const _0x3678e3=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3678e3['ok']){const _0x441e84=await _0x3678e3['json']()['catch'](()=>({}));throw new Error(_0x441e84['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3678e3['statusText']);}return await _0x3678e3['json']();},async 'approveTask'(_0x3638b4,_0x458334={}){if(!_0x3638b4)throw new Error('Task\x20ID\x20is\x20required');const _0x52c48e={'commit_message':_0x458334['commit_message']||'','pull':_0x458334['pull']??![],'push':_0x458334['push']??![]};_0x458334['new_branch']&&(_0x52c48e['new_branch']=_0x458334['new_branch']);const _0x4a77c6=await fetch(API_BASE+'/tasks/'+_0x3638b4+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52c48e)});if(!_0x4a77c6['ok']){const _0x484f89=await _0x4a77c6['json']()['catch'](()=>({}));let _0x2de24e=_0x484f89['error']||_0x484f89['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x4a77c6['statusText'];if(_0x484f89['results']&&Array['isArray'](_0x484f89['results'])){const _0x233467=_0x484f89['results']['filter'](_0x8df383=>!_0x8df383['success']&&_0x8df383['error']);_0x233467['length']>0x0&&(_0x2de24e=_0x233467[0x0]['error']);}throw new Error(_0x2de24e);}return await _0x4a77c6['json']();},async 'getPullRequestInfo'(_0x44b10c){if(!_0x44b10c)throw new Error('Task\x20ID\x20is\x20required');const _0x31b055=await fetch(API_BASE+'/tasks/'+_0x44b10c+'/pull-request-info');if(!_0x31b055['ok']){const _0x20888b=await _0x31b055['json']()['catch'](()=>({}));throw new Error(_0x20888b['error']||_0x20888b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x31b055['statusText']);}return await _0x31b055['json']();},async 'createPullRequests'(_0x1aeeb6,_0x28a4e2){if(!_0x1aeeb6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28a4e2||!Array['isArray'](_0x28a4e2))throw new Error('repos\x20array\x20is\x20required');const _0x3683e7=await fetch(API_BASE+'/tasks/'+_0x1aeeb6+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x28a4e2})});if(!_0x3683e7['ok']){const _0x5a9670=await _0x3683e7['json']()['catch'](()=>({}));let _0x1d3a4c=_0x5a9670['error']||_0x5a9670['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x3683e7['statusText'];if(_0x5a9670['results']&&Array['isArray'](_0x5a9670['results'])){const _0x5e3614=_0x5a9670['results']['filter'](_0x1f30f4=>!_0x1f30f4['success']&&_0x1f30f4['error']);_0x5e3614['length']>0x0&&(_0x1d3a4c=_0x5e3614[0x0]['error']);}throw new Error(_0x1d3a4c);}return await _0x3683e7['json']();},async 'syncRepos'(_0x37b37e){if(!_0x37b37e)throw new Error('Task\x20ID\x20is\x20required');const _0x467486=await fetch(API_BASE+'/tasks/'+_0x37b37e+'/sync-repos',{'method':'POST'});if(!_0x467486['ok']){const _0x1a5a92=await _0x467486['json']()['catch'](()=>({}));throw new Error(_0x1a5a92['error']||_0x1a5a92['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x467486['statusText']);}return await _0x467486['json']();},async 'getIbmiSyncInfo'(_0x36ed93){if(!_0x36ed93)throw new Error('Task\x20ID\x20is\x20required');const _0x1594c4=await fetch(API_BASE+'/tasks/'+_0x36ed93+'/ibmi-sync-info');if(!_0x1594c4['ok']){const _0x555c84=await _0x1594c4['json']()['catch'](()=>({}));throw new Error(_0x555c84['error']||_0x555c84['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1594c4['json']();},async 'getSyncFiles'(_0xcf8bd8){if(!_0xcf8bd8)throw new Error('Task\x20ID\x20is\x20required');const _0x5d4c59=await fetch(API_BASE+'/tasks/'+_0xcf8bd8+'/sync-to-ibmi/files');if(!_0x5d4c59['ok']){const _0xccc1aa=await _0x5d4c59['json']()['catch'](()=>({}));throw new Error(_0xccc1aa['error']||_0xccc1aa['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5d4c59['json']();},async 'syncToIbmi'(_0x54ae38,_0x550366,_0x3b7f5a=null,_0x573f8b=null,_0xefef92=null){if(!_0x54ae38)throw new Error('Task\x20ID\x20is\x20required');const _0x111789={'library':_0x550366};if(_0x3b7f5a)_0x111789['user']=_0x3b7f5a;if(_0x573f8b)_0x111789['password']=_0x573f8b;if(_0xefef92)_0x111789['files']=_0xefef92;const _0x42834f=await fetch(API_BASE+'/tasks/'+_0x54ae38+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x111789)});if(!_0x42834f['ok']){const _0x422c47=await _0x42834f['json']()['catch'](()=>({}));throw new Error(_0x422c47['error']||_0x422c47['message']||'Sync\x20failed');}return await _0x42834f['json']();},async 'getIbmiSyncLog'(_0x5b2c6e){if(!_0x5b2c6e)throw new Error('Task\x20ID\x20is\x20required');const _0x1706e3=await fetch(API_BASE+'/tasks/'+_0x5b2c6e+'/ibmi-sync-log');if(!_0x1706e3['ok']){const _0x4843c5=await _0x1706e3['json']()['catch'](()=>({}));throw new Error(_0x4843c5['error']||_0x4843c5['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1706e3['json']();},async 'pullChanges'(_0x5b50a1){if(!_0x5b50a1)throw new Error('Task\x20ID\x20is\x20required');const _0x10256b=await fetch(API_BASE+'/tasks/'+_0x5b50a1+'/pull-changes',{'method':'POST'});if(!_0x10256b['ok']){const _0x55a998=await _0x10256b['json']()['catch'](()=>({}));throw new Error(_0x55a998['error']||_0x55a998['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x10256b['statusText']);}return await _0x10256b['json']();},async 'readFile'(_0x49df15,_0x23ce0e){if(!_0x49df15)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23ce0e)throw new Error('File\x20path\x20is\x20required');const _0x421c6b=await fetch(API_BASE+'/tasks/'+_0x49df15+'/files?path='+encodeURIComponent(_0x23ce0e));if(!_0x421c6b['ok']){const _0x40de73=await _0x421c6b['json']()['catch'](()=>({}));throw new Error(_0x40de73['error']||_0x40de73['message']||'Failed\x20to\x20read\x20file:\x20'+_0x421c6b['statusText']);}return await _0x421c6b['json']();},'getTaskFileDownloadUrl'(_0x12552f,_0x34ca2f){if(!_0x12552f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34ca2f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x12552f+'/files/download?path='+encodeURIComponent(_0x34ca2f);},async 'writeFile'(_0x5a6d26,_0x49955b,_0x945752){if(!_0x5a6d26)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49955b)throw new Error('File\x20path\x20is\x20required');if(_0x945752===undefined)throw new Error('Content\x20is\x20required');const _0x2f157b=await fetch(API_BASE+'/tasks/'+_0x5a6d26+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49955b,'content':_0x945752})});if(!_0x2f157b['ok']){const _0x21dc3e=await _0x2f157b['json']()['catch'](()=>({}));throw new Error(_0x21dc3e['error']||_0x21dc3e['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2f157b['statusText']);}return await _0x2f157b['json']();},async 'uploadTaskFiles'(_0x17682d,_0x12d1b8,_0x73092f){if(!_0x17682d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x12d1b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x73092f||_0x73092f['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4b6a76=new FormData();_0x4b6a76['append']('targetDir',_0x12d1b8);for(const _0x54c681 of _0x73092f){_0x4b6a76['append']('files',_0x54c681,_0x54c681['name']);}const _0x279e07=await fetch(API_BASE+'/tasks/'+_0x17682d+'/files/upload',{'method':'POST','body':_0x4b6a76});if(!_0x279e07['ok']){const _0x2ed425=await _0x279e07['json']()['catch'](()=>({}));throw new Error(_0x2ed425['error']||_0x2ed425['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x279e07['statusText']);}return await _0x279e07['json']();},async 'deleteFile'(_0x4a2e47,_0x20211e){if(!_0x4a2e47)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20211e)throw new Error('File\x20path\x20is\x20required');const _0x5e5aa0=await fetch(API_BASE+'/tasks/'+_0x4a2e47+'/files?path='+encodeURIComponent(_0x20211e),{'method':'DELETE'});if(!_0x5e5aa0['ok']){const _0x1c1834=await _0x5e5aa0['json']()['catch'](()=>({}));throw new Error(_0x1c1834['error']||_0x1c1834['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5e5aa0['statusText']);}return await _0x5e5aa0['json']();},async 'discardFile'(_0x370a1a,_0x3f7fcb,_0x177409){if(!_0x370a1a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f7fcb)throw new Error('File\x20path\x20is\x20required');if(!_0x177409)throw new Error('Repository\x20path\x20is\x20required');const _0x5813f6=await fetch(API_BASE+'/tasks/'+_0x370a1a+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3f7fcb,'repoPath':_0x177409})});if(!_0x5813f6['ok']){const _0x3fd3ee=await _0x5813f6['json']()['catch'](()=>({}));throw new Error(_0x3fd3ee['error']||_0x3fd3ee['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x5813f6['statusText']);}return await _0x5813f6['json']();},async 'followUpTask'(_0x20fad1,_0x276fae={}){if(!_0x20fad1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x276fae['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2bb725,_0x27d68e={};if(_0x276fae['files']&&_0x276fae['files']['length']>0x0){const _0x4b3c6f=new FormData();_0x4b3c6f['append']('instructions',_0x276fae['instructions']);for(const _0x1a406b of _0x276fae['files']){_0x4b3c6f['append']('attachments',_0x1a406b);}_0x2bb725=_0x4b3c6f;}else _0x27d68e['Content-Type']='application/json',_0x2bb725=JSON['stringify']({'instructions':_0x276fae['instructions']});const _0x49f8f4=await fetch(API_BASE+'/tasks/'+_0x20fad1+'/follow-up',{'method':'POST','headers':_0x27d68e,'body':_0x2bb725});if(!_0x49f8f4['ok']){const _0xaf1962=await _0x49f8f4['json']()['catch'](()=>({}));throw new Error(_0xaf1962['error']||_0xaf1962['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x49f8f4['statusText']);}return await _0x49f8f4['json']();},async 'getTaskRewindPoints'(_0x4ced13){if(!_0x4ced13)throw new Error('Task\x20ID\x20is\x20required');const _0x517f81=await fetch(API_BASE+'/tasks/'+_0x4ced13+'/rewind-points');if(!_0x517f81['ok']){const _0x45a595=await _0x517f81['json']()['catch'](()=>({}));throw new Error(_0x45a595['error']||_0x45a595['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x517f81['statusText']);}return await _0x517f81['json']();},async 'rewindTask'(_0x4c7a04,_0x2fb75f={}){if(!_0x4c7a04)throw new Error('Task\x20ID\x20is\x20required');const _0x2dd541=Number['isInteger'](_0x2fb75f['targetFollowUpCount'])?_0x2fb75f['targetFollowUpCount']:0x0,_0x45a5a9={'targetFollowUpCount':_0x2dd541};typeof _0x2fb75f['instructions']==='string'&&_0x2fb75f['instructions']['trim']()&&(_0x45a5a9['instructions']=_0x2fb75f['instructions']['trim']());typeof _0x2fb75f['rewindFiles']==='boolean'&&(_0x45a5a9['rewindFiles']=_0x2fb75f['rewindFiles']);const _0x3c43dc=await fetch(API_BASE+'/tasks/'+_0x4c7a04+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45a5a9)});if(!_0x3c43dc['ok']){const _0x146cba=await _0x3c43dc['json']()['catch'](()=>({}));throw new Error(_0x146cba['error']||_0x146cba['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3c43dc['statusText']);}return await _0x3c43dc['json']();},async 'login'(_0x15766c,_0x2c7dd3){const _0x30aa0c=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x15766c,'password':_0x2c7dd3})});if(!_0x30aa0c['ok']){const _0x269f9d=await _0x30aa0c['json']();throw new Error(_0x269f9d['message']||'Login\x20failed');}return await _0x30aa0c['json']();},async 'logout'(){const _0x1b0dba=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1b0dba['ok']){const _0x47ddae=await _0x1b0dba['json']();throw new Error(_0x47ddae['message']||'Logout\x20failed');}return await _0x1b0dba['json']();},async 'getCurrentUser'(){const _0x1225dd=await fetch(API_BASE+'/auth/me');if(!_0x1225dd['ok'])throw new Error('Not\x20authenticated');const _0x296fbe=await _0x1225dd['json']();return _0x296fbe['user'];},async 'getRolesInfo'(){const _0x14bf93=await fetch(API_BASE+'/users/roles');if(!_0x14bf93['ok']){const _0x5d26f9=await _0x14bf93['json']();throw new Error(_0x5d26f9['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x14bf93['json']();},async 'getUsers'(){const _0x39f625=await fetch(API_BASE+'/users');if(!_0x39f625['ok']){const _0x527ee6=await _0x39f625['json']();throw new Error(_0x527ee6['message']||'Failed\x20to\x20get\x20users');}return await _0x39f625['json']();},async 'getUser'(_0x43f269){const _0x24ca2b=await fetch(API_BASE+'/users/'+_0x43f269);if(!_0x24ca2b['ok']){const _0x2c3cde=await _0x24ca2b['json']();throw new Error(_0x2c3cde['message']||'Failed\x20to\x20get\x20user');}return await _0x24ca2b['json']();},async 'createUser'(_0x4daa85){const _0x1165ce=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4daa85)});if(!_0x1165ce['ok']){const _0x27b9f3=await _0x1165ce['json']();throw new Error(_0x27b9f3['message']||'Failed\x20to\x20create\x20user');}return await _0x1165ce['json']();},async 'updateUser'(_0x3ceca6,_0x39d1c0){const _0x3166f3=await fetch(API_BASE+'/users/'+_0x3ceca6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39d1c0)});if(!_0x3166f3['ok']){const _0x44b6ba=await _0x3166f3['json']();throw new Error(_0x44b6ba['message']||'Failed\x20to\x20update\x20user');}return await _0x3166f3['json']();},async 'deleteUser'(_0x4a6013){const _0x23456b=await fetch(API_BASE+'/users/'+_0x4a6013,{'method':'DELETE'});if(!_0x23456b['ok']){const _0x28a75e=await _0x23456b['json']();throw new Error(_0x28a75e['message']||'Failed\x20to\x20delete\x20user');}return await _0x23456b['json']();},async 'stopAllContainers'(){const _0x11326a=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1dabeb=await _0x11326a['json']()['catch'](()=>({}));if(!_0x11326a['ok'])throw new Error(_0x1dabeb['message']||_0x1dabeb['error']||'Failed\x20to\x20stop\x20containers');return _0x1dabeb;},async 'removeStoppedContainers'(){const _0xb1fd42=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x15164c=await _0xb1fd42['json']()['catch'](()=>({}));if(!_0xb1fd42['ok'])throw new Error(_0x15164c['message']||_0x15164c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x15164c;},async 'pruneDockerResources'(){const _0x4d8b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x47003c=await _0x4d8b22['json']()['catch'](()=>({}));if(!_0x4d8b22['ok'])throw new Error(_0x47003c['message']||_0x47003c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x47003c;},async 'createPasswordToken'(_0x47269d,_0x476d15='setup',_0x1cbe0d=![]){const _0x533ec0=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x47269d,'type':_0x476d15,'sendEmail':_0x1cbe0d})});if(!_0x533ec0['ok']){const _0x5640c8=await _0x533ec0['json']();throw new Error(_0x5640c8['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x533ec0['json']();},async 'getEmailConfig'(){const _0x3e49a3=await fetch(API_BASE+'/password/email-config');if(!_0x3e49a3['ok']){const _0x327801=await _0x3e49a3['json']();throw new Error(_0x327801['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3e49a3['json']();},async 'updateTaskName'(_0x36e4a6,_0x26dae9){const _0x3456a3=await fetch(API_BASE+'/tasks/'+_0x36e4a6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x26dae9})});if(!_0x3456a3['ok']){const _0x545280=await _0x3456a3['json']();throw new Error(_0x545280['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x3456a3['json']();},async 'pinTask'(_0x1c7ec2,_0x4511cb,_0x1be4cd=null){if(!_0x1c7ec2)throw new Error('Task\x20ID\x20is\x20required');const _0x36894f={'pinned':_0x4511cb};_0x1be4cd&&_0x1be4cd['length']>0x0&&(_0x36894f['additionalTaskIds']=_0x1be4cd);const _0x1c2489=await fetch(API_BASE+'/tasks/'+_0x1c7ec2+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36894f)});if(!_0x1c2489['ok']){const _0x4d6914=await _0x1c2489['json']();throw new Error(_0x4d6914['error']||'Failed\x20to\x20pin\x20task');}return await _0x1c2489['json']();},async 'setTaskWinner'(_0x37ebf2,_0x43d372,_0x10182c=[]){if(!_0x37ebf2)throw new Error('Task\x20ID\x20is\x20required');const _0xfc475b=await fetch(API_BASE+'/tasks/'+_0x37ebf2+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x43d372,'siblings':_0x10182c})});if(!_0xfc475b['ok']){const _0x2006fb=await _0xfc475b['json']();throw new Error(_0x2006fb['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xfc475b['json']();},async 'setTaskLoser'(_0x58ae58,_0x44157a){if(!_0x58ae58)throw new Error('Task\x20ID\x20is\x20required');const _0x2a3ec7=await fetch(API_BASE+'/tasks/'+_0x58ae58+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x44157a})});if(!_0x2a3ec7['ok']){const _0x93b631=await _0x2a3ec7['json']();throw new Error(_0x93b631['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2a3ec7['json']();},async 'createTaskGroup'(_0x29e317){const _0x11415f=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29e317)});if(!_0x11415f['ok']){const _0x22f022=await _0x11415f['json']();throw new Error(_0x22f022['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x11415f['json']();},async 'getTaskGroups'(_0x3127c0={}){const _0x188901=new URLSearchParams();if(_0x3127c0['userId'])_0x188901['set']('userId',String(_0x3127c0['userId']));if(_0x3127c0['status'])_0x188901['set']('status',String(_0x3127c0['status']));if(_0x3127c0['limit'])_0x188901['set']('limit',String(_0x3127c0['limit']));const _0x1bd8e9=API_BASE+'/tasks/groups'+(_0x188901['toString']()?'?'+_0x188901['toString']():''),_0x5aad7b=await fetch(_0x1bd8e9);if(!_0x5aad7b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x5aad7b['json']();},async 'getTaskGroup'(_0x33e9a1){const _0x525107=await fetch(API_BASE+'/tasks/groups/'+_0x33e9a1);if(!_0x525107['ok']){const _0x5f2c83=await _0x525107['json']();throw new Error(_0x5f2c83['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x525107['json']();},async 'updateTaskGroup'(_0x501319,_0x59200b,_0x5166a9){const _0x237de0=await fetch(API_BASE+'/tasks/'+_0x501319+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x59200b,'groupIndex':_0x5166a9})});if(!_0x237de0['ok']){const _0x306bee=await _0x237de0['json']();throw new Error(_0x306bee['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x237de0['json']();},async 'removeTaskFromGroup'(_0x950e58){return this['updateTaskGroup'](_0x950e58,null,null);},async 'deleteTaskGroup'(_0x3e68b8,_0x1eadba=![]){const _0x6d33de=_0x1eadba?'?deleteTasks=true':'',_0x2910c0=await fetch(API_BASE+'/tasks/groups/'+_0x3e68b8+_0x6d33de,{'method':'DELETE'});if(!_0x2910c0['ok']){const _0x346d38=await _0x2910c0['json']();throw new Error(_0x346d38['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5f0e35,_0x101a44){const _0x165d17=await fetch(API_BASE+'/tasks/groups/'+_0x5f0e35+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x101a44})});if(!_0x165d17['ok']){const _0x49acc3=await _0x165d17['json']();throw new Error(_0x49acc3['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x165d17['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4ba4e5){if(!_0x4ba4e5)throw new Error('Task\x20ID\x20is\x20required');const _0x32ad6d=await fetch(API_BASE+'/tasks/'+_0x4ba4e5+'/comments');if(!_0x32ad6d['ok']){const _0x39b98d=await _0x32ad6d['json']()['catch'](()=>({}));throw new Error(_0x39b98d['error']||'Failed\x20to\x20get\x20comments');}return await _0x32ad6d['json']();},async 'addComment'(_0x4115d2,_0x46962a){if(!_0x4115d2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x46962a)throw new Error('Comment\x20content\x20is\x20required');const _0x4fbb94=await fetch(API_BASE+'/tasks/'+_0x4115d2+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x46962a})});if(!_0x4fbb94['ok']){const _0x5b7202=await _0x4fbb94['json']()['catch'](()=>({}));throw new Error(_0x5b7202['error']||'Failed\x20to\x20add\x20comment');}return await _0x4fbb94['json']();},async 'updateComment'(_0x201be8,_0xbe843a,_0x543c81){if(!_0x201be8)throw new Error('Task\x20ID\x20is\x20required');if(!_0xbe843a)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x543c81)throw new Error('Comment\x20content\x20is\x20required');const _0x49f589=await fetch(API_BASE+'/tasks/'+_0x201be8+'/comments/'+_0xbe843a,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x543c81})});if(!_0x49f589['ok']){const _0x2746bc=await _0x49f589['json']()['catch'](()=>({}));throw new Error(_0x2746bc['error']||'Failed\x20to\x20update\x20comment');}return await _0x49f589['json']();},async 'deleteComment'(_0x32cd1e,_0x284fe4){if(!_0x32cd1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x284fe4)throw new Error('Comment\x20ID\x20is\x20required');const _0x46655c=await fetch(API_BASE+'/tasks/'+_0x32cd1e+'/comments/'+_0x284fe4,{'method':'DELETE'});if(!_0x46655c['ok']){const _0x3707fa=await _0x46655c['json']()['catch'](()=>({}));throw new Error(_0x3707fa['error']||'Failed\x20to\x20delete\x20comment');}return await _0x46655c['json']();},async 'createObjective'(_0x29eddf){const _0x500a80={'objective':!![],'name':_0x29eddf['name']||'','environment':_0x29eddf['environment']||null,'agents':_0x29eddf['agents']||[],'branches':_0x29eddf['branches']||{},'isPinned':_0x29eddf['isPinned']||![],'parentObjectiveId':_0x29eddf['parentObjectiveId']||null,'env_vars':_0x29eddf['envVars']||{},'parameters':{'instructions':_0x29eddf['instructions']||''},'files':_0x29eddf['files']||[],'jira':_0x29eddf['jira']||null};return this['createTask'](_0x500a80);},async 'updateObjective'(_0x15d0ad,_0x575fe5,_0x59beee=[],_0x2be62b=[]){let _0x592aaa,_0x261421={};const _0x5c986e={..._0x575fe5};_0x2be62b&&_0x2be62b['length']>0x0&&(_0x5c986e['removeAttachments']=_0x2be62b);if(_0x59beee&&_0x59beee['length']>0x0){const _0x27f57d=new FormData();for(const [_0x39345b,_0x2d61d9]of Object['entries'](_0x5c986e)){if(_0x2d61d9==null)continue;typeof _0x2d61d9==='object'?_0x27f57d['append'](_0x39345b,JSON['stringify'](_0x2d61d9)):_0x27f57d['append'](_0x39345b,String(_0x2d61d9));}for(const _0x36782b of _0x59beee){_0x27f57d['append']('attachments',_0x36782b);}_0x592aaa=_0x27f57d;}else _0x261421['Content-Type']='application/json',_0x592aaa=JSON['stringify'](_0x5c986e);const _0x1c6d1a=await fetch(API_BASE+'/tasks/'+_0x15d0ad,{'method':'PATCH','headers':_0x261421,'body':_0x592aaa});if(!_0x1c6d1a['ok']){const _0x5f486e=await _0x1c6d1a['json']();throw new Error(_0x5f486e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1c6d1a['json']();},async 'deleteObjective'(_0x14ae77){return this['deleteTask'](_0x14ae77);},async 'launchObjective'(_0xc2d6a8,_0x3d62eb={}){const _0x5c871d=await fetch(API_BASE+'/tasks/'+_0xc2d6a8+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d62eb)});if(!_0x5c871d['ok']){const _0xf37aea=await _0x5c871d['json']();throw new Error(_0xf37aea['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5c871d['json']();},async 'getObjectiveAttachments'(_0x5af6d6){return this['getTaskAttachments'](_0x5af6d6);},async 'createJudgeTask'({environment:_0x3bbe96,judgeAgent:_0x35451a,groupId:_0x4a301c,taskIds:_0x148068,judgeCustomInstructions:_0x310ca5,isPinned:_0x200351}){const _0x2ab129=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3bbe96,'judgeAgent':_0x35451a,'groupId':_0x4a301c,'taskIds':_0x148068,'judgeCustomInstructions':_0x310ca5,'isPinned':_0x200351})});if(!_0x2ab129['ok']){const _0x2a398a=await _0x2ab129['json']();throw new Error(_0x2a398a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2ab129['json']();},async 'getJudgeTasks'(_0x2aa7f1){const _0x8f4e80=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2aa7f1));if(!_0x8f4e80['ok']){const _0x58131f=await _0x8f4e80['json']();throw new Error(_0x58131f['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x8f4e80['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3688c0,_0x3389f7,_0x81d991=''){const _0x4d47e9=await fetch(API_BASE+'/tasks/'+_0x3688c0+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3389f7,'customPreamble':_0x81d991})});if(!_0x4d47e9['ok']){const _0x525550=await _0x4d47e9['json']();throw new Error(_0x525550['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x4d47e9['json']();},async 'getJiraConfig'(){const _0x2adc88=await fetch(API_BASE+'/jira/config');if(!_0x2adc88['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2adc88['json']();},async 'getJiraIssue'(_0x144976){const _0x284da2=await fetch(API_BASE+'/jira/issues/'+_0x144976);if(!_0x284da2['ok']){const _0x46c181=await _0x284da2['json']()['catch'](()=>({}));throw new Error(_0x46c181['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x284da2['statusText']);}return await _0x284da2['json']();},async 'searchJiraIssues'(_0x5b0d15,_0x3f4a69=0x14){const _0x10fcbf=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5b0d15,'maxResults':_0x3f4a69})});if(!_0x10fcbf['ok']){const _0x166e3a=await _0x10fcbf['json']()['catch'](()=>({}));throw new Error(_0x166e3a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x10fcbf['statusText']);}return await _0x10fcbf['json']();},async 'postJiraComment'(_0x10241d,_0x413bfc){const _0x5b788b=await fetch(API_BASE+'/jira/issues/'+_0x10241d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x413bfc})});if(!_0x5b788b['ok']){const _0x59196d=await _0x5b788b['json']()['catch'](()=>({}));throw new Error(_0x59196d['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5b788b['statusText']);}return await _0x5b788b['json']();},async 'getJiraComments'(_0x387d5b){const _0x5664cf=await fetch(API_BASE+'/jira/issues/'+_0x387d5b+'/comments');if(!_0x5664cf['ok']){const _0x3bde7a=await _0x5664cf['json']()['catch'](()=>({}));throw new Error(_0x3bde7a['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5664cf['statusText']);}return await _0x5664cf['json']();},async 'promptParameter'({environment:_0x4244af,command:_0x5b844d,parser:parser='json'}){const _0x2c6be2=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4244af,'command':_0x5b844d,'parser':parser})});if(!_0x2c6be2['ok']){const _0x1c2db5=await _0x2c6be2['json']()['catch'](()=>({}));throw new Error(_0x1c2db5['message']||_0x1c2db5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2c6be2['statusText']);}return await _0x2c6be2['json']();},async 'promptParameterStream'(_0x331e46,_0x1fdd21){const _0x190f01=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x331e46)});if(!_0x190f01['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x190f01['statusText']);const _0x3f766f=_0x190f01['body']['getReader'](),_0x1e13d4=new TextDecoder();let _0x22442a='';return new Promise((_0xc6885b,_0x123033)=>{const _0x2beff3=async()=>{try{const {done:_0xb56072,value:_0x36afb9}=await _0x3f766f['read']();if(_0xb56072)return;_0x22442a+=_0x1e13d4['decode'](_0x36afb9,{'stream':!![]});const _0x51292a=_0x22442a['split']('\x0a\x0a');_0x22442a=_0x51292a['pop']()||'';for(const _0x368c37 of _0x51292a){if(!_0x368c37['trim']())continue;const _0x93fad3=_0x368c37['split']('\x0a');let _0x411463='message',_0x175f2a='';for(const _0x18fa20 of _0x93fad3){if(_0x18fa20['startsWith']('event:'))_0x411463=_0x18fa20['substring'](0x6)['trim']();else _0x18fa20['startsWith']('data:')&&(_0x175f2a=_0x18fa20['substring'](0x5)['trim']());}if(!_0x175f2a)continue;try{const _0x2b87a1=JSON['parse'](_0x175f2a);if(_0x411463==='progress'&&_0x1fdd21)_0x1fdd21(_0x2b87a1['stage'],_0x2b87a1['message']);else{if(_0x411463==='result'){_0xc6885b(_0x2b87a1);return;}else{if(_0x411463==='error'){let _0x1f7040=_0x2b87a1['message']||_0x2b87a1['error']||'Prompt\x20command\x20failed';_0x2b87a1['rawOutput']&&(_0x1f7040+='\x0a\x0aRaw\x20output:\x0a'+_0x2b87a1['rawOutput']);_0x123033(new Error(_0x1f7040));return;}}}}catch(_0x179c03){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x179c03),console['error']('Event\x20type:',_0x411463),console['error']('Event\x20data:',_0x175f2a),console['error']('First\x20200\x20chars:',_0x175f2a['substring'](0x0,0xc8)),_0x123033(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x179c03['message']+'\x0a\x0aData:\x20'+_0x175f2a['substring'](0x0,0x1f4)));return;}}_0x2beff3();}catch(_0x4050a1){_0x123033(_0x4050a1);}};_0x2beff3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xac358d){const _0x55f5f1=await fetch(''+API_BASE+_0xac358d);if(!_0x55f5f1['ok']){const _0x1ae59f=await _0x55f5f1['json']()['catch'](()=>({'error':_0x55f5f1['statusText']})),_0x3d0e7d=new Error(_0x1ae59f['error']||_0x1ae59f['message']||_0x55f5f1['statusText']);if(_0x1ae59f['detail']!==undefined)_0x3d0e7d['detail']=_0x1ae59f['detail'];throw _0x3d0e7d;}return await _0x55f5f1['json']();},async 'post'(_0x39394a,_0x3c8f37){const _0x53501a=await fetch(''+API_BASE+_0x39394a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c8f37)});if(!_0x53501a['ok']){const _0x486fef=await _0x53501a['json']()['catch'](()=>({'error':_0x53501a['statusText']})),_0x35f7b3=new Error(_0x486fef['error']||_0x486fef['message']||_0x53501a['statusText']);if(_0x486fef['detail']!==undefined)_0x35f7b3['detail']=_0x486fef['detail'];throw _0x35f7b3;}return await _0x53501a['json']();},async 'put'(_0x3fc3b2,_0x11dd02){const _0xe18d14=await fetch(''+API_BASE+_0x3fc3b2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11dd02)});if(!_0xe18d14['ok']){const _0x1706cb=await _0xe18d14['json']()['catch'](()=>({'error':_0xe18d14['statusText']})),_0x179465=new Error(_0x1706cb['error']||_0x1706cb['message']||_0xe18d14['statusText']);if(_0x1706cb['detail']!==undefined)_0x179465['detail']=_0x1706cb['detail'];throw _0x179465;}return await _0xe18d14['json']();},async 'delete'(_0x5eaef7,_0x264372){const _0x305c9f={'method':'DELETE'};_0x264372&&(_0x305c9f['headers']={'Content-Type':'application/json'},_0x305c9f['body']=JSON['stringify'](_0x264372));const _0x16bf74=await fetch(''+API_BASE+_0x5eaef7,_0x305c9f);if(!_0x16bf74['ok']){const _0x2e3d03=await _0x16bf74['json']()['catch'](()=>({'error':_0x16bf74['statusText']})),_0x58ba81=new Error(_0x2e3d03['error']||_0x2e3d03['message']||_0x16bf74['statusText']);if(_0x2e3d03['detail']!==undefined)_0x58ba81['detail']=_0x2e3d03['detail'];throw _0x58ba81;}return await _0x16bf74['json']();},async 'getSkills'(){const _0x2491af=await fetch(API_BASE+'/skills');if(!_0x2491af['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2491af['statusText']);return await _0x2491af['json']();},async 'getSkill'(_0x13534a){const _0x103416=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x13534a));if(!_0x103416['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x103416['statusText']);return await _0x103416['json']();},async 'createSkill'(_0x2faff1){const _0x4f1b7a=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2faff1)});if(!_0x4f1b7a['ok']){const _0x1a1d96=await _0x4f1b7a['json']()['catch'](()=>({'error':_0x4f1b7a['statusText']})),_0x1170b2=new Error(_0x1a1d96['error']||_0x1a1d96['message']||_0x4f1b7a['statusText']);if(_0x1a1d96['detail']!==undefined)_0x1170b2['detail']=_0x1a1d96['detail'];throw _0x1170b2;}return await _0x4f1b7a['json']();},async 'updateSkill'(_0x4c4a9d,_0x1b7ac6){const _0x43af57=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c4a9d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b7ac6)});if(!_0x43af57['ok']){const _0x380304=await _0x43af57['json']()['catch'](()=>({'error':_0x43af57['statusText']})),_0x58bc48=new Error(_0x380304['error']||_0x380304['message']||_0x43af57['statusText']);if(_0x380304['detail']!==undefined)_0x58bc48['detail']=_0x380304['detail'];throw _0x58bc48;}return await _0x43af57['json']();},async 'deleteSkill'(_0x1b5bcf){const _0x304678=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b5bcf),{'method':'DELETE'});if(!_0x304678['ok']){const _0x34c4af=await _0x304678['json']()['catch'](()=>({'error':_0x304678['statusText']})),_0x286a4c=new Error(_0x34c4af['error']||_0x34c4af['message']||_0x304678['statusText']);if(_0x34c4af['detail']!==undefined)_0x286a4c['detail']=_0x34c4af['detail'];throw _0x286a4c;}return await _0x304678['json']();},async 'getSkillFile'(_0x237a34,_0x22497f){const _0x87b7a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x237a34)+'/files/'+_0x22497f);if(!_0x87b7a7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x87b7a7['statusText']);return await _0x87b7a7['json']();},async 'saveSkillFile'(_0x48f82a,_0x8d6636,_0xe1521a){const _0x35245f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x48f82a)+'/files/'+_0x8d6636,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xe1521a})});if(!_0x35245f['ok']){const _0x445f65=await _0x35245f['json']()['catch'](()=>({'error':_0x35245f['statusText']})),_0x1bae1e=new Error(_0x445f65['error']||_0x445f65['message']||_0x35245f['statusText']);if(_0x445f65['detail']!==undefined)_0x1bae1e['detail']=_0x445f65['detail'];throw _0x1bae1e;}return await _0x35245f['json']();},async 'deleteSkillFile'(_0x1ae384,_0x59b5a0){const _0x5a1b3c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1ae384)+'/files/'+_0x59b5a0,{'method':'DELETE'});if(!_0x5a1b3c['ok']){const _0x1a1028=await _0x5a1b3c['json']()['catch'](()=>({'error':_0x5a1b3c['statusText']})),_0x42b5e1=new Error(_0x1a1028['error']||_0x1a1028['message']||_0x5a1b3c['statusText']);if(_0x1a1028['detail']!==undefined)_0x42b5e1['detail']=_0x1a1028['detail'];throw _0x42b5e1;}return await _0x5a1b3c['json']();},async 'pullSkills'(){const _0x47dea8=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x47dea8['ok']){const _0x2faa87=await _0x47dea8['json']()['catch'](()=>({'error':_0x47dea8['statusText']})),_0x190a5b=new Error(_0x2faa87['error']||_0x2faa87['message']||_0x47dea8['statusText']);if(_0x2faa87['detail']!==undefined)_0x190a5b['detail']=_0x2faa87['detail'];throw _0x190a5b;}return await _0x47dea8['json']();},async 'commitSkills'(_0x54fae4,_0x1dcc2d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1dcc2d,_0x40ba77=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x54fae4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x40ba77['ok']){const _0x4bce4d=await _0x40ba77['json']()['catch'](()=>({'error':_0x40ba77['statusText']})),_0x5c7004=new Error(_0x4bce4d['error']||_0x4bce4d['message']||_0x40ba77['statusText']);if(_0x4bce4d['detail']!==undefined)_0x5c7004['detail']=_0x4bce4d['detail'];throw _0x5c7004;}return await _0x40ba77['json']();},async 'discardSkillsChanges'(){const _0x4b663d=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4b663d['ok']){const _0x55a82b=await _0x4b663d['json']()['catch'](()=>({'error':_0x4b663d['statusText']})),_0x293012=new Error(_0x55a82b['error']||_0x55a82b['message']||_0x4b663d['statusText']);if(_0x55a82b['detail']!==undefined)_0x293012['detail']=_0x55a82b['detail'];throw _0x293012;}return await _0x4b663d['json']();},async 'getSkillCatalog'(){const _0x2a3c76=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2a3c76['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2a3c76['statusText']);return await _0x2a3c76['json']();},async 'getImportedSkillsRegistry'(){const _0x470d29=await fetch(API_BASE+'/external-skills/registry');if(!_0x470d29['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x470d29['statusText']);return await _0x470d29['json']();},async 'importCatalogSkill'(_0x4faf84){const _0x4492f0=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4faf84})});if(!_0x4492f0['ok']){const _0x58d37e=await _0x4492f0['json']()['catch'](()=>({'error':_0x4492f0['statusText']})),_0x10c7de=new Error(_0x58d37e['error']||_0x58d37e['message']||_0x4492f0['statusText']);if(_0x58d37e['detail']!==undefined)_0x10c7de['detail']=_0x58d37e['detail'];throw _0x10c7de;}return await _0x4492f0['json']();},async 'importSkillFromGit'(_0xbeb341,_0x3846bf,_0x554b4b='main',_0x1e7393=null){const _0x197308=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xbeb341,'skillPath':_0x3846bf,'branch':_0x554b4b,'skillId':_0x1e7393})});if(!_0x197308['ok']){const _0x546cdb=await _0x197308['json']()['catch'](()=>({'error':_0x197308['statusText']})),_0x536b03=new Error(_0x546cdb['error']||_0x546cdb['message']||_0x197308['statusText']);if(_0x546cdb['detail']!==undefined)_0x536b03['detail']=_0x546cdb['detail'];throw _0x536b03;}return await _0x197308['json']();},async 'probeMarketplace'(_0x83c51b,_0x2b3e5a='main'){const _0x2a3afc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x83c51b,'branch':_0x2b3e5a})});if(!_0x2a3afc['ok']){const _0x455cad=await _0x2a3afc['json']()['catch'](()=>({'error':_0x2a3afc['statusText']})),_0x3ba411=new Error(_0x455cad['error']||_0x455cad['message']||_0x2a3afc['statusText']);if(_0x455cad['detail']!==undefined)_0x3ba411['detail']=_0x455cad['detail'];throw _0x3ba411;}return await _0x2a3afc['json']();},async 'importMarketplaceBundle'(_0x49f218,_0x4430cc,_0x256344,_0x4ede12=null){const _0x6d251f=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x49f218,'branch':_0x4430cc,'bundleId':_0x256344,'selectedSkills':_0x4ede12})});if(!_0x6d251f['ok']){const _0x4a7da2=await _0x6d251f['json']()['catch'](()=>({'error':_0x6d251f['statusText']})),_0x10fd3b=new Error(_0x4a7da2['error']||_0x4a7da2['message']||_0x6d251f['statusText']);if(_0x4a7da2['detail']!==undefined)_0x10fd3b['detail']=_0x4a7da2['detail'];throw _0x10fd3b;}return await _0x6d251f['json']();},async 'importSkillFromFolder'(_0x4f2293,_0x7bce71=null){const _0xd586f8=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4f2293,'skillId':_0x7bce71})});if(!_0xd586f8['ok']){const _0x3504f5=await _0xd586f8['json']()['catch'](()=>({'error':_0xd586f8['statusText']})),_0x21e5ed=new Error(_0x3504f5['error']||_0x3504f5['message']||_0xd586f8['statusText']);if(_0x3504f5['detail']!==undefined)_0x21e5ed['detail']=_0x3504f5['detail'];throw _0x21e5ed;}return await _0xd586f8['json']();},async 'importSkillFromNpm'(_0x22980e,_0x2e3c68='latest',_0x93fe2=null,_0x18eb8e=null){const _0x1fa6c7=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x22980e,'version':_0x2e3c68,'skillId':_0x93fe2,'registry':_0x18eb8e})});if(!_0x1fa6c7['ok']){const _0x305daf=await _0x1fa6c7['json']()['catch'](()=>({'error':_0x1fa6c7['statusText']})),_0x12050c=new Error(_0x305daf['error']||_0x305daf['message']||_0x1fa6c7['statusText']);if(_0x305daf['detail']!==undefined)_0x12050c['detail']=_0x305daf['detail'];throw _0x12050c;}return await _0x1fa6c7['json']();},async 'checkSkillUpdates'(_0x26b47e){const _0x5c75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26b47e)+'/check-updates',{'method':'POST'});if(!_0x5c75f3['ok']){const _0xa4c4e6=await _0x5c75f3['json']()['catch'](()=>({'error':_0x5c75f3['statusText']})),_0x4786be=new Error(_0xa4c4e6['error']||_0xa4c4e6['message']||_0x5c75f3['statusText']);if(_0xa4c4e6['detail']!==undefined)_0x4786be['detail']=_0xa4c4e6['detail'];throw _0x4786be;}return await _0x5c75f3['json']();},async 'updateExternalSkill'(_0x26fd08){const _0x506104=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26fd08)+'/update',{'method':'POST'});if(!_0x506104['ok']){const _0x5070cb=await _0x506104['json']()['catch'](()=>({'error':_0x506104['statusText']})),_0x3413ea=new Error(_0x5070cb['error']||_0x5070cb['message']||_0x506104['statusText']);if(_0x5070cb['detail']!==undefined)_0x3413ea['detail']=_0x5070cb['detail'];throw _0x3413ea;}return await _0x506104['json']();},async 'updateSkillFlags'(_0xe9b717,_0x308bc1){const _0x392e42=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xe9b717)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x308bc1})});if(!_0x392e42['ok']){const _0x17a012=await _0x392e42['json']()['catch'](()=>({'error':_0x392e42['statusText']})),_0x431579=new Error(_0x17a012['error']||_0x17a012['message']||_0x392e42['statusText']);if(_0x17a012['detail']!==undefined)_0x431579['detail']=_0x17a012['detail'];throw _0x431579;}return await _0x392e42['json']();},async 'removeFromImportedRegistry'(_0x525b7c){const _0x48ee06=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x525b7c)+'/registry',{'method':'DELETE'});if(!_0x48ee06['ok']){const _0x41511b=await _0x48ee06['json']()['catch'](()=>({'error':_0x48ee06['statusText']})),_0x4e78dc=new Error(_0x41511b['error']||_0x41511b['message']||_0x48ee06['statusText']);if(_0x41511b['detail']!==undefined)_0x4e78dc['detail']=_0x41511b['detail'];throw _0x4e78dc;}return await _0x48ee06['json']();},async 'getTeams'(){const _0x310db5=await fetch(API_BASE+'/teams');if(!_0x310db5['ok']){const _0x43098b=await _0x310db5['json']()['catch'](()=>({'message':_0x310db5['statusText']}));throw new Error(_0x43098b['message']||'Failed\x20to\x20get\x20teams');}return await _0x310db5['json']();},async 'getTeam'(_0x488878){const _0x5c9012=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x488878));if(!_0x5c9012['ok']){const _0x14f3c4=await _0x5c9012['json']()['catch'](()=>({'message':_0x5c9012['statusText']}));throw new Error(_0x14f3c4['message']||'Failed\x20to\x20get\x20team');}return await _0x5c9012['json']();},async 'createTeam'(_0x5b1d23){const _0x15fd32=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b1d23)});if(!_0x15fd32['ok']){const _0x5edf0e=await _0x15fd32['json']()['catch'](()=>({'message':_0x15fd32['statusText']}));throw new Error(_0x5edf0e['message']||'Failed\x20to\x20create\x20team');}return await _0x15fd32['json']();},async 'updateTeam'(_0x23203a,_0x3837ae){const _0x4431d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x23203a),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3837ae)});if(!_0x4431d1['ok']){const _0x1733c4=await _0x4431d1['json']()['catch'](()=>({'message':_0x4431d1['statusText']}));throw new Error(_0x1733c4['message']||'Failed\x20to\x20update\x20team');}return await _0x4431d1['json']();},async 'deleteTeam'(_0x51105d){const _0x367fac=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x51105d),{'method':'DELETE'});if(!_0x367fac['ok']){const _0x327993=await _0x367fac['json']()['catch'](()=>({'message':_0x367fac['statusText']}));throw new Error(_0x327993['message']||'Failed\x20to\x20delete\x20team');}return await _0x367fac['json']();},async 'addTeamMember'(_0x443512,_0x59d3cc){const _0x11e4d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x443512)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x59d3cc})});if(!_0x11e4d1['ok']){const _0x356175=await _0x11e4d1['json']()['catch'](()=>({'message':_0x11e4d1['statusText']}));throw new Error(_0x356175['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x11e4d1['json']();},async 'removeTeamMember'(_0x14edf8,_0x58b6f5){const _0x44c6e8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x14edf8)+'/members/'+encodeURIComponent(_0x58b6f5),{'method':'DELETE'});if(!_0x44c6e8['ok']){const _0x2d2245=await _0x44c6e8['json']()['catch'](()=>({'message':_0x44c6e8['statusText']}));throw new Error(_0x2d2245['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x44c6e8['json']();},async 'getBindings'(_0x2ae079={}){const _0x535efb=new URLSearchParams();if(_0x2ae079['resource_type'])_0x535efb['set']('resource_type',_0x2ae079['resource_type']);if(_0x2ae079['resource_id'])_0x535efb['set']('resource_id',_0x2ae079['resource_id']);if(_0x2ae079['subject_type'])_0x535efb['set']('subject_type',_0x2ae079['subject_type']);if(_0x2ae079['subject_id'])_0x535efb['set']('subject_id',_0x2ae079['subject_id']);const _0x3d2d6e=_0x535efb['toString'](),_0x5d1eea=await fetch(API_BASE+'/bindings'+(_0x3d2d6e?'?'+_0x3d2d6e:''));if(!_0x5d1eea['ok']){const _0x563b1a=await _0x5d1eea['json']()['catch'](()=>({'message':_0x5d1eea['statusText']}));throw new Error(_0x563b1a['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5d1eea['json']();},async 'createBinding'(_0x12c7ee){const _0x463a54=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12c7ee)});if(!_0x463a54['ok']){const _0xdef47c=await _0x463a54['json']()['catch'](()=>({'message':_0x463a54['statusText']}));throw new Error(_0xdef47c['message']||'Failed\x20to\x20create\x20binding');}return await _0x463a54['json']();},async 'updateBinding'(_0x49a29b,_0x53eb94){const _0x194f52=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x49a29b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53eb94)});if(!_0x194f52['ok']){const _0x3db875=await _0x194f52['json']()['catch'](()=>({'message':_0x194f52['statusText']}));throw new Error(_0x3db875['message']||'Failed\x20to\x20update\x20binding');}return await _0x194f52['json']();},async 'deleteBinding'(_0x6ddad){const _0x4af93b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x6ddad),{'method':'DELETE'});if(!_0x4af93b['ok']){const _0xfcdf12=await _0x4af93b['json']()['catch'](()=>({'message':_0x4af93b['statusText']}));throw new Error(_0xfcdf12['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4af93b['json']();},async 'getRoleDefinitions'(){const _0x2cb92e=await fetch(API_BASE+'/roles');if(!_0x2cb92e['ok']){const _0x9756e9=await _0x2cb92e['json']()['catch'](()=>({'message':_0x2cb92e['statusText']}));throw new Error(_0x9756e9['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2cb92e['json']();},async 'getRoleDefinition'(_0x1b051f){const _0x3a6a2a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1b051f));if(!_0x3a6a2a['ok']){const _0x49b658=await _0x3a6a2a['json']()['catch'](()=>({'message':_0x3a6a2a['statusText']}));throw new Error(_0x49b658['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3a6a2a['json']();},async 'createRoleDefinition'(_0x33a108){const _0x442291=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33a108)});if(!_0x442291['ok']){const _0x43263d=await _0x442291['json']()['catch'](()=>({'message':_0x442291['statusText']}));throw new Error(_0x43263d['message']||_0x43263d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x442291['json']();},async 'updateRoleDefinition'(_0x1e6683,_0xe65239){const _0x45a5c0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1e6683),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe65239)});if(!_0x45a5c0['ok']){const _0x6500f4=await _0x45a5c0['json']()['catch'](()=>({'message':_0x45a5c0['statusText']}));throw new Error(_0x6500f4['message']||_0x6500f4['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x45a5c0['json']();},async 'deleteRoleDefinition'(_0x4945fd){const _0x140e6b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4945fd),{'method':'DELETE'});if(!_0x140e6b['ok']){const _0x290bef=await _0x140e6b['json']()['catch'](()=>({'message':_0x140e6b['statusText']}));throw new Error(_0x290bef['message']||_0x290bef['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x140e6b['json']();},async 'getAvailablePermissions'(){const _0x9dede0=await fetch(API_BASE+'/roles/available-permissions');if(!_0x9dede0['ok']){const _0x3a081c=await _0x9dede0['json']()['catch'](()=>({'message':_0x9dede0['statusText']}));throw new Error(_0x3a081c['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x9dede0['json']();},async 'getGitProviderAllowedTeams'(_0x31f3b3){const _0x3b28c5=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x31f3b3)+'/allowed-teams');if(!_0x3b28c5['ok']){const _0x186185=await _0x3b28c5['json']()['catch'](()=>({'message':_0x3b28c5['statusText']}));throw new Error(_0x186185['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3b28c5['json']();},async 'setGitProviderAllowedTeams'(_0x3b0a3f,_0x3eb949){const _0x1cccc1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3b0a3f)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3eb949})});if(!_0x1cccc1['ok']){const _0x33b5e4=await _0x1cccc1['json']()['catch'](()=>({'message':_0x1cccc1['statusText']}));throw new Error(_0x33b5e4['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1cccc1['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0xe408c6=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4f19c7=>{_0x4f19c7['el']['style']['bottom']=_0xe408c6+'px';const _0x54495a=_0x4f19c7['el']['offsetHeight']||toastState['defaultHeight'];_0xe408c6+=_0x54495a+toastState['gap'];});});}function removeToastById(_0x28857c){const _0x2de654=toastState['toasts']['findIndex'](_0x1760ae=>_0x1760ae['id']===_0x28857c);if(_0x2de654===-0x1)return;const _0x3b9501=toastState['toasts'][_0x2de654];if(_0x3b9501['timeoutId'])clearTimeout(_0x3b9501['timeoutId']);_0x3b9501['el']['classList']['remove']('show'),setTimeout(()=>_0x3b9501['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2de654,0x1),repositionAllToasts();}function registerToast(_0x3a67bc){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x3a67bc),repositionAllToasts(),_0x3a67bc['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x421d63){if(_0x421d63===null||_0x421d63===undefined)return'';return String(_0x421d63)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x2d79e8,_0x1c6188){if(_0x2d79e8&&typeof _0x2d79e8==='object'&&!Array['isArray'](_0x2d79e8))return{'code':typeof _0x2d79e8['text']==='string'?_0x2d79e8['text']:'','language':typeof _0x2d79e8['lang']==='string'?_0x2d79e8['lang']:''};return{'code':typeof _0x2d79e8==='string'?_0x2d79e8:'','language':typeof _0x1c6188==='string'?_0x1c6188:''};}function buildMermaidBlock(_0x394d40){const _0xe98077=String(_0x394d40||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0xe98077))+'\x22>'+escapeHtmlValue(_0xe98077)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x5509e0=new marked['Renderer'](),_0x4ac7da=_0x5509e0['code']['bind'](_0x5509e0);return _0x5509e0['code']=function(_0x2af773,_0x2eaba3,..._0x408687){const {code:_0x5ecbb2,language:_0x496d12}=getMarkdownCodeBlockPayload(_0x2af773,_0x2eaba3),_0x280a25=String(_0x496d12||'')['trim']()['toLowerCase']();if(_0x280a25==='mermaid')return buildMermaidBlock(_0x5ecbb2);const _0x367b4f=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x367b4f&&_0x280a25)try{const _0xb4ba68=_0x367b4f['getLanguage'](_0x280a25)?_0x280a25:'plaintext',_0x428dcf=_0x367b4f['highlight'](_0x5ecbb2,{'language':_0xb4ba68})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x280a25)+'\x22>'+_0x428dcf+'</code></pre>';}catch(_0xde0ddc){console['error']('Syntax\x20highlighting\x20error:',_0xde0ddc);}return _0x4ac7da(_0x2af773,_0x2eaba3,..._0x408687);},sharedMarkedRenderer=_0x5509e0,_0x5509e0;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x34d3f7=window['mermaid'];if(!_0x34d3f7||typeof _0x34d3f7['initialize']!=='function')return _0x34d3f7||null;return _0x34d3f7['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x34d3f7;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2c48c4,_0x2380f4)=>{const _0x40b8e2=()=>_0x2c48c4(configureMermaidInstance()),_0x19446b=()=>{mermaidLoadPromise=null,_0x2380f4(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x191e21=document['getElementById'](MERMAID_SCRIPT_ID);!_0x191e21&&(_0x191e21=document['createElement']('script'),_0x191e21['id']=MERMAID_SCRIPT_ID,_0x191e21['src']=MERMAID_SCRIPT_SRC,_0x191e21['async']=!![],document['head']['appendChild'](_0x191e21));if(window['mermaid']){_0x40b8e2();return;}_0x191e21['addEventListener']('load',_0x40b8e2,{'once':!![]}),_0x191e21['addEventListener']('error',_0x19446b,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x307e0b){const _0x2bbcf6=_0x307e0b['getAttribute']('data-mermaid-source');if(!_0x2bbcf6)return null;let _0x336bfd=_0x2bbcf6;try{_0x336bfd=decodeURIComponent(_0x2bbcf6);}catch{}return _0x307e0b['textContent']=_0x336bfd,_0x307e0b['removeAttribute']('data-processed'),_0x307e0b['removeAttribute']('aria-roledescription'),_0x307e0b['removeAttribute']('role'),_0x307e0b['removeAttribute']('aria-label'),_0x336bfd;}function collectMermaidNodes(_0x4ac068,_0x3342bd){if(!(_0x4ac068 instanceof Element))return;_0x4ac068['matches']('.mermaid[data-mermaid-source]')&&_0x3342bd['add'](_0x4ac068),_0x4ac068['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f2cb9=>{_0x3342bd['add'](_0x5f2cb9);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3457a7=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x1206cf=>setTimeout(_0x1206cf,0x0);_0x3457a7(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1fbf75=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1fbf75);});});}function queueMermaidRender(_0x455046){const _0x3ef73c=new Set();_0x455046 instanceof Document||_0x455046 instanceof DocumentFragment?_0x455046['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2a4d34=>_0x3ef73c['add'](_0x2a4d34)):collectMermaidNodes(_0x455046,_0x3ef73c);if(_0x3ef73c['size']===0x0)return;_0x3ef73c['forEach'](_0x2d4190=>pendingMermaidNodes['add'](_0x2d4190)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x41a111=Array['from'](pendingMermaidNodes)['filter'](_0x50228c=>_0x50228c['isConnected']);pendingMermaidNodes['clear']();if(_0x41a111['length']===0x0)return;const _0x256015=await loadMermaid();if(!_0x256015)return;configureMermaidInstance();const _0x50b689=getMermaidTheme();for(const _0x27fe25 of _0x41a111){const _0xd44390=_0x27fe25['getAttribute']('data-mermaid-source');if(!_0xd44390)continue;const _0x522a93=_0x27fe25['getAttribute']('data-processed')==='true';if(_0x522a93&&_0x27fe25['dataset']['mermaidTheme']===_0x50b689)continue;restoreMermaidSource(_0x27fe25);try{if(typeof _0x256015['run']==='function')await _0x256015['run']({'nodes':[_0x27fe25]});else typeof _0x256015['init']==='function'&&_0x256015['init'](undefined,[_0x27fe25]);_0x27fe25['dataset']['mermaidTheme']=_0x50b689,delete _0x27fe25['dataset']['mermaidError'];}catch(_0x25a0cd){console['error']('Mermaid\x20render\x20failed:',_0x25a0cd),restoreMermaidSource(_0x27fe25),_0x27fe25['dataset']['mermaidError']='true',delete _0x27fe25['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3de15b=>{_0x3de15b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3de15b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x47d08f=>{_0x47d08f['forEach'](_0x3cf580=>{_0x3cf580['addedNodes']['forEach'](_0x5422cc=>{_0x5422cc['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x5422cc);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x41d91b){const _0x480a74=new Date(_0x41d91b),_0x3bbd83=new Date(),_0x468d59=_0x3bbd83-_0x480a74,_0x544ae1=Math['floor'](_0x468d59/0x3e8),_0x5b153c=Math['floor'](_0x544ae1/0x3c),_0x4c1082=Math['floor'](_0x5b153c/0x3c),_0x10d9c3=Math['floor'](_0x4c1082/0x18);if(_0x544ae1<0x3c)return'now';if(_0x5b153c<0x3c)return _0x5b153c+'m\x20ago';if(_0x4c1082<0x18)return _0x4c1082+'h\x20ago';return _0x10d9c3+'d\x20ago';},'getStatusIcon'(_0x2c4035){switch(_0x2c4035){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x34d555){switch(_0x34d555){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x222621,_0x42a1ce=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x49a6b4={};_0x49a6b4['text/plain']=new Blob([_0x222621],{'type':'text/plain'});_0x42a1ce&&(_0x49a6b4['text/html']=new Blob([_0x42a1ce],{'type':'text/html'}));const _0x47fa48=new ClipboardItem(_0x49a6b4);return await navigator['clipboard']['write']([_0x47fa48]),!![];}catch(_0x35ecc3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x35ecc3);}try{const _0x242f75=_0x2648fd=>{_0x2648fd['preventDefault'](),_0x2648fd['clipboardData']['setData']('text/plain',_0x222621),_0x42a1ce&&_0x2648fd['clipboardData']['setData']('text/html',_0x42a1ce);};document['addEventListener']('copy',_0x242f75);const _0x5eb457=document['execCommand']('copy');document['removeEventListener']('copy',_0x242f75);if(_0x5eb457)return!![];}catch(_0x3db46e){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x3db46e);}try{const _0x33a471=document['createElement']('textarea');_0x33a471['value']=_0x222621,_0x33a471['style']['position']='fixed',_0x33a471['style']['opacity']='0',_0x33a471['style']['pointerEvents']='none',document['body']['appendChild'](_0x33a471),_0x33a471['select']();const _0x51ae2b=document['execCommand']('copy');return document['body']['removeChild'](_0x33a471),_0x51ae2b;}catch(_0x482671){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x482671),![];}},'showToast'(_0x26ef86,_0x5f577b='info'){const _0x20fa1a=getNextToastId(),_0x42d080=document['createElement']('div');_0x42d080['className']='toast\x20toast-'+_0x5f577b,_0x42d080['textContent']=_0x26ef86,_0x42d080['dataset']['toastId']=_0x20fa1a,document['body']['appendChild'](_0x42d080);const _0x17c5ae=_0x5f577b==='error'?0x2710:0xbb8,_0x5030e1=setTimeout(()=>{removeToastById(_0x20fa1a);},_0x17c5ae),_0x3c7714={'id':_0x20fa1a,'el':_0x42d080,'timeoutId':_0x5030e1};return registerToast(_0x3c7714),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x42d080['classList']['add']('show');});}),_0x20fa1a;},'showError'(_0x4c4341){console['error'](_0x4c4341);const _0x4ff189=typeof _0x4c4341==='string'?_0x4c4341:_0x4c4341['message']||'An\x20error\x20occurred';this['showToast'](_0x4ff189,'error');},'showSuccess'(_0x2e4e23){this['showToast'](_0x2e4e23,'success');},'capitalize'(_0x347320){if(!_0x347320)return'';return _0x347320['charAt'](0x0)['toUpperCase']()+_0x347320['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x47000f){return escapeHtmlValue(_0x47000f);},'ansiToHtml'(_0x23b0e0){if(_0x23b0e0===null||_0x23b0e0===undefined)return'';let _0x2a747d=this['escapeHtml'](_0x23b0e0);const _0x22f154={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x137e3d={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x12b9e3=0x0;return _0x2a747d=_0x2a747d['replace'](/\x1b\[([0-9;]*)m/g,(_0x208646,_0x51473f)=>{if(!_0x51473f||_0x51473f==='0'){const _0xaa3c42='</span>'['repeat'](_0x12b9e3);return _0x12b9e3=0x0,_0xaa3c42;}const _0x5eb5b2=_0x51473f['split'](';'),_0x3e4261=[];for(const _0x26aa98 of _0x5eb5b2){if(_0x26aa98==='1')_0x3e4261['push']('font-weight:bold');else{if(_0x26aa98==='2')_0x3e4261['push']('opacity:0.7');else{if(_0x26aa98==='3')_0x3e4261['push']('font-style:italic');else{if(_0x26aa98==='4')_0x3e4261['push']('text-decoration:underline');else{if(_0x26aa98==='9')_0x3e4261['push']('text-decoration:line-through');else{if(_0x22f154[_0x26aa98])_0x3e4261['push']('color:'+_0x22f154[_0x26aa98]);else{if(_0x137e3d[_0x26aa98])_0x3e4261['push']('background-color:'+_0x137e3d[_0x26aa98]);}}}}}}}if(_0x3e4261['length']>0x0)return _0x12b9e3++,'<span\x20style=\x22'+_0x3e4261['join'](';')+'\x22>';return'';}),_0x2a747d+='</span>'['repeat'](_0x12b9e3),_0x2a747d=_0x2a747d['replace'](/\\u001b\[([0-9;]*)m/g,(_0x235b39,_0x356d68)=>{if(!_0x356d68||_0x356d68==='0')return'';const _0x5cb999=_0x356d68['split'](';'),_0x5e3532=[];for(const _0x363084 of _0x5cb999){if(_0x363084==='1')_0x5e3532['push']('font-weight:bold');else{if(_0x22f154[_0x363084])_0x5e3532['push']('color:'+_0x22f154[_0x363084]);else{if(_0x137e3d[_0x363084])_0x5e3532['push']('background-color:'+_0x137e3d[_0x363084]);}}}if(_0x5e3532['length']>0x0)return'<span\x20style=\x22'+_0x5e3532['join'](';')+'\x22>';return'';}),_0x2a747d;},'showModal'({title:_0x172c94,content:_0x4400df,buttons:buttons=[]}){const _0x371e1a='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x172c94)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4400df+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x121503,_0xe3ceed)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x121503['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xe3ceed+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x121503['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x4290b7=document['createElement']('div');_0x4290b7['id']='utils-modal',_0x4290b7['className']='modal',_0x4290b7['innerHTML']=_0x371e1a,document['body']['appendChild'](_0x4290b7);const _0x51b66d=document['getElementById']('utils-modal-close');_0x51b66d&&_0x51b66d['addEventListener']('click',()=>this['hideModal']());const _0x51ebb0=_0x4290b7['querySelectorAll']('[data-btn-index]');_0x51ebb0['forEach'](_0x1d3c42=>{const _0x13e87e=parseInt(_0x1d3c42['dataset']['btnIndex']);buttons[_0x13e87e]?.['onClick']&&_0x1d3c42['addEventListener']('click',buttons[_0x13e87e]['onClick']);});const _0xba7c87=document['getElementById']('utils-modal-overlay');_0xba7c87&&_0xba7c87['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x32feb2=document['getElementById']('utils-modal');_0x32feb2&&_0x32feb2['remove']();},'parseKeyValuePairs'(_0x3fb9a2){const _0x307e8b={};if(!_0x3fb9a2)return _0x307e8b;return _0x3fb9a2['split'](/\r?\n/)['map'](_0x5ef0ce=>_0x5ef0ce['trim']())['filter'](Boolean)['forEach'](_0x1d87b1=>{const _0x426371=_0x1d87b1['indexOf']('=');if(_0x426371>0x0){const _0x2146ff=_0x1d87b1['slice'](0x0,_0x426371)['trim'](),_0x43e440=_0x1d87b1['slice'](_0x426371+0x1)['trim']();if(_0x2146ff)_0x307e8b[_0x2146ff]=_0x43e440;}}),_0x307e8b;},'debounce'(_0x4cd06b,_0x268790=0xfa){let _0x440117=null;return(..._0x34ad65)=>{clearTimeout(_0x440117),_0x440117=setTimeout(()=>_0x4cd06b['apply'](this,_0x34ad65),_0x268790);};},'formatTimestamp'(_0x1f4b32){if(!_0x1f4b32)return'N/A';const _0x1c3fef=new Date(_0x1f4b32);return _0x1c3fef['toLocaleDateString']()+'\x20'+_0x1c3fef['toLocaleTimeString']();},'getQueryParams'(){const _0x3b4e42=new URLSearchParams(window['location']['search']),_0x401593={};for(const [_0x39fbcb,_0xe61a6b]of _0x3b4e42){_0x401593[_0x39fbcb]=_0xe61a6b;}return _0x401593;},'formatDuration'(_0x3e0d33,_0x445b97){if(!_0x3e0d33)return'N/A';const _0x375355=new Date(_0x3e0d33),_0x368f01=_0x445b97?new Date(_0x445b97):new Date(),_0x550a43=_0x368f01-_0x375355;if(_0x550a43<0x0)return'0s';const _0x46e784=Math['floor'](_0x550a43/0x3e8),_0x46ecd5=Math['floor'](_0x46e784/0x3c),_0x56c039=Math['floor'](_0x46ecd5/0x3c),_0x571da4=Math['floor'](_0x56c039/0x18);if(_0x46e784<0x3c)return _0x46e784+'s';if(_0x46ecd5<0x3c)return _0x46ecd5+'m\x20'+_0x46e784%0x3c+'s';if(_0x56c039<0x18)return _0x56c039+'h\x20'+_0x46ecd5%0x3c+'m\x20'+_0x46e784%0x3c+'s';return _0x571da4+'d\x20'+_0x56c039%0x18+'h\x20'+_0x46ecd5%0x3c+'m';},'renderMarkdown'(_0x2c9e17,_0x2ac7d2={}){if(!_0x2c9e17)return'';_0x2c9e17=this['rewriteAttachmentLinks'](_0x2c9e17,_0x2ac7d2),_0x2c9e17=this['rewriteColorSyntax'](_0x2c9e17);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x2c9e17);}catch(_0x2ea72f){return console['error']('Markdown\x20parsing\x20error:',_0x2ea72f),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);}},'rewriteAttachmentLinks'(_0x629bc5,_0x41dc5c={}){const _0x46a46b=typeof _0x41dc5c['resolveAttachmentUrl']==='function'?_0x41dc5c['resolveAttachmentUrl']:_0x41dc5c['taskId']?_0x43d3d3=>API_BASE+'/tasks/'+_0x41dc5c['taskId']+'/attachments/'+encodeURIComponent(_0x43d3d3):null;if(!_0x46a46b)return _0x629bc5;return String(_0x629bc5)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x348bef,_0x50595b)=>{const _0x18d3db=String(_0x50595b||'')['trim']();if(!_0x18d3db)return _0x348bef;let _0x40b60e=_0x18d3db;try{_0x40b60e=decodeURIComponent(_0x18d3db);}catch{}const _0x372632=_0x46a46b(_0x40b60e);if(!_0x372632)return _0x348bef;return']('+_0x372632+')';});},'rewriteColorSyntax'(_0x186798){if(!_0x186798)return _0x186798;return String(_0x186798)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x12c87e,_0x403e1c,_0x56f372)=>{const _0x4d19ec=this['rewriteColorSyntax'](_0x56f372);return'<span\x20style=\x22color:\x20'+_0x403e1c+'\x22>'+_0x4d19ec+'</span>';});},'renderMarkdownFallback'(_0x5209d2,_0x24bc4d={}){if(!_0x5209d2)return'';_0x5209d2=_0x5209d2['replace'](/\r\n/g,'\x0a'),_0x5209d2=_0x5209d2['replace'](/\r/g,'\x0a'),_0x5209d2=this['rewriteAttachmentLinks'](_0x5209d2,_0x24bc4d);let _0x3b5dd3=this['escapeHtml'](_0x5209d2);return _0x3b5dd3=_0x3b5dd3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3b5dd3=_0x3b5dd3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3b5dd3=_0x3b5dd3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3b5dd3=_0x3b5dd3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3b5dd3=_0x3b5dd3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3b5dd3=_0x3b5dd3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3b5dd3=_0x3b5dd3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n\n/g,'</p><p>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n/g,'<br>'),'<p>'+_0x3b5dd3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x923f6d=new Uint8Array(0x10);crypto['getRandomValues'](_0x923f6d),_0x923f6d[0x6]=_0x923f6d[0x6]&0xf|0x40,_0x923f6d[0x8]=_0x923f6d[0x8]&0x3f|0x80;const _0x5115bb=Array['from'](_0x923f6d,_0x354249=>_0x354249['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5115bb['slice'](0x0,0x8)+'-'+_0x5115bb['slice'](0x8,0xc)+'-'+_0x5115bb['slice'](0xc,0x10)+'-'+_0x5115bb['slice'](0x10,0x14)+'-'+_0x5115bb['slice'](0x14);}};export class CustomSelect{constructor(_0x919831,_0x463a7f={}){this['nativeSelect']=_0x919831,this['options']=_0x463a7f,this['isOpen']=![],this['selectedValue']=_0x919831['value']||'',this['searchable']=_0x463a7f['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4c58ff=document['createElement']('div');_0x4c58ff['className']='custom-select';const _0x518ebc=document['createElement']('div');_0x518ebc['className']='custom-select-trigger',_0x518ebc['setAttribute']('tabindex','0'),_0x518ebc['setAttribute']('role','button'),_0x518ebc['setAttribute']('aria-haspopup','listbox');const _0x3c05ba=document['createElement']('span');_0x3c05ba['className']='custom-select-trigger-text';const _0x512fe8=document['createElement']('span');_0x512fe8['className']='custom-select-arrow',_0x512fe8['textContent']='▼',_0x518ebc['appendChild'](_0x3c05ba),_0x518ebc['appendChild'](_0x512fe8);const _0x241d1f=document['createElement']('div');_0x241d1f['className']='custom-select-dropdown',_0x241d1f['setAttribute']('role','listbox');if(this['searchable']){const _0x360cf9=document['createElement']('div');_0x360cf9['className']='custom-select-search';const _0x1e0533=document['createElement']('input');_0x1e0533['type']='text',_0x1e0533['className']='custom-select-search-input',_0x1e0533['placeholder']='Type\x20to\x20search...',_0x1e0533['setAttribute']('aria-label','Search\x20options'),_0x1e0533['addEventListener']('input',_0x4e75e3=>{this['searchQuery']=_0x4e75e3['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1e0533['addEventListener']('keydown',_0x49e84e=>{if(_0x49e84e['key']==='Escape')_0x49e84e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x49e84e['key']==='Enter'){_0x49e84e['preventDefault'](),_0x49e84e['stopPropagation']();const _0xc39400=_0x241d1f['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0xc39400){const _0xbd42f4=_0xc39400['getAttribute']('data-value');this['select'](_0xbd42f4);}}}}),_0x360cf9['appendChild'](_0x1e0533),_0x241d1f['appendChild'](_0x360cf9),this['searchInput']=_0x1e0533;}const _0x56a7a6=document['createElement']('div');_0x56a7a6['className']='custom-select-options',_0x241d1f['appendChild'](_0x56a7a6),_0x4c58ff['appendChild'](_0x518ebc),_0x4c58ff['appendChild'](_0x241d1f),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4c58ff,this['nativeSelect']),this['wrapper']=_0x4c58ff,this['trigger']=_0x518ebc,this['triggerText']=_0x3c05ba,this['dropdown']=_0x241d1f,this['optionsContainer']=_0x56a7a6,_0x518ebc['addEventListener']('click',()=>this['toggle']()),_0x518ebc['addEventListener']('keydown',_0x3a20a5=>this['handleKeydown'](_0x3a20a5)),document['addEventListener']('click',_0x127481=>{!_0x4c58ff['contains'](_0x127481['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x1d486a=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x1d486a['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x411c08=new MutationObserver(()=>{this['updateDisabledState']();});_0x411c08['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5edfe9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5edfe9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x83351d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x83351d),this['trigger']['setAttribute']('aria-disabled',_0x83351d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x83351d?'-1':'0'),_0x83351d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x90593c=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4da6c4=_0x90593c['filter'](_0x1f13e=>!_0x1f13e['disabled']&&!_0x1f13e['hidden']);_0x90593c['forEach']((_0x434c81,_0x19c10d)=>{const _0x5b7b89=document['createElement']('div');_0x5b7b89['className']='custom-select-option',_0x5b7b89['textContent']=_0x434c81['textContent'],_0x5b7b89['setAttribute']('data-value',_0x434c81['value']),_0x5b7b89['setAttribute']('data-index',_0x19c10d),_0x5b7b89['setAttribute']('role','option'),_0x434c81['disabled']?_0x5b7b89['classList']['add']('disabled'):_0x5b7b89['addEventListener']('click',()=>this['select'](_0x434c81['value'])),_0x434c81['value']===this['selectedValue']&&_0x5b7b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x5b7b89),this['allOptions']['push']({'element':_0x5b7b89,'text':_0x434c81['textContent']['toLowerCase'](),'value':_0x434c81['value'],'disabled':_0x434c81['disabled']});});if(this['searchable']&&this['searchInput']){const _0x13369d=this['searchInput']['parentElement'];_0x4da6c4['length']>0x3?_0x13369d['style']['display']='':_0x13369d['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4f9a76=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x20184e=>{if(!_0x4f9a76||_0x20184e['disabled'])_0x20184e['element']['style']['display']='';else{const _0x2ae4e7=_0x20184e['text']['includes'](_0x4f9a76);_0x20184e['element']['style']['display']=_0x2ae4e7?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0xc60e15){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0xc60e15,this['nativeSelect']['value']=_0xc60e15;const _0x484460=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x484460),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x458e0e=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x458e0e&&(this['triggerText']['textContent']=_0x458e0e['textContent'],_0x458e0e['disabled']||_0x458e0e['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3505b0=>{_0x3505b0['getAttribute']('data-value')===this['selectedValue']?_0x3505b0['classList']['add']('selected'):_0x3505b0['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x41d82a=window['getComputedStyle'](this['dropdown']);if(_0x41d82a['position']==='fixed'){const _0x5918d1=this['trigger']['getBoundingClientRect'](),_0x3e89d4=parseInt(_0x41d82a['maxHeight'])||0xc8,_0x33dd12=window['innerHeight'],_0x39096a=_0x33dd12-_0x5918d1['bottom'],_0x20c1ea=_0x5918d1['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x16acb5;_0x39096a<_0x3e89d4&&_0x20c1ea>_0x39096a?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x33dd12-_0x5918d1['top']+'px',_0x16acb5=Math['min'](_0x3e89d4,_0x20c1ea-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5918d1['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x16acb5=Math['min'](_0x3e89d4,_0x39096a-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px');if(this['optionsContainer']){let _0x116345=_0x16acb5;if(this['searchInput']){const _0x5534ee=this['searchInput']['parentElement'];_0x5534ee&&(_0x116345-=_0x5534ee['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x116345)+'px';}this['dropdown']['style']['left']=_0x5918d1['left']+'px',this['dropdown']['style']['width']=_0x5918d1['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x44bf77=this['searchInput']['parentElement'];_0x44bf77&&_0x44bf77['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x150bdb){if(this['nativeSelect']['disabled'])return;if(_0x150bdb['key']==='Enter'||_0x150bdb['key']==='\x20')_0x150bdb['preventDefault'](),this['toggle']();else _0x150bdb['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x58db7f='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x58db7f),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2677b6=document['getElementById']('confirm-dialog-close'),_0x53becd=document['getElementById']('confirm-dialog-cancel'),_0x1767a8=document['getElementById']('confirm-dialog-confirm'),_0x4d7176=this['_modal']['querySelector']('.modal-overlay');_0x2677b6['addEventListener']('click',()=>this['_resolve'](![])),_0x53becd['addEventListener']('click',()=>this['_resolve'](![])),_0x1767a8['addEventListener']('click',()=>this['_resolve'](!![])),_0x4d7176['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x64230=>{if(_0x64230['key']==='Escape')_0x64230['preventDefault'](),this['_resolve'](![]);else _0x64230['key']==='Enter'&&(_0x64230['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x152b50,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x64604c=>{this['_resolvePromise']=_0x64604c,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x152b50;const _0x3d59c4=document['getElementById']('confirm-dialog-cancel'),_0x35cec2=document['getElementById']('confirm-dialog-confirm');_0x3d59c4['textContent']=cancelText,_0x35cec2['textContent']=confirmText,_0x35cec2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x35cec2['focus']();});},'_resolve'(_0x1d80d1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1d80d1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0xb14834,_0x389c4f={}){this['container']=_0xb14834,this['options']={'placeholder':_0x389c4f['placeholder']||'Type\x20to\x20search...','maxItems':_0x389c4f['maxItems']||0x64,'loadItems':_0x389c4f['loadItems']||(async()=>[]),'renderItem':_0x389c4f['renderItem']||(_0x26b262=>({'primary':String(_0x26b262),'secondary':''})),'onSelect':_0x389c4f['onSelect']||(()=>{}),'filterItems':_0x389c4f['filterItems']||null,'getItemValue':_0x389c4f['getItemValue']||(_0x484c82=>_0x484c82),'sortItems':_0x389c4f['sortItems']||null,'debounceMs':_0x389c4f['debounceMs']||0xc8,'minCharsForSearch':_0x389c4f['minCharsForSearch']||0x0,'emptyMessage':_0x389c4f['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x389c4f['loadingMessage']||'Loading...','preload':_0x389c4f['preload']!==![],'searchMode':_0x389c4f['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='&times;',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x3c431a=>this['onBlur'](_0x3c431a)),this['input']['addEventListener']('input',_0xd4a5f7=>this['onInput'](_0xd4a5f7)),this['input']['addEventListener']('keydown',_0x126f21=>this['onKeydown'](_0x126f21)),this['clearBtn']['addEventListener']('mousedown',_0x1b3292=>{_0x1b3292['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4477bd=>{_0x4477bd['preventDefault']();}),document['addEventListener']('click',_0x1c7445=>{!this['wrapper']['contains'](_0x1c7445['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x318d46){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x318d46);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x4fca3e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x399e7c){const _0x1598e5=_0x399e7c['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1598e5);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1598e5):this['loadAndShow'](_0x1598e5);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x140a40){switch(_0x140a40['key']){case'ArrowDown':_0x140a40['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x140a40['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x140a40['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x140a40['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x26ec6f){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x228b5f=this['selectedIndex']+_0x26ec6f;if(_0x228b5f>=0x0&&_0x228b5f<this['filteredItems']['length']){this['selectedIndex']=_0x228b5f,this['updateSelectionHighlight']();const _0x158124=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x158124[this['selectedIndex']]&&_0x158124[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x54f9ae=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x54f9ae['forEach']((_0x43cc24,_0x57cd84)=>{_0x43cc24['classList']['toggle']('keyboard-selected',_0x57cd84===this['selectedIndex']);});}async['loadAndShow'](_0x225fc4){this['showLoading']();try{const _0x7e355b=await this['options']['loadItems'](_0x225fc4);if(this['options']['searchMode']==='server'){let _0x55d72f=_0x7e355b;this['options']['sortItems']&&(_0x55d72f=this['options']['sortItems']([..._0x7e355b]));this['filteredItems']=_0x55d72f;const _0x160684=this['filteredItems']['length']>=this['options']['maxItems'];_0x160684&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x160684),this['open']();}else this['allItems']=_0x7e355b,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x225fc4);}catch(_0x390726){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x390726),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3c1978){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3c1978):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x49fc1b=this['filteredItems']['length']>=this['options']['maxItems'];_0x49fc1b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x49fc1b),this['open']();}['renderItems'](_0x5bcb){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x290be0,_0x3aabd3)=>{const _0x16103f=document['createElement']('div');_0x16103f['className']='autocomplete-select-item',_0x16103f['setAttribute']('role','option'),_0x16103f['setAttribute']('data-index',_0x3aabd3);const _0x198075=this['options']['renderItem'](_0x290be0);let _0x232837='';_0x198075['icon']&&(_0x232837='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x198075['iconClass']||'')+'\x22>'+_0x198075['icon']+'</span>'),_0x16103f['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x232837+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x198075['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x198075['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x198075['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x16103f['addEventListener']('click',()=>{this['selectItem'](_0x290be0);}),_0x16103f['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3aabd3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x16103f);}),_0x5bcb?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x414312){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x414312)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x5a880b){this['selectedItem']=_0x5a880b;const _0x3091cd=this['options']['renderItem'](_0x5a880b);this['input']['value']=_0x3091cd['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x5a880b);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x57678c){if(_0x57678c){this['selectedItem']=_0x57678c;const _0x4292ef=this['options']['renderItem'](_0x57678c);this['input']['value']=_0x4292ef['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x476c4b){this['allItems']=_0x476c4b,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x334b4a){this['input']['placeholder']=_0x334b4a;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3d6792=null){const _0x399757=document['getElementById']('admin-menu-container'),_0x2d5499=document['getElementById']('admin-menu-btn'),_0xec0951=document['getElementById']('admin-menu');if(!_0x399757||!_0x2d5499||!_0xec0951)return;try{!_0x3d6792&&(_0x3d6792=await API['getCurrentUser']());if(_0x3d6792){const _0x1d9b96=window['Permissions'],_0x1db6f1=_0x1d9b96['hasServerPermission'](_0x3d6792,'*')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:manage')||_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')||_0x1d9b96['hasTeamPermission'](_0x3d6792,'teams:manage')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:view_details');if(!_0x1db6f1)return;_0x399757['hidden']=![];if(!_0x1d9b96['hasServerPermission'](_0x3d6792,'*')){const _0x37e46f=_0xec0951['querySelectorAll']('.admin-menu-item');_0x37e46f['forEach'](_0x5e4dbf=>{const _0x184fb8=_0x5e4dbf['querySelector']('.option-text')?.['textContent']?.['trim']();_0x184fb8==='Users'&&!_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Skills'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Settings'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Health'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Git\x20History'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Roles'&&(_0x5e4dbf['hidden']=!![]);});}_0x2d5499['addEventListener']('click',_0x5bbd7e=>{_0x5bbd7e['stopPropagation']();const _0x58a6ca=document['getElementById']('actions-menu');if(_0x58a6ca)_0x58a6ca['hidden']=!![];_0xec0951['hidden']=!_0xec0951['hidden'];}),document['addEventListener']('click',_0x5a7159=>{!_0xec0951['hidden']&&!_0x2d5499['contains'](_0x5a7159['target'])&&!_0xec0951['contains'](_0x5a7159['target'])&&(_0xec0951['hidden']=!![]);}),document['addEventListener']('keydown',_0x544058=>{_0x544058['key']==='Escape'&&!_0xec0951['hidden']&&(_0xec0951['hidden']=!![]);});const _0xf93d10=document['getElementById']('server-health-btn');_0xf93d10&&_0xf93d10['addEventListener']('click',async()=>{_0xec0951['hidden']=!![];const {openServerHealthModal:_0x1dbb7e}=await import('./server-health.js');_0x1dbb7e();});}}catch(_0x2037e3){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x2037e3['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};