@profoundlogic/coderflow-server 0.6.3 → 0.6.4

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 (169) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  62. package/dist/lib/model-fetcher.js +1 -1
  63. package/dist/lib/notifications.js +1 -1
  64. package/dist/lib/objective-context.js +1 -1
  65. package/dist/lib/oidc-auth.js +1 -1
  66. package/dist/lib/oidc-device-flow.js +1 -1
  67. package/dist/lib/passwordTokens.js +1 -1
  68. package/dist/lib/permission-resolver.js +1 -1
  69. package/dist/lib/pin-cascade.js +1 -1
  70. package/dist/lib/provider-accounts.js +1 -1
  71. package/dist/lib/provider-oauth.js +1 -1
  72. package/dist/lib/provider-profile.js +1 -1
  73. package/dist/lib/provider-token-refresh.js +1 -1
  74. package/dist/lib/rbac-user-state.js +1 -1
  75. package/dist/lib/request-url.js +1 -1
  76. package/dist/lib/rewind.js +1 -1
  77. package/dist/lib/role-definitions.js +1 -1
  78. package/dist/lib/roles.js +1 -1
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-name-format.js +1 -1
  84. package/dist/lib/task-name-generator.js +1 -1
  85. package/dist/lib/task-source-metadata.js +1 -1
  86. package/dist/lib/teams.js +1 -1
  87. package/dist/lib/user-git-oauth.js +1 -1
  88. package/dist/lib/user-git-tokens.js +1 -1
  89. package/dist/lib/users.js +1 -1
  90. package/dist/middleware/requireAuth.js +1 -1
  91. package/dist/middleware/requireInit.js +1 -1
  92. package/dist/middleware/requirePermission.js +1 -1
  93. package/dist/package.json +1 -1
  94. package/dist/playwright.config.js +1 -1
  95. package/dist/playwright.task-terminal.config.js +1 -1
  96. package/dist/routes/apiKeys.js +1 -1
  97. package/dist/routes/auth-oidc.js +1 -1
  98. package/dist/routes/auth.js +1 -1
  99. package/dist/routes/automations.js +1 -1
  100. package/dist/routes/bindings.js +1 -1
  101. package/dist/routes/build.js +1 -1
  102. package/dist/routes/containers.js +1 -1
  103. package/dist/routes/deploy-task.js +1 -1
  104. package/dist/routes/environment-management.js +1 -1
  105. package/dist/routes/environments.js +1 -1
  106. package/dist/routes/external-skills.js +1 -1
  107. package/dist/routes/git-credentials.js +1 -1
  108. package/dist/routes/git-oauth.js +1 -1
  109. package/dist/routes/git-provider-setup.js +1 -1
  110. package/dist/routes/health.js +1 -1
  111. package/dist/routes/jira.js +1 -1
  112. package/dist/routes/objective-management.js +1 -1
  113. package/dist/routes/password.js +1 -1
  114. package/dist/routes/prompt.js +1 -1
  115. package/dist/routes/provider-auth.js +1 -1
  116. package/dist/routes/qa.js +1 -1
  117. package/dist/routes/roles.js +1 -1
  118. package/dist/routes/settings.js +1 -1
  119. package/dist/routes/skill-management.js +1 -1
  120. package/dist/routes/skills.js +1 -1
  121. package/dist/routes/tasks.js +1 -1
  122. package/dist/routes/teams.js +1 -1
  123. package/dist/routes/templates.js +1 -1
  124. package/dist/routes/test-task.js +1 -1
  125. package/dist/routes/test.js +1 -1
  126. package/dist/routes/users.js +1 -1
  127. package/dist/routes/visualizations.js +1 -1
  128. package/dist/scripts/create-user.js +1 -1
  129. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  130. package/dist/start.js +1 -1
  131. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  132. package/dist/web-ui/public/activity-feed.js +1 -1
  133. package/dist/web-ui/public/activity-formatters.js +1 -1
  134. package/dist/web-ui/public/agent-event-parser.js +1 -1
  135. package/dist/web-ui/public/app.js +1 -1
  136. package/dist/web-ui/public/approve-dialog.js +1 -1
  137. package/dist/web-ui/public/automation-links.js +1 -1
  138. package/dist/web-ui/public/automation-schedule.js +1 -1
  139. package/dist/web-ui/public/comments-widget.js +1 -1
  140. package/dist/web-ui/public/diff-utils.js +1 -1
  141. package/dist/web-ui/public/environments.js +1 -1
  142. package/dist/web-ui/public/feedback-widget.js +1 -1
  143. package/dist/web-ui/public/file-selection-tree.js +1 -1
  144. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  145. package/dist/web-ui/public/git-history.js +1 -1
  146. package/dist/web-ui/public/git-status.js +1 -1
  147. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  148. package/dist/web-ui/public/index.js +1 -1
  149. package/dist/web-ui/public/login.js +1 -1
  150. package/dist/web-ui/public/markdown-editor.js +1 -1
  151. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  152. package/dist/web-ui/public/modal-maximize.js +1 -1
  153. package/dist/web-ui/public/notifications.js +1 -1
  154. package/dist/web-ui/public/permissions.js +1 -1
  155. package/dist/web-ui/public/pr-dialog.js +1 -1
  156. package/dist/web-ui/public/roles.js +1 -1
  157. package/dist/web-ui/public/server-health.js +1 -1
  158. package/dist/web-ui/public/settings.js +1 -1
  159. package/dist/web-ui/public/setup-password.js +1 -1
  160. package/dist/web-ui/public/skills.js +1 -1
  161. package/dist/web-ui/public/sse-client.js +1 -1
  162. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  163. package/dist/web-ui/public/task.js +1 -1
  164. package/dist/web-ui/public/teams.js +1 -1
  165. package/dist/web-ui/public/terminal.js +1 -1
  166. package/dist/web-ui/public/theme.js +1 -1
  167. package/dist/web-ui/public/users.js +1 -1
  168. package/dist/web-ui/public/variant-grouping.js +1 -1
  169. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0xd86007=window['location']['pathname'],_0x1e0ab6=_0xd86007['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1e0ab6)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1e0ab6[0x1]),_0x1e0ab6[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4eb96e={}){const _0x3889b0=new URLSearchParams();_0x4eb96e['userId']&&_0x3889b0['set']('userId',String(_0x4eb96e['userId']));_0x4eb96e['automation']&&_0x3889b0['set']('automation',String(_0x4eb96e['automation']));const _0x351746=API_BASE+'/tasks/stats'+(_0x3889b0['toString']()?'?'+_0x3889b0['toString']():''),_0x1fb0e9=await fetch(_0x351746);if(!_0x1fb0e9['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x1fb0e9['statusText']);return await _0x1fb0e9['json']();},async 'getTasks'(_0x23187f={}){const _0x2a6129=new URLSearchParams();_0x23187f['status']&&_0x2a6129['set']('status',String(_0x23187f['status']));_0x23187f['environment']&&_0x2a6129['set']('environment',String(_0x23187f['environment']));_0x23187f['automation']&&_0x2a6129['set']('automation',String(_0x23187f['automation']));if(_0x23187f['include']){const _0x407284=Array['isArray'](_0x23187f['include'])?_0x23187f['include']['join'](','):String(_0x23187f['include']);_0x407284&&_0x2a6129['set']('include',_0x407284);}_0x23187f['filter']&&_0x2a6129['set']('filter',String(_0x23187f['filter']));_0x23187f['page']&&_0x2a6129['set']('page',String(_0x23187f['page']));_0x23187f['limit']&&_0x2a6129['set']('limit',String(_0x23187f['limit']));_0x23187f['userId']&&_0x2a6129['set']('userId',String(_0x23187f['userId']));_0x23187f['search']&&_0x2a6129['set']('search',String(_0x23187f['search']));_0x23187f['includeChildTasks']&&_0x2a6129['set']('includeChildTasks','true');const _0x161e56=API_BASE+'/tasks'+(_0x2a6129['toString']()?'?'+_0x2a6129['toString']():''),_0x28a52a=await fetch(_0x161e56);if(!_0x28a52a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x28a52a['statusText']);return await _0x28a52a['json']();},async 'getAutomations'(_0x55de9a={}){const _0x27a6b5=new URLSearchParams();_0x55de9a['environment']&&_0x27a6b5['set']('environment',String(_0x55de9a['environment']));const _0x267204=await fetch(API_BASE+'/api/automations'+(_0x27a6b5['toString']()?'?'+_0x27a6b5['toString']():''));if(!_0x267204['ok']){const _0x2bc365=await _0x267204['json']()['catch'](()=>({}));throw new Error(_0x2bc365['message']||_0x2bc365['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x267204['statusText']);}return await _0x267204['json']();},async 'getAutomation'(_0x235f1d){const _0x239ee6=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x235f1d));if(!_0x239ee6['ok']){const _0x2e07c2=await _0x239ee6['json']()['catch'](()=>({}));throw new Error(_0x2e07c2['message']||_0x2e07c2['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x239ee6['statusText']);}return await _0x239ee6['json']();},async 'createAutomation'(_0x39b233){const _0x43332b=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39b233||{})});if(!_0x43332b['ok']){const _0x19709b=await _0x43332b['json']()['catch'](()=>({}));throw new Error(_0x19709b['message']||_0x19709b['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x43332b['statusText']);}return await _0x43332b['json']();},async 'updateAutomation'(_0x3930bd,_0x29afa5){const _0x90f734=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3930bd),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29afa5||{})});if(!_0x90f734['ok']){const _0x56f6d3=await _0x90f734['json']()['catch'](()=>({}));throw new Error(_0x56f6d3['message']||_0x56f6d3['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x90f734['statusText']);}return await _0x90f734['json']();},async 'deleteAutomation'(_0x350957){const _0x12a6f1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x350957),{'method':'DELETE'});if(!_0x12a6f1['ok']){const _0x3f86ce=await _0x12a6f1['json']()['catch'](()=>({}));throw new Error(_0x3f86ce['message']||_0x3f86ce['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x12a6f1['statusText']);}return await _0x12a6f1['json']();},async 'triggerAutomation'(_0xa685a7){const _0x52e777=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa685a7)+'/trigger',{'method':'POST'});if(!_0x52e777['ok']){const _0x389214=await _0x52e777['json']()['catch'](()=>({}));throw new Error(_0x389214['message']||_0x389214['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x52e777['statusText']);}return await _0x52e777['json']();},async 'setAutomationEnabled'(_0x1498ef,_0x5f9694){const _0x2eb172=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1498ef)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5f9694})});if(!_0x2eb172['ok']){const _0x3bcad0=await _0x2eb172['json']()['catch'](()=>({}));throw new Error(_0x3bcad0['message']||_0x3bcad0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x2eb172['statusText']);}return await _0x2eb172['json']();},async 'getAutomationHistory'(_0x258817,_0x4e6728=0x32){const _0x545266=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x258817)+'/history?limit='+encodeURIComponent(String(_0x4e6728)));if(!_0x545266['ok']){const _0x1f5e9c=await _0x545266['json']()['catch'](()=>({}));throw new Error(_0x1f5e9c['message']||_0x1f5e9c['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x545266['statusText']);}return await _0x545266['json']();},async 'getTask'(_0x3ca4f8,_0x906524={}){const _0x4d0baa=new URLSearchParams();if(_0x906524['include']){const _0x5e0d45=Array['isArray'](_0x906524['include'])?_0x906524['include']['join'](','):String(_0x906524['include']);if(_0x5e0d45)_0x4d0baa['set']('include',_0x5e0d45);}const _0x1cd076=await fetch(API_BASE+'/tasks/'+_0x3ca4f8+(_0x4d0baa['toString']()?'?'+_0x4d0baa['toString']():''));if(!_0x1cd076['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1cd076['statusText']);return await _0x1cd076['json']();},async 'getTaskResults'(_0x3bcb2d){const _0x2a11a2=await fetch(API_BASE+'/tasks/'+_0x3bcb2d+'/results');if(!_0x2a11a2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2a11a2['statusText']);return await _0x2a11a2['json']();},async 'getTaskPatches'(_0x4eede9){const _0x1e7bda=await fetch(API_BASE+'/tasks/'+_0x4eede9+'/patches');if(!_0x1e7bda['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1e7bda['statusText']);return await _0x1e7bda['json']();},async 'getTaskAttachments'(_0x4db3cc){const _0x361a24=await fetch(API_BASE+'/tasks/'+_0x4db3cc+'/attachments');if(!_0x361a24['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x361a24['statusText']);return await _0x361a24['json']();},async 'uploadAttachments'(_0x59f4b3,_0x4c3265){const _0x374600=new FormData();for(const _0x4ca9b2 of _0x4c3265){_0x374600['append']('attachments',_0x4ca9b2);}const _0x331eee=await fetch(API_BASE+'/tasks/'+_0x59f4b3+'/attachments',{'method':'POST','body':_0x374600});if(!_0x331eee['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x331eee['statusText']);return await _0x331eee['json']();},async 'isAINameGenerationAvailable'(){try{const _0x77f736=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x77f736['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x77f736['json']();}catch(_0x49b0c6){return{'available':![],'reason':_0x49b0c6['message']};}},async 'generateTaskName'(_0x396759){try{const _0x2571ea=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x396759})});return await _0x2571ea['json']();}catch(_0x473e9e){return{'success':![],'error':_0x473e9e['message']};}},async 'createTask'(_0xcd3da1){let _0x52538d,_0x1331a9={};if(_0xcd3da1['files']&&_0xcd3da1['files']['length']>0x0){const _0x59728b=new FormData();for(const [_0x10b937,_0x7f35f6]of Object['entries'](_0xcd3da1)){if(_0x10b937!=='files'){if(_0x7f35f6==null)continue;typeof _0x7f35f6==='object'?_0x59728b['append'](_0x10b937,JSON['stringify'](_0x7f35f6)):_0x59728b['append'](_0x10b937,String(_0x7f35f6));}}for(const _0x298d96 of _0xcd3da1['files']){_0x59728b['append']('attachments',_0x298d96);}_0x52538d=_0x59728b;}else _0x1331a9['Content-Type']='application/json',_0x52538d=JSON['stringify'](_0xcd3da1);const _0x15e7d3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x1331a9,'body':_0x52538d});if(!_0x15e7d3['ok']){const _0xf2c2=await _0x15e7d3['json'](),_0x1ef7be=new Error(_0xf2c2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x15e7d3['statusText']),{message:_0x5807ed,..._0x52e880}=_0xf2c2;Object['assign'](_0x1ef7be,_0x52e880);throw _0x1ef7be;}return await _0x15e7d3['json']();},async 'createTestTask'(_0x4bc59d){const _0x5ef106=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bc59d)});if(!_0x5ef106['ok']){const _0x509251=await _0x5ef106['json']();throw new Error(_0x509251['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5ef106['statusText']);}return await _0x5ef106['json']();},async 'createEphemeralTest'(_0x285e4a){const _0x180b1c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x285e4a)});if(!_0x180b1c['ok']){const _0x9d4199=await _0x180b1c['json']();throw new Error(_0x9d4199['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x180b1c['statusText']);}return await _0x180b1c['json']();},async 'createDeployTask'(_0x44f50b){const _0x12a5e3=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44f50b)});if(!_0x12a5e3['ok']){const _0x27e48d=await _0x12a5e3['json']();throw new Error(_0x27e48d['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x12a5e3['statusText']);}return await _0x12a5e3['json']();},async 'getEnvironments'(){const _0x2641d8=await fetch(API_BASE+'/environments');if(!_0x2641d8['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2641d8['statusText']);return await _0x2641d8['json']();},async 'getEnvironment'(_0x12295b){const _0x306e60=await fetch(API_BASE+'/environments/'+_0x12295b);if(!_0x306e60['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x306e60['statusText']);return await _0x306e60['json']();},async 'getEnvironmentRepoHistory'(_0x15c2d0,_0x5050b7,_0x203522={}){if(!_0x15c2d0||!_0x5050b7)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3bd83f=new URLSearchParams();if(_0x203522['limit'])_0x3bd83f['set']('limit',String(_0x203522['limit']));if(_0x203522['offset'])_0x3bd83f['set']('offset',String(_0x203522['offset']));if(_0x203522['search'])_0x3bd83f['set']('search',String(_0x203522['search']));if(_0x203522['branch'])_0x3bd83f['set']('branch',String(_0x203522['branch']));const _0x4b1ddf=API_BASE+'/environments/'+encodeURIComponent(_0x15c2d0)+'/repos/'+encodeURIComponent(_0x5050b7)+'/git/history',_0x3c9b6c=await fetch(''+_0x4b1ddf+(_0x3bd83f['toString']()?'?'+_0x3bd83f['toString']():''));if(!_0x3c9b6c['ok']){const _0x476105=await _0x3c9b6c['json']()['catch'](()=>({}));throw new Error(_0x476105['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3c9b6c['statusText']);}return await _0x3c9b6c['json']();},async 'getEnvironmentRepoCommit'(_0x212f31,_0x3e9529,_0x2ae462){if(!_0x212f31||!_0x3e9529||!_0x2ae462)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xb6d515=API_BASE+'/environments/'+encodeURIComponent(_0x212f31)+'/repos/'+encodeURIComponent(_0x3e9529)+'/git/commits/'+encodeURIComponent(_0x2ae462),_0x5288b1=await fetch(_0xb6d515);if(!_0x5288b1['ok']){const _0x181b1a=await _0x5288b1['json']()['catch'](()=>({}));throw new Error(_0x181b1a['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5288b1['statusText']);}return await _0x5288b1['json']();},async 'getEnvironmentRepoBranches'(_0x58757c,_0x4e8bed){if(!_0x58757c||!_0x4e8bed)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1352a1=API_BASE+'/environments/'+encodeURIComponent(_0x58757c)+'/repos/'+encodeURIComponent(_0x4e8bed)+'/git/branches',_0x5053c2=await fetch(_0x1352a1);if(!_0x5053c2['ok']){const _0x2d5285=await _0x5053c2['json']()['catch'](()=>({}));throw new Error(_0x2d5285['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x5053c2['statusText']);}return await _0x5053c2['json']();},async 'revertEnvironmentRepoCommit'(_0x241f26,_0xb95a51,_0xeb8648,_0x3920a2={}){if(!_0x241f26||!_0xb95a51||!_0xeb8648)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5e9011=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x241f26)+'/repos/'+encodeURIComponent(_0xb95a51)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xeb8648,..._0x3920a2})});if(!_0x5e9011['ok']){const _0x443875=await _0x5e9011['json']()['catch'](()=>({}));throw new Error(_0x443875['message']||_0x443875['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5e9011['statusText']);}return await _0x5e9011['json']();},async 'getTemplates'(_0x20fcb7={}){const _0xcd9c2f=new URLSearchParams();if(_0x20fcb7['include']){const _0x345e68=Array['isArray'](_0x20fcb7['include'])?_0x20fcb7['include']['join'](','):String(_0x20fcb7['include']);if(_0x345e68)_0xcd9c2f['set']('include',_0x345e68);}const _0x480439=await fetch(API_BASE+'/templates'+(_0xcd9c2f['toString']()?'?'+_0xcd9c2f['toString']():''));if(!_0x480439['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x480439['statusText']);return await _0x480439['json']();},async 'getTemplatesForEnvironment'(_0x19f7b5,_0x3eb534={}){if(!_0x19f7b5)throw new Error('Environment\x20name\x20is\x20required');const _0x528c7c=new URLSearchParams();if(_0x3eb534['include']){const _0xb2b8dc=Array['isArray'](_0x3eb534['include'])?_0x3eb534['include']['join'](','):String(_0x3eb534['include']);if(_0xb2b8dc)_0x528c7c['set']('include',_0xb2b8dc);}const _0x4bc96e=await fetch(API_BASE+'/templates/'+_0x19f7b5+(_0x528c7c['toString']()?'?'+_0x528c7c['toString']():''));if(!_0x4bc96e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x19f7b5+':\x20'+_0x4bc96e['statusText']);return await _0x4bc96e['json']();},async 'getTemplate'(_0x3ddf73,_0x4c331a,_0x3f446e={}){if(!_0x3ddf73||!_0x4c331a)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x46d0f7=new URLSearchParams();if(_0x3f446e['include']){const _0x51c450=Array['isArray'](_0x3f446e['include'])?_0x3f446e['include']['join'](','):String(_0x3f446e['include']);if(_0x51c450)_0x46d0f7['set']('include',_0x51c450);}const _0x4dd2bc=await fetch(API_BASE+'/templates/'+_0x3ddf73+'/'+_0x4c331a+(_0x46d0f7['toString']()?'?'+_0x46d0f7['toString']():''));if(!_0x4dd2bc['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4dd2bc['statusText']);return await _0x4dd2bc['json']();},async 'getTaskLogs'(_0x4a905c,_0x53a357={}){if(!_0x4a905c)throw new Error('Task\x20ID\x20is\x20required');const _0x48739d=new URLSearchParams();_0x53a357['tail']&&_0x48739d['set']('tail',String(_0x53a357['tail']));const _0x662b63=await fetch(API_BASE+'/tasks/'+_0x4a905c+'/logs'+(_0x48739d['toString']()?'?'+_0x48739d['toString']():''));if(!_0x662b63['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x662b63['statusText']);return await _0x662b63['text']();},async 'getContainers'(){const _0x1bab0f=await fetch(API_BASE+'/containers');if(!_0x1bab0f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1bab0f['statusText']);return await _0x1bab0f['json']();},async 'getContainer'(_0x4d0e7b){const _0x588e27=await fetch(API_BASE+'/containers/'+_0x4d0e7b);if(!_0x588e27['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x588e27['statusText']);return await _0x588e27['json']();},async 'startInteractiveContainer'(_0x3e5ff1){const _0xa582bc=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e5ff1)});if(!_0xa582bc['ok']){const _0x524d74=await _0xa582bc['json']()['catch'](()=>({}));throw new Error(_0x524d74['message']||'Failed\x20to\x20start\x20container:\x20'+_0xa582bc['statusText']);}return await _0xa582bc['json']();},async 'stopContainer'(_0x340fad){const _0x5547b4=await fetch(API_BASE+'/containers/'+_0x340fad,{'method':'DELETE'});if(!_0x5547b4['ok']){const _0x16aa49=await _0x5547b4['json']()['catch'](()=>({}));throw new Error(_0x16aa49['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x5547b4['statusText']);}return await _0x5547b4['json']();},async 'stopTask'(_0x29947d){if(!_0x29947d)throw new Error('Task\x20ID\x20is\x20required');const _0x3ca9ea=await fetch(API_BASE+'/tasks/'+_0x29947d+'/stop',{'method':'POST'});if(!_0x3ca9ea['ok']){const _0x4a2ff6=await _0x3ca9ea['json']()['catch'](()=>({}));throw new Error(_0x4a2ff6['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x3ca9ea['statusText']);}return await _0x3ca9ea['json']();},async 'interruptTask'(_0x2ba5af){if(!_0x2ba5af)throw new Error('Task\x20ID\x20is\x20required');const _0x2af139=await fetch(API_BASE+'/tasks/'+_0x2ba5af+'/interrupt',{'method':'POST'});if(!_0x2af139['ok']){const _0xf649df=await _0x2af139['json']()['catch'](()=>({}));throw new Error(_0xf649df['error']||_0xf649df['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x2af139['statusText']);}return await _0x2af139['json']();},async 'startTask'(_0x4acd5c){if(!_0x4acd5c)throw new Error('Task\x20ID\x20is\x20required');const _0x567221=await fetch(API_BASE+'/tasks/'+_0x4acd5c+'/start',{'method':'POST'});if(!_0x567221['ok']){const _0x2a7826=await _0x567221['json']()['catch'](()=>({}));throw new Error(_0x2a7826['error']||'Failed\x20to\x20start\x20task:\x20'+_0x567221['statusText']);}return await _0x567221['json']();},async 'deleteTask'(_0xa166c2){if(!_0xa166c2)throw new Error('Task\x20ID\x20is\x20required');const _0x3dc35a=await fetch(API_BASE+'/tasks/'+_0xa166c2,{'method':'DELETE'});if(!_0x3dc35a['ok']){const _0x513861=await _0x3dc35a['json']()['catch'](()=>({}));throw new Error(_0x513861['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x3dc35a['statusText']);}return await _0x3dc35a['json']();},async 'refreshTasksFromDisk'(){const _0x552a98=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x552a98['ok']){const _0x3ed662=await _0x552a98['json']()['catch'](()=>({}));throw new Error(_0x3ed662['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x552a98['statusText']);}return await _0x552a98['json']();},async 'approveTask'(_0x2867ab,_0x4de840={}){if(!_0x2867ab)throw new Error('Task\x20ID\x20is\x20required');const _0x386879={'commit_message':_0x4de840['commit_message']||'','pull':_0x4de840['pull']??![],'push':_0x4de840['push']??![]};_0x4de840['new_branch']&&(_0x386879['new_branch']=_0x4de840['new_branch']);const _0x38cc83=await fetch(API_BASE+'/tasks/'+_0x2867ab+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x386879)});if(!_0x38cc83['ok']){const _0x1e0b3f=await _0x38cc83['json']()['catch'](()=>({}));let _0x45deb7=_0x1e0b3f['error']||_0x1e0b3f['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x38cc83['statusText'];if(_0x1e0b3f['results']&&Array['isArray'](_0x1e0b3f['results'])){const _0x13e7c1=_0x1e0b3f['results']['filter'](_0xd0f91b=>!_0xd0f91b['success']&&_0xd0f91b['error']);_0x13e7c1['length']>0x0&&(_0x45deb7=_0x13e7c1[0x0]['error']);}throw new Error(_0x45deb7);}return await _0x38cc83['json']();},async 'getPullRequestInfo'(_0x2553b6){if(!_0x2553b6)throw new Error('Task\x20ID\x20is\x20required');const _0x593826=await fetch(API_BASE+'/tasks/'+_0x2553b6+'/pull-request-info');if(!_0x593826['ok']){const _0x370ba3=await _0x593826['json']()['catch'](()=>({}));throw new Error(_0x370ba3['error']||_0x370ba3['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x593826['statusText']);}return await _0x593826['json']();},async 'createPullRequests'(_0xfa1a3f,_0x393d24){if(!_0xfa1a3f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x393d24||!Array['isArray'](_0x393d24))throw new Error('repos\x20array\x20is\x20required');const _0x18ab36=await fetch(API_BASE+'/tasks/'+_0xfa1a3f+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x393d24})});if(!_0x18ab36['ok']){const _0x5114ab=await _0x18ab36['json']()['catch'](()=>({}));let _0x18bb02=_0x5114ab['error']||_0x5114ab['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x18ab36['statusText'];if(_0x5114ab['results']&&Array['isArray'](_0x5114ab['results'])){const _0xd7c49b=_0x5114ab['results']['filter'](_0x3801e8=>!_0x3801e8['success']&&_0x3801e8['error']);_0xd7c49b['length']>0x0&&(_0x18bb02=_0xd7c49b[0x0]['error']);}throw new Error(_0x18bb02);}return await _0x18ab36['json']();},async 'syncRepos'(_0xb43c36){if(!_0xb43c36)throw new Error('Task\x20ID\x20is\x20required');const _0x4a76aa=await fetch(API_BASE+'/tasks/'+_0xb43c36+'/sync-repos',{'method':'POST'});if(!_0x4a76aa['ok']){const _0x4e0d7b=await _0x4a76aa['json']()['catch'](()=>({}));throw new Error(_0x4e0d7b['error']||_0x4e0d7b['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x4a76aa['statusText']);}return await _0x4a76aa['json']();},async 'getIbmiSyncInfo'(_0x25ab83){if(!_0x25ab83)throw new Error('Task\x20ID\x20is\x20required');const _0x208e08=await fetch(API_BASE+'/tasks/'+_0x25ab83+'/ibmi-sync-info');if(!_0x208e08['ok']){const _0x362189=await _0x208e08['json']()['catch'](()=>({}));throw new Error(_0x362189['error']||_0x362189['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x208e08['json']();},async 'getSyncFiles'(_0x3df87c){if(!_0x3df87c)throw new Error('Task\x20ID\x20is\x20required');const _0x11cc09=await fetch(API_BASE+'/tasks/'+_0x3df87c+'/sync-to-ibmi/files');if(!_0x11cc09['ok']){const _0x36f434=await _0x11cc09['json']()['catch'](()=>({}));throw new Error(_0x36f434['error']||_0x36f434['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x11cc09['json']();},async 'syncToIbmi'(_0x433e1f,_0x218d16,_0xc26911=null,_0x57735f=null,_0x24ecd9=null){if(!_0x433e1f)throw new Error('Task\x20ID\x20is\x20required');const _0x21857a={'library':_0x218d16};if(_0xc26911)_0x21857a['user']=_0xc26911;if(_0x57735f)_0x21857a['password']=_0x57735f;if(_0x24ecd9)_0x21857a['files']=_0x24ecd9;const _0xcf8f20=await fetch(API_BASE+'/tasks/'+_0x433e1f+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21857a)});if(!_0xcf8f20['ok']){const _0x3a8072=await _0xcf8f20['json']()['catch'](()=>({}));throw new Error(_0x3a8072['error']||_0x3a8072['message']||'Sync\x20failed');}return await _0xcf8f20['json']();},async 'getIbmiSyncLog'(_0x321450){if(!_0x321450)throw new Error('Task\x20ID\x20is\x20required');const _0x57ebd3=await fetch(API_BASE+'/tasks/'+_0x321450+'/ibmi-sync-log');if(!_0x57ebd3['ok']){const _0x3347d9=await _0x57ebd3['json']()['catch'](()=>({}));throw new Error(_0x3347d9['error']||_0x3347d9['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x57ebd3['json']();},async 'pullChanges'(_0x3c483c){if(!_0x3c483c)throw new Error('Task\x20ID\x20is\x20required');const _0x54ffc7=await fetch(API_BASE+'/tasks/'+_0x3c483c+'/pull-changes',{'method':'POST'});if(!_0x54ffc7['ok']){const _0x34b22a=await _0x54ffc7['json']()['catch'](()=>({}));throw new Error(_0x34b22a['error']||_0x34b22a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x54ffc7['statusText']);}return await _0x54ffc7['json']();},async 'readFile'(_0x5301f8,_0x41449a){if(!_0x5301f8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41449a)throw new Error('File\x20path\x20is\x20required');const _0xa3a73c=await fetch(API_BASE+'/tasks/'+_0x5301f8+'/files?path='+encodeURIComponent(_0x41449a));if(!_0xa3a73c['ok']){const _0x3fcc65=await _0xa3a73c['json']()['catch'](()=>({}));throw new Error(_0x3fcc65['error']||_0x3fcc65['message']||'Failed\x20to\x20read\x20file:\x20'+_0xa3a73c['statusText']);}return await _0xa3a73c['json']();},'getTaskFileDownloadUrl'(_0x262e72,_0x5b22cb){if(!_0x262e72)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b22cb)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x262e72+'/files/download?path='+encodeURIComponent(_0x5b22cb);},async 'writeFile'(_0xd01df3,_0x3a558b,_0x24b22f){if(!_0xd01df3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a558b)throw new Error('File\x20path\x20is\x20required');if(_0x24b22f===undefined)throw new Error('Content\x20is\x20required');const _0x3b1733=await fetch(API_BASE+'/tasks/'+_0xd01df3+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a558b,'content':_0x24b22f})});if(!_0x3b1733['ok']){const _0x439b78=await _0x3b1733['json']()['catch'](()=>({}));throw new Error(_0x439b78['error']||_0x439b78['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3b1733['statusText']);}return await _0x3b1733['json']();},async 'uploadTaskFiles'(_0x43f838,_0x1409a0,_0x518534){if(!_0x43f838)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1409a0)throw new Error('Target\x20directory\x20is\x20required');if(!_0x518534||_0x518534['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x561af4=new FormData();_0x561af4['append']('targetDir',_0x1409a0);for(const _0x35a8b5 of _0x518534){_0x561af4['append']('files',_0x35a8b5,_0x35a8b5['name']);}const _0x1b5daf=await fetch(API_BASE+'/tasks/'+_0x43f838+'/files/upload',{'method':'POST','body':_0x561af4});if(!_0x1b5daf['ok']){const _0x5688aa=await _0x1b5daf['json']()['catch'](()=>({}));throw new Error(_0x5688aa['error']||_0x5688aa['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1b5daf['statusText']);}return await _0x1b5daf['json']();},async 'deleteFile'(_0x2e134a,_0x452cef){if(!_0x2e134a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x452cef)throw new Error('File\x20path\x20is\x20required');const _0x434cd2=await fetch(API_BASE+'/tasks/'+_0x2e134a+'/files?path='+encodeURIComponent(_0x452cef),{'method':'DELETE'});if(!_0x434cd2['ok']){const _0x43a47b=await _0x434cd2['json']()['catch'](()=>({}));throw new Error(_0x43a47b['error']||_0x43a47b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x434cd2['statusText']);}return await _0x434cd2['json']();},async 'discardFile'(_0x1bfcf5,_0x551901,_0x377eb8){if(!_0x1bfcf5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x551901)throw new Error('File\x20path\x20is\x20required');if(!_0x377eb8)throw new Error('Repository\x20path\x20is\x20required');const _0x4d675d=await fetch(API_BASE+'/tasks/'+_0x1bfcf5+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x551901,'repoPath':_0x377eb8})});if(!_0x4d675d['ok']){const _0x446fc5=await _0x4d675d['json']()['catch'](()=>({}));throw new Error(_0x446fc5['error']||_0x446fc5['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4d675d['statusText']);}return await _0x4d675d['json']();},async 'followUpTask'(_0x37b037,_0x3d0863={}){if(!_0x37b037)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d0863['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x27c219,_0x3b56c4={};if(_0x3d0863['files']&&_0x3d0863['files']['length']>0x0){const _0xcdd3d7=new FormData();_0xcdd3d7['append']('instructions',_0x3d0863['instructions']);for(const _0x5c6e2d of _0x3d0863['files']){_0xcdd3d7['append']('attachments',_0x5c6e2d);}_0x27c219=_0xcdd3d7;}else _0x3b56c4['Content-Type']='application/json',_0x27c219=JSON['stringify']({'instructions':_0x3d0863['instructions']});const _0x4191b7=await fetch(API_BASE+'/tasks/'+_0x37b037+'/follow-up',{'method':'POST','headers':_0x3b56c4,'body':_0x27c219});if(!_0x4191b7['ok']){const _0x4c0652=await _0x4191b7['json']()['catch'](()=>({}));throw new Error(_0x4c0652['error']||_0x4c0652['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x4191b7['statusText']);}return await _0x4191b7['json']();},async 'getTaskRewindPoints'(_0x31c508){if(!_0x31c508)throw new Error('Task\x20ID\x20is\x20required');const _0x13b6c3=await fetch(API_BASE+'/tasks/'+_0x31c508+'/rewind-points');if(!_0x13b6c3['ok']){const _0x7690be=await _0x13b6c3['json']()['catch'](()=>({}));throw new Error(_0x7690be['error']||_0x7690be['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13b6c3['statusText']);}return await _0x13b6c3['json']();},async 'rewindTask'(_0x580de6,_0x27f0f2={}){if(!_0x580de6)throw new Error('Task\x20ID\x20is\x20required');const _0x5668a2=Number['isInteger'](_0x27f0f2['targetFollowUpCount'])?_0x27f0f2['targetFollowUpCount']:0x0,_0x29bdba={'targetFollowUpCount':_0x5668a2};typeof _0x27f0f2['instructions']==='string'&&_0x27f0f2['instructions']['trim']()&&(_0x29bdba['instructions']=_0x27f0f2['instructions']['trim']());typeof _0x27f0f2['rewindFiles']==='boolean'&&(_0x29bdba['rewindFiles']=_0x27f0f2['rewindFiles']);const _0x2cfe35=await fetch(API_BASE+'/tasks/'+_0x580de6+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29bdba)});if(!_0x2cfe35['ok']){const _0x35c130=await _0x2cfe35['json']()['catch'](()=>({}));throw new Error(_0x35c130['error']||_0x35c130['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2cfe35['statusText']);}return await _0x2cfe35['json']();},async 'login'(_0x342677,_0x11a591){const _0x5ba07d=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x342677,'password':_0x11a591})});if(!_0x5ba07d['ok']){const _0x5ec1fa=await _0x5ba07d['json']();throw new Error(_0x5ec1fa['message']||'Login\x20failed');}return await _0x5ba07d['json']();},async 'logout'(){const _0x2d7a8f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x2d7a8f['ok']){const _0x473d20=await _0x2d7a8f['json']();throw new Error(_0x473d20['message']||'Logout\x20failed');}return await _0x2d7a8f['json']();},async 'getCurrentUser'(){const _0x4bab83=await fetch(API_BASE+'/auth/me');if(!_0x4bab83['ok'])throw new Error('Not\x20authenticated');const _0x51b2b9=await _0x4bab83['json']();return _0x51b2b9['user'];},async 'getRolesInfo'(){const _0x4b2dab=await fetch(API_BASE+'/users/roles');if(!_0x4b2dab['ok']){const _0x5c3527=await _0x4b2dab['json']();throw new Error(_0x5c3527['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x4b2dab['json']();},async 'getUsers'(){const _0x387130=await fetch(API_BASE+'/users');if(!_0x387130['ok']){const _0x1ec85f=await _0x387130['json']();throw new Error(_0x1ec85f['message']||'Failed\x20to\x20get\x20users');}return await _0x387130['json']();},async 'getUser'(_0x212d08){const _0x44ddbe=await fetch(API_BASE+'/users/'+_0x212d08);if(!_0x44ddbe['ok']){const _0xfe7319=await _0x44ddbe['json']();throw new Error(_0xfe7319['message']||'Failed\x20to\x20get\x20user');}return await _0x44ddbe['json']();},async 'createUser'(_0x575dab){const _0x14964d=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x575dab)});if(!_0x14964d['ok']){const _0x31c96c=await _0x14964d['json']();throw new Error(_0x31c96c['message']||'Failed\x20to\x20create\x20user');}return await _0x14964d['json']();},async 'updateUser'(_0x2387b0,_0xc8242a){const _0x25e341=await fetch(API_BASE+'/users/'+_0x2387b0,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc8242a)});if(!_0x25e341['ok']){const _0x53507a=await _0x25e341['json']();throw new Error(_0x53507a['message']||'Failed\x20to\x20update\x20user');}return await _0x25e341['json']();},async 'deleteUser'(_0x2defbe){const _0x25a481=await fetch(API_BASE+'/users/'+_0x2defbe,{'method':'DELETE'});if(!_0x25a481['ok']){const _0x1cf76a=await _0x25a481['json']();throw new Error(_0x1cf76a['message']||'Failed\x20to\x20delete\x20user');}return await _0x25a481['json']();},async 'stopAllContainers'(){const _0x1eef2e=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x54a6ce=await _0x1eef2e['json']()['catch'](()=>({}));if(!_0x1eef2e['ok'])throw new Error(_0x54a6ce['message']||_0x54a6ce['error']||'Failed\x20to\x20stop\x20containers');return _0x54a6ce;},async 'removeStoppedContainers'(){const _0x17bd67=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x4b5ab0=await _0x17bd67['json']()['catch'](()=>({}));if(!_0x17bd67['ok'])throw new Error(_0x4b5ab0['message']||_0x4b5ab0['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x4b5ab0;},async 'pruneDockerResources'(){const _0x16516e=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x340711=await _0x16516e['json']()['catch'](()=>({}));if(!_0x16516e['ok'])throw new Error(_0x340711['message']||_0x340711['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x340711;},async 'createPasswordToken'(_0x3f081e,_0x4f899b='setup',_0x54ad7c=![]){const _0x582f2c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3f081e,'type':_0x4f899b,'sendEmail':_0x54ad7c})});if(!_0x582f2c['ok']){const _0x2c61c2=await _0x582f2c['json']();throw new Error(_0x2c61c2['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x582f2c['json']();},async 'getEmailConfig'(){const _0x39ef29=await fetch(API_BASE+'/password/email-config');if(!_0x39ef29['ok']){const _0x19c165=await _0x39ef29['json']();throw new Error(_0x19c165['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x39ef29['json']();},async 'updateTaskName'(_0x563601,_0x67c408){const _0xd90ea1=await fetch(API_BASE+'/tasks/'+_0x563601,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x67c408})});if(!_0xd90ea1['ok']){const _0x5f526e=await _0xd90ea1['json']();throw new Error(_0x5f526e['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xd90ea1['json']();},async 'pinTask'(_0xaa7d0d,_0x46c068,_0x46cf8d=null){if(!_0xaa7d0d)throw new Error('Task\x20ID\x20is\x20required');const _0x342dd0={'pinned':_0x46c068};_0x46cf8d&&_0x46cf8d['length']>0x0&&(_0x342dd0['additionalTaskIds']=_0x46cf8d);const _0x2b91b8=await fetch(API_BASE+'/tasks/'+_0xaa7d0d+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x342dd0)});if(!_0x2b91b8['ok']){const _0x32cd03=await _0x2b91b8['json']();throw new Error(_0x32cd03['error']||'Failed\x20to\x20pin\x20task');}return await _0x2b91b8['json']();},async 'setTaskWinner'(_0x2680ae,_0x22cdd4,_0x288915=[]){if(!_0x2680ae)throw new Error('Task\x20ID\x20is\x20required');const _0xa44c17=await fetch(API_BASE+'/tasks/'+_0x2680ae+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x22cdd4,'siblings':_0x288915})});if(!_0xa44c17['ok']){const _0x164f04=await _0xa44c17['json']();throw new Error(_0x164f04['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xa44c17['json']();},async 'setTaskLoser'(_0x3f428e,_0x103981){if(!_0x3f428e)throw new Error('Task\x20ID\x20is\x20required');const _0x2ffaf1=await fetch(API_BASE+'/tasks/'+_0x3f428e+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x103981})});if(!_0x2ffaf1['ok']){const _0x8a4539=await _0x2ffaf1['json']();throw new Error(_0x8a4539['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2ffaf1['json']();},async 'createTaskGroup'(_0x1c2a87){const _0x397bcc=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1c2a87)});if(!_0x397bcc['ok']){const _0x1336a3=await _0x397bcc['json']();throw new Error(_0x1336a3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x397bcc['json']();},async 'getTaskGroups'(_0x453955={}){const _0x46c06d=new URLSearchParams();if(_0x453955['userId'])_0x46c06d['set']('userId',String(_0x453955['userId']));if(_0x453955['status'])_0x46c06d['set']('status',String(_0x453955['status']));if(_0x453955['limit'])_0x46c06d['set']('limit',String(_0x453955['limit']));const _0x40a712=API_BASE+'/tasks/groups'+(_0x46c06d['toString']()?'?'+_0x46c06d['toString']():''),_0x2983ec=await fetch(_0x40a712);if(!_0x2983ec['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2983ec['json']();},async 'getTaskGroup'(_0x12cb77){const _0x28bd1c=await fetch(API_BASE+'/tasks/groups/'+_0x12cb77);if(!_0x28bd1c['ok']){const _0x31d33c=await _0x28bd1c['json']();throw new Error(_0x31d33c['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x28bd1c['json']();},async 'updateTaskGroup'(_0x430f13,_0x4d9e16,_0x248965){const _0x1bd9f3=await fetch(API_BASE+'/tasks/'+_0x430f13+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4d9e16,'groupIndex':_0x248965})});if(!_0x1bd9f3['ok']){const _0x5708f0=await _0x1bd9f3['json']();throw new Error(_0x5708f0['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x1bd9f3['json']();},async 'removeTaskFromGroup'(_0x2552b3){return this['updateTaskGroup'](_0x2552b3,null,null);},async 'deleteTaskGroup'(_0x554dbe,_0x498367=![]){const _0x45cbdd=_0x498367?'?deleteTasks=true':'',_0x1e9ee6=await fetch(API_BASE+'/tasks/groups/'+_0x554dbe+_0x45cbdd,{'method':'DELETE'});if(!_0x1e9ee6['ok']){const _0x4926cb=await _0x1e9ee6['json']();throw new Error(_0x4926cb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5df683,_0x10725b){const _0x1a92b3=await fetch(API_BASE+'/tasks/groups/'+_0x5df683+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x10725b})});if(!_0x1a92b3['ok']){const _0x5383ba=await _0x1a92b3['json']();throw new Error(_0x5383ba['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1a92b3['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x50d49c){if(!_0x50d49c)throw new Error('Task\x20ID\x20is\x20required');const _0x50e0e4=await fetch(API_BASE+'/tasks/'+_0x50d49c+'/comments');if(!_0x50e0e4['ok']){const _0x37800b=await _0x50e0e4['json']()['catch'](()=>({}));throw new Error(_0x37800b['error']||'Failed\x20to\x20get\x20comments');}return await _0x50e0e4['json']();},async 'addComment'(_0x211a46,_0x282c64){if(!_0x211a46)throw new Error('Task\x20ID\x20is\x20required');if(!_0x282c64)throw new Error('Comment\x20content\x20is\x20required');const _0x20a4b3=await fetch(API_BASE+'/tasks/'+_0x211a46+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x282c64})});if(!_0x20a4b3['ok']){const _0x393dbd=await _0x20a4b3['json']()['catch'](()=>({}));throw new Error(_0x393dbd['error']||'Failed\x20to\x20add\x20comment');}return await _0x20a4b3['json']();},async 'updateComment'(_0x113b97,_0x1d2f30,_0x3feba6){if(!_0x113b97)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1d2f30)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x3feba6)throw new Error('Comment\x20content\x20is\x20required');const _0x32c86a=await fetch(API_BASE+'/tasks/'+_0x113b97+'/comments/'+_0x1d2f30,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3feba6})});if(!_0x32c86a['ok']){const _0x5639c4=await _0x32c86a['json']()['catch'](()=>({}));throw new Error(_0x5639c4['error']||'Failed\x20to\x20update\x20comment');}return await _0x32c86a['json']();},async 'deleteComment'(_0x52ab4a,_0x54e311){if(!_0x52ab4a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54e311)throw new Error('Comment\x20ID\x20is\x20required');const _0x410f48=await fetch(API_BASE+'/tasks/'+_0x52ab4a+'/comments/'+_0x54e311,{'method':'DELETE'});if(!_0x410f48['ok']){const _0x512d24=await _0x410f48['json']()['catch'](()=>({}));throw new Error(_0x512d24['error']||'Failed\x20to\x20delete\x20comment');}return await _0x410f48['json']();},async 'createObjective'(_0x418dea){const _0x75be1e={'objective':!![],'name':_0x418dea['name']||'','environment':_0x418dea['environment']||null,'agents':_0x418dea['agents']||[],'branches':_0x418dea['branches']||{},'isPinned':_0x418dea['isPinned']||![],'parentObjectiveId':_0x418dea['parentObjectiveId']||null,'env_vars':_0x418dea['envVars']||{},'parameters':{'instructions':_0x418dea['instructions']||''},'files':_0x418dea['files']||[],'jira':_0x418dea['jira']||null};return this['createTask'](_0x75be1e);},async 'updateObjective'(_0x196f62,_0x4e3ed6,_0x146bc4=[],_0x5d115d=[]){let _0x2dea8c,_0x5d2c71={};const _0x18badb={..._0x4e3ed6};_0x5d115d&&_0x5d115d['length']>0x0&&(_0x18badb['removeAttachments']=_0x5d115d);if(_0x146bc4&&_0x146bc4['length']>0x0){const _0x732231=new FormData();for(const [_0x50990f,_0x503da9]of Object['entries'](_0x18badb)){if(_0x503da9==null)continue;typeof _0x503da9==='object'?_0x732231['append'](_0x50990f,JSON['stringify'](_0x503da9)):_0x732231['append'](_0x50990f,String(_0x503da9));}for(const _0x7a6e05 of _0x146bc4){_0x732231['append']('attachments',_0x7a6e05);}_0x2dea8c=_0x732231;}else _0x5d2c71['Content-Type']='application/json',_0x2dea8c=JSON['stringify'](_0x18badb);const _0x1981ae=await fetch(API_BASE+'/tasks/'+_0x196f62,{'method':'PATCH','headers':_0x5d2c71,'body':_0x2dea8c});if(!_0x1981ae['ok']){const _0x2d7383=await _0x1981ae['json']();throw new Error(_0x2d7383['error']||'Failed\x20to\x20update\x20objective');}return await _0x1981ae['json']();},async 'deleteObjective'(_0x1a746c){return this['deleteTask'](_0x1a746c);},async 'launchObjective'(_0x475594,_0x56a2a0={}){const _0x69ad99=await fetch(API_BASE+'/tasks/'+_0x475594+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56a2a0)});if(!_0x69ad99['ok']){const _0x26a6b4=await _0x69ad99['json']();throw new Error(_0x26a6b4['error']||'Failed\x20to\x20launch\x20objective');}return await _0x69ad99['json']();},async 'getObjectiveAttachments'(_0x406276){return this['getTaskAttachments'](_0x406276);},async 'createJudgeTask'({environment:_0xde9de9,judgeAgent:_0x89b3a2,groupId:_0x4f971a,taskIds:_0xbb58ea,judgeCustomInstructions:_0xcddeea,isPinned:_0x3dca2f}){const _0x257636=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xde9de9,'judgeAgent':_0x89b3a2,'groupId':_0x4f971a,'taskIds':_0xbb58ea,'judgeCustomInstructions':_0xcddeea,'isPinned':_0x3dca2f})});if(!_0x257636['ok']){const _0x3afa8b=await _0x257636['json']();throw new Error(_0x3afa8b['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x257636['json']();},async 'getJudgeTasks'(_0x16a42f){const _0x2570d2=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x16a42f));if(!_0x2570d2['ok']){const _0x8e6c86=await _0x2570d2['json']();throw new Error(_0x8e6c86['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2570d2['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1548f7,_0x246906,_0x2b53b2=''){const _0x404ca9=await fetch(API_BASE+'/tasks/'+_0x1548f7+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x246906,'customPreamble':_0x2b53b2})});if(!_0x404ca9['ok']){const _0x2cb7a3=await _0x404ca9['json']();throw new Error(_0x2cb7a3['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x404ca9['json']();},async 'getJiraConfig'(){const _0x1b1882=await fetch(API_BASE+'/jira/config');if(!_0x1b1882['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1b1882['json']();},async 'getJiraIssue'(_0x23181c){const _0x20e622=await fetch(API_BASE+'/jira/issues/'+_0x23181c);if(!_0x20e622['ok']){const _0x2b2124=await _0x20e622['json']()['catch'](()=>({}));throw new Error(_0x2b2124['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x20e622['statusText']);}return await _0x20e622['json']();},async 'searchJiraIssues'(_0xe37722,_0x13320c=0x14){const _0x177e1f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0xe37722,'maxResults':_0x13320c})});if(!_0x177e1f['ok']){const _0x17b72a=await _0x177e1f['json']()['catch'](()=>({}));throw new Error(_0x17b72a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x177e1f['statusText']);}return await _0x177e1f['json']();},async 'postJiraComment'(_0x103ec6,_0x3fd359){const _0x5431f0=await fetch(API_BASE+'/jira/issues/'+_0x103ec6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3fd359})});if(!_0x5431f0['ok']){const _0x12d9c1=await _0x5431f0['json']()['catch'](()=>({}));throw new Error(_0x12d9c1['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5431f0['statusText']);}return await _0x5431f0['json']();},async 'getJiraComments'(_0x506142){const _0x4149b9=await fetch(API_BASE+'/jira/issues/'+_0x506142+'/comments');if(!_0x4149b9['ok']){const _0x29d5c3=await _0x4149b9['json']()['catch'](()=>({}));throw new Error(_0x29d5c3['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x4149b9['statusText']);}return await _0x4149b9['json']();},async 'promptParameter'({environment:_0x3e5d93,command:_0x47ee65,parser:parser='json'}){const _0x32f20f=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3e5d93,'command':_0x47ee65,'parser':parser})});if(!_0x32f20f['ok']){const _0x5717d0=await _0x32f20f['json']()['catch'](()=>({}));throw new Error(_0x5717d0['message']||_0x5717d0['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x32f20f['statusText']);}return await _0x32f20f['json']();},async 'promptParameterStream'(_0x5211df,_0x5de542){const _0x1c8250=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5211df)});if(!_0x1c8250['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x1c8250['statusText']);const _0x3117bf=_0x1c8250['body']['getReader'](),_0x7a1387=new TextDecoder();let _0x65ae97='';return new Promise((_0x66c3d9,_0x2bd640)=>{const _0x454ff8=async()=>{try{const {done:_0x17d6c5,value:_0x1611e0}=await _0x3117bf['read']();if(_0x17d6c5)return;_0x65ae97+=_0x7a1387['decode'](_0x1611e0,{'stream':!![]});const _0x557b5f=_0x65ae97['split']('\x0a\x0a');_0x65ae97=_0x557b5f['pop']()||'';for(const _0x5dc447 of _0x557b5f){if(!_0x5dc447['trim']())continue;const _0x478d76=_0x5dc447['split']('\x0a');let _0x2bbcb3='message',_0x1c3e0d='';for(const _0x5b2d87 of _0x478d76){if(_0x5b2d87['startsWith']('event:'))_0x2bbcb3=_0x5b2d87['substring'](0x6)['trim']();else _0x5b2d87['startsWith']('data:')&&(_0x1c3e0d=_0x5b2d87['substring'](0x5)['trim']());}if(!_0x1c3e0d)continue;try{const _0x1a1177=JSON['parse'](_0x1c3e0d);if(_0x2bbcb3==='progress'&&_0x5de542)_0x5de542(_0x1a1177['stage'],_0x1a1177['message']);else{if(_0x2bbcb3==='result'){_0x66c3d9(_0x1a1177);return;}else{if(_0x2bbcb3==='error'){let _0x4d7b34=_0x1a1177['message']||_0x1a1177['error']||'Prompt\x20command\x20failed';_0x1a1177['rawOutput']&&(_0x4d7b34+='\x0a\x0aRaw\x20output:\x0a'+_0x1a1177['rawOutput']);_0x2bd640(new Error(_0x4d7b34));return;}}}}catch(_0x5dbf42){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5dbf42),console['error']('Event\x20type:',_0x2bbcb3),console['error']('Event\x20data:',_0x1c3e0d),console['error']('First\x20200\x20chars:',_0x1c3e0d['substring'](0x0,0xc8)),_0x2bd640(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5dbf42['message']+'\x0a\x0aData:\x20'+_0x1c3e0d['substring'](0x0,0x1f4)));return;}}_0x454ff8();}catch(_0x1dfa09){_0x2bd640(_0x1dfa09);}};_0x454ff8();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xa04450){const _0x6392de=await fetch(''+API_BASE+_0xa04450);if(!_0x6392de['ok']){const _0x1bf07e=await _0x6392de['json']()['catch'](()=>({'error':_0x6392de['statusText']})),_0x58d3f9=new Error(_0x1bf07e['error']||_0x1bf07e['message']||_0x6392de['statusText']);if(_0x1bf07e['detail']!==undefined)_0x58d3f9['detail']=_0x1bf07e['detail'];throw _0x58d3f9;}return await _0x6392de['json']();},async 'post'(_0x4baeee,_0x1f2329){const _0x42f695=await fetch(''+API_BASE+_0x4baeee,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f2329)});if(!_0x42f695['ok']){const _0x16eac9=await _0x42f695['json']()['catch'](()=>({'error':_0x42f695['statusText']})),_0x5aba9b=new Error(_0x16eac9['error']||_0x16eac9['message']||_0x42f695['statusText']);if(_0x16eac9['detail']!==undefined)_0x5aba9b['detail']=_0x16eac9['detail'];throw _0x5aba9b;}return await _0x42f695['json']();},async 'put'(_0x1d1252,_0x2df8d8){const _0x28c933=await fetch(''+API_BASE+_0x1d1252,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2df8d8)});if(!_0x28c933['ok']){const _0x51fc61=await _0x28c933['json']()['catch'](()=>({'error':_0x28c933['statusText']})),_0x36f04e=new Error(_0x51fc61['error']||_0x51fc61['message']||_0x28c933['statusText']);if(_0x51fc61['detail']!==undefined)_0x36f04e['detail']=_0x51fc61['detail'];throw _0x36f04e;}return await _0x28c933['json']();},async 'delete'(_0x3fb029,_0x4a3cbd){const _0xe83584={'method':'DELETE'};_0x4a3cbd&&(_0xe83584['headers']={'Content-Type':'application/json'},_0xe83584['body']=JSON['stringify'](_0x4a3cbd));const _0x1ea12f=await fetch(''+API_BASE+_0x3fb029,_0xe83584);if(!_0x1ea12f['ok']){const _0x2193d2=await _0x1ea12f['json']()['catch'](()=>({'error':_0x1ea12f['statusText']})),_0x12cc35=new Error(_0x2193d2['error']||_0x2193d2['message']||_0x1ea12f['statusText']);if(_0x2193d2['detail']!==undefined)_0x12cc35['detail']=_0x2193d2['detail'];throw _0x12cc35;}return await _0x1ea12f['json']();},async 'getSkills'(){const _0x2bd82d=await fetch(API_BASE+'/skills');if(!_0x2bd82d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2bd82d['statusText']);return await _0x2bd82d['json']();},async 'getSkill'(_0x135aa1){const _0x330c60=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x135aa1));if(!_0x330c60['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x330c60['statusText']);return await _0x330c60['json']();},async 'createSkill'(_0x3148d3){const _0x5d9bda=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3148d3)});if(!_0x5d9bda['ok']){const _0x21e97f=await _0x5d9bda['json']()['catch'](()=>({'error':_0x5d9bda['statusText']})),_0x3821d0=new Error(_0x21e97f['error']||_0x21e97f['message']||_0x5d9bda['statusText']);if(_0x21e97f['detail']!==undefined)_0x3821d0['detail']=_0x21e97f['detail'];throw _0x3821d0;}return await _0x5d9bda['json']();},async 'updateSkill'(_0x17e2fe,_0x4480c1){const _0x47f3c7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17e2fe),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4480c1)});if(!_0x47f3c7['ok']){const _0x4ae3ab=await _0x47f3c7['json']()['catch'](()=>({'error':_0x47f3c7['statusText']})),_0x2a812e=new Error(_0x4ae3ab['error']||_0x4ae3ab['message']||_0x47f3c7['statusText']);if(_0x4ae3ab['detail']!==undefined)_0x2a812e['detail']=_0x4ae3ab['detail'];throw _0x2a812e;}return await _0x47f3c7['json']();},async 'deleteSkill'(_0x8b087a){const _0x15f1e4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x8b087a),{'method':'DELETE'});if(!_0x15f1e4['ok']){const _0x461a2c=await _0x15f1e4['json']()['catch'](()=>({'error':_0x15f1e4['statusText']})),_0x1cdec4=new Error(_0x461a2c['error']||_0x461a2c['message']||_0x15f1e4['statusText']);if(_0x461a2c['detail']!==undefined)_0x1cdec4['detail']=_0x461a2c['detail'];throw _0x1cdec4;}return await _0x15f1e4['json']();},async 'getSkillFile'(_0x3f5494,_0x8293d1){const _0x82cc1b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f5494)+'/files/'+_0x8293d1);if(!_0x82cc1b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x82cc1b['statusText']);return await _0x82cc1b['json']();},async 'saveSkillFile'(_0x5b3869,_0x2f8480,_0x4bc561){const _0x58d922=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5b3869)+'/files/'+_0x2f8480,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4bc561})});if(!_0x58d922['ok']){const _0x4240c7=await _0x58d922['json']()['catch'](()=>({'error':_0x58d922['statusText']})),_0x44ce91=new Error(_0x4240c7['error']||_0x4240c7['message']||_0x58d922['statusText']);if(_0x4240c7['detail']!==undefined)_0x44ce91['detail']=_0x4240c7['detail'];throw _0x44ce91;}return await _0x58d922['json']();},async 'deleteSkillFile'(_0x425e97,_0x51bd45){const _0x2862b2=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x425e97)+'/files/'+_0x51bd45,{'method':'DELETE'});if(!_0x2862b2['ok']){const _0x2ae6b8=await _0x2862b2['json']()['catch'](()=>({'error':_0x2862b2['statusText']})),_0x2fa3c0=new Error(_0x2ae6b8['error']||_0x2ae6b8['message']||_0x2862b2['statusText']);if(_0x2ae6b8['detail']!==undefined)_0x2fa3c0['detail']=_0x2ae6b8['detail'];throw _0x2fa3c0;}return await _0x2862b2['json']();},async 'pullSkills'(){const _0x5d0693=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5d0693['ok']){const _0x208642=await _0x5d0693['json']()['catch'](()=>({'error':_0x5d0693['statusText']})),_0x57eb71=new Error(_0x208642['error']||_0x208642['message']||_0x5d0693['statusText']);if(_0x208642['detail']!==undefined)_0x57eb71['detail']=_0x208642['detail'];throw _0x57eb71;}return await _0x5d0693['json']();},async 'commitSkills'(_0x33f03e,_0x2e4605={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x2e4605,_0x5a9c2a=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x33f03e,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5a9c2a['ok']){const _0x5e5645=await _0x5a9c2a['json']()['catch'](()=>({'error':_0x5a9c2a['statusText']})),_0x2b050e=new Error(_0x5e5645['error']||_0x5e5645['message']||_0x5a9c2a['statusText']);if(_0x5e5645['detail']!==undefined)_0x2b050e['detail']=_0x5e5645['detail'];throw _0x2b050e;}return await _0x5a9c2a['json']();},async 'discardSkillsChanges'(){const _0x379014=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x379014['ok']){const _0xdce7bf=await _0x379014['json']()['catch'](()=>({'error':_0x379014['statusText']})),_0x1b7291=new Error(_0xdce7bf['error']||_0xdce7bf['message']||_0x379014['statusText']);if(_0xdce7bf['detail']!==undefined)_0x1b7291['detail']=_0xdce7bf['detail'];throw _0x1b7291;}return await _0x379014['json']();},async 'getSkillCatalog'(){const _0x32da05=await fetch(API_BASE+'/external-skills/catalog');if(!_0x32da05['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x32da05['statusText']);return await _0x32da05['json']();},async 'getImportedSkillsRegistry'(){const _0x221f4a=await fetch(API_BASE+'/external-skills/registry');if(!_0x221f4a['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x221f4a['statusText']);return await _0x221f4a['json']();},async 'importCatalogSkill'(_0x451e52){const _0x1e5401=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x451e52})});if(!_0x1e5401['ok']){const _0x110053=await _0x1e5401['json']()['catch'](()=>({'error':_0x1e5401['statusText']})),_0x2eb1ca=new Error(_0x110053['error']||_0x110053['message']||_0x1e5401['statusText']);if(_0x110053['detail']!==undefined)_0x2eb1ca['detail']=_0x110053['detail'];throw _0x2eb1ca;}return await _0x1e5401['json']();},async 'importSkillFromGit'(_0x1095af,_0x5134a3,_0x1ab5b3='main',_0x4a52cc=null){const _0x3fbc69=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1095af,'skillPath':_0x5134a3,'branch':_0x1ab5b3,'skillId':_0x4a52cc})});if(!_0x3fbc69['ok']){const _0x755b7c=await _0x3fbc69['json']()['catch'](()=>({'error':_0x3fbc69['statusText']})),_0x263336=new Error(_0x755b7c['error']||_0x755b7c['message']||_0x3fbc69['statusText']);if(_0x755b7c['detail']!==undefined)_0x263336['detail']=_0x755b7c['detail'];throw _0x263336;}return await _0x3fbc69['json']();},async 'probeMarketplace'(_0x546057,_0x5a8ea2='main'){const _0x1c69bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x546057,'branch':_0x5a8ea2})});if(!_0x1c69bd['ok']){const _0x5f3672=await _0x1c69bd['json']()['catch'](()=>({'error':_0x1c69bd['statusText']})),_0x309376=new Error(_0x5f3672['error']||_0x5f3672['message']||_0x1c69bd['statusText']);if(_0x5f3672['detail']!==undefined)_0x309376['detail']=_0x5f3672['detail'];throw _0x309376;}return await _0x1c69bd['json']();},async 'importMarketplaceBundle'(_0xba0155,_0x2adddf,_0x34f1c5,_0x393d12=null){const _0x49a764=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xba0155,'branch':_0x2adddf,'bundleId':_0x34f1c5,'selectedSkills':_0x393d12})});if(!_0x49a764['ok']){const _0x21ab45=await _0x49a764['json']()['catch'](()=>({'error':_0x49a764['statusText']})),_0x5bf1c2=new Error(_0x21ab45['error']||_0x21ab45['message']||_0x49a764['statusText']);if(_0x21ab45['detail']!==undefined)_0x5bf1c2['detail']=_0x21ab45['detail'];throw _0x5bf1c2;}return await _0x49a764['json']();},async 'importSkillFromFolder'(_0x2a3c19,_0x131c4a=null){const _0x44f528=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2a3c19,'skillId':_0x131c4a})});if(!_0x44f528['ok']){const _0x51c1a8=await _0x44f528['json']()['catch'](()=>({'error':_0x44f528['statusText']})),_0x15e16b=new Error(_0x51c1a8['error']||_0x51c1a8['message']||_0x44f528['statusText']);if(_0x51c1a8['detail']!==undefined)_0x15e16b['detail']=_0x51c1a8['detail'];throw _0x15e16b;}return await _0x44f528['json']();},async 'importSkillFromNpm'(_0x2f82d1,_0x4bdbf8='latest',_0x24e3f2=null,_0x465243=null){const _0x317891=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x2f82d1,'version':_0x4bdbf8,'skillId':_0x24e3f2,'registry':_0x465243})});if(!_0x317891['ok']){const _0x13571a=await _0x317891['json']()['catch'](()=>({'error':_0x317891['statusText']})),_0x3abe38=new Error(_0x13571a['error']||_0x13571a['message']||_0x317891['statusText']);if(_0x13571a['detail']!==undefined)_0x3abe38['detail']=_0x13571a['detail'];throw _0x3abe38;}return await _0x317891['json']();},async 'checkSkillUpdates'(_0x131e48){const _0x3219f4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x131e48)+'/check-updates',{'method':'POST'});if(!_0x3219f4['ok']){const _0x286dc7=await _0x3219f4['json']()['catch'](()=>({'error':_0x3219f4['statusText']})),_0x594f0d=new Error(_0x286dc7['error']||_0x286dc7['message']||_0x3219f4['statusText']);if(_0x286dc7['detail']!==undefined)_0x594f0d['detail']=_0x286dc7['detail'];throw _0x594f0d;}return await _0x3219f4['json']();},async 'updateExternalSkill'(_0x3bd65c){const _0x4cfe26=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3bd65c)+'/update',{'method':'POST'});if(!_0x4cfe26['ok']){const _0x408f2c=await _0x4cfe26['json']()['catch'](()=>({'error':_0x4cfe26['statusText']})),_0x466f97=new Error(_0x408f2c['error']||_0x408f2c['message']||_0x4cfe26['statusText']);if(_0x408f2c['detail']!==undefined)_0x466f97['detail']=_0x408f2c['detail'];throw _0x466f97;}return await _0x4cfe26['json']();},async 'updateSkillFlags'(_0x359813,_0x577a14){const _0x147946=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x359813)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x577a14})});if(!_0x147946['ok']){const _0xa05079=await _0x147946['json']()['catch'](()=>({'error':_0x147946['statusText']})),_0x3898bd=new Error(_0xa05079['error']||_0xa05079['message']||_0x147946['statusText']);if(_0xa05079['detail']!==undefined)_0x3898bd['detail']=_0xa05079['detail'];throw _0x3898bd;}return await _0x147946['json']();},async 'removeFromImportedRegistry'(_0x477908){const _0x3c84e0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x477908)+'/registry',{'method':'DELETE'});if(!_0x3c84e0['ok']){const _0x802807=await _0x3c84e0['json']()['catch'](()=>({'error':_0x3c84e0['statusText']})),_0x947ad3=new Error(_0x802807['error']||_0x802807['message']||_0x3c84e0['statusText']);if(_0x802807['detail']!==undefined)_0x947ad3['detail']=_0x802807['detail'];throw _0x947ad3;}return await _0x3c84e0['json']();},async 'getTeams'(){const _0x28c1f4=await fetch(API_BASE+'/teams');if(!_0x28c1f4['ok']){const _0x1fb82d=await _0x28c1f4['json']()['catch'](()=>({'message':_0x28c1f4['statusText']}));throw new Error(_0x1fb82d['message']||'Failed\x20to\x20get\x20teams');}return await _0x28c1f4['json']();},async 'getTeam'(_0xaeaf96){const _0x42c0c1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xaeaf96));if(!_0x42c0c1['ok']){const _0x607ff4=await _0x42c0c1['json']()['catch'](()=>({'message':_0x42c0c1['statusText']}));throw new Error(_0x607ff4['message']||'Failed\x20to\x20get\x20team');}return await _0x42c0c1['json']();},async 'createTeam'(_0x266029){const _0x1cf5e0=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x266029)});if(!_0x1cf5e0['ok']){const _0xda138b=await _0x1cf5e0['json']()['catch'](()=>({'message':_0x1cf5e0['statusText']}));throw new Error(_0xda138b['message']||'Failed\x20to\x20create\x20team');}return await _0x1cf5e0['json']();},async 'updateTeam'(_0x98634f,_0x1abda9){const _0x2298d9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x98634f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1abda9)});if(!_0x2298d9['ok']){const _0x25d2fe=await _0x2298d9['json']()['catch'](()=>({'message':_0x2298d9['statusText']}));throw new Error(_0x25d2fe['message']||'Failed\x20to\x20update\x20team');}return await _0x2298d9['json']();},async 'deleteTeam'(_0x475268){const _0xb72a63=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x475268),{'method':'DELETE'});if(!_0xb72a63['ok']){const _0x264512=await _0xb72a63['json']()['catch'](()=>({'message':_0xb72a63['statusText']}));throw new Error(_0x264512['message']||'Failed\x20to\x20delete\x20team');}return await _0xb72a63['json']();},async 'addTeamMember'(_0x295e9b,_0x2221e5){const _0x2b1d2e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x295e9b)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2221e5})});if(!_0x2b1d2e['ok']){const _0x568f6d=await _0x2b1d2e['json']()['catch'](()=>({'message':_0x2b1d2e['statusText']}));throw new Error(_0x568f6d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2b1d2e['json']();},async 'removeTeamMember'(_0x534b63,_0x2a4105){const _0x47dc13=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x534b63)+'/members/'+encodeURIComponent(_0x2a4105),{'method':'DELETE'});if(!_0x47dc13['ok']){const _0x461b63=await _0x47dc13['json']()['catch'](()=>({'message':_0x47dc13['statusText']}));throw new Error(_0x461b63['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x47dc13['json']();},async 'getBindings'(_0x48926b={}){const _0x56e91a=new URLSearchParams();if(_0x48926b['resource_type'])_0x56e91a['set']('resource_type',_0x48926b['resource_type']);if(_0x48926b['resource_id'])_0x56e91a['set']('resource_id',_0x48926b['resource_id']);if(_0x48926b['subject_type'])_0x56e91a['set']('subject_type',_0x48926b['subject_type']);if(_0x48926b['subject_id'])_0x56e91a['set']('subject_id',_0x48926b['subject_id']);const _0xd0cc62=_0x56e91a['toString'](),_0x86b4f0=await fetch(API_BASE+'/bindings'+(_0xd0cc62?'?'+_0xd0cc62:''));if(!_0x86b4f0['ok']){const _0x2eaba6=await _0x86b4f0['json']()['catch'](()=>({'message':_0x86b4f0['statusText']}));throw new Error(_0x2eaba6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x86b4f0['json']();},async 'createBinding'(_0x198cd3){const _0xe8a51=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x198cd3)});if(!_0xe8a51['ok']){const _0x54c7b7=await _0xe8a51['json']()['catch'](()=>({'message':_0xe8a51['statusText']}));throw new Error(_0x54c7b7['message']||'Failed\x20to\x20create\x20binding');}return await _0xe8a51['json']();},async 'updateBinding'(_0x3a6b39,_0x2e3352){const _0x1dbaae=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3a6b39),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e3352)});if(!_0x1dbaae['ok']){const _0x572306=await _0x1dbaae['json']()['catch'](()=>({'message':_0x1dbaae['statusText']}));throw new Error(_0x572306['message']||'Failed\x20to\x20update\x20binding');}return await _0x1dbaae['json']();},async 'deleteBinding'(_0x467c3c){const _0x2b2e9a=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x467c3c),{'method':'DELETE'});if(!_0x2b2e9a['ok']){const _0x5382aa=await _0x2b2e9a['json']()['catch'](()=>({'message':_0x2b2e9a['statusText']}));throw new Error(_0x5382aa['message']||'Failed\x20to\x20delete\x20binding');}return await _0x2b2e9a['json']();},async 'getRoleDefinitions'(){const _0x196145=await fetch(API_BASE+'/roles');if(!_0x196145['ok']){const _0x2425fb=await _0x196145['json']()['catch'](()=>({'message':_0x196145['statusText']}));throw new Error(_0x2425fb['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x196145['json']();},async 'getRoleDefinition'(_0x146546){const _0x4d9536=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x146546));if(!_0x4d9536['ok']){const _0x39f6c3=await _0x4d9536['json']()['catch'](()=>({'message':_0x4d9536['statusText']}));throw new Error(_0x39f6c3['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4d9536['json']();},async 'createRoleDefinition'(_0x36c156){const _0x4a6c5e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36c156)});if(!_0x4a6c5e['ok']){const _0x20bc9d=await _0x4a6c5e['json']()['catch'](()=>({'message':_0x4a6c5e['statusText']}));throw new Error(_0x20bc9d['message']||_0x20bc9d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4a6c5e['json']();},async 'updateRoleDefinition'(_0x3682fc,_0x285ea0){const _0x452379=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3682fc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x285ea0)});if(!_0x452379['ok']){const _0x2b9bb4=await _0x452379['json']()['catch'](()=>({'message':_0x452379['statusText']}));throw new Error(_0x2b9bb4['message']||_0x2b9bb4['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x452379['json']();},async 'deleteRoleDefinition'(_0x25cf2c){const _0x474d7b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x25cf2c),{'method':'DELETE'});if(!_0x474d7b['ok']){const _0x5efa38=await _0x474d7b['json']()['catch'](()=>({'message':_0x474d7b['statusText']}));throw new Error(_0x5efa38['message']||_0x5efa38['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x474d7b['json']();},async 'getAvailablePermissions'(){const _0x199b10=await fetch(API_BASE+'/roles/available-permissions');if(!_0x199b10['ok']){const _0x24ff63=await _0x199b10['json']()['catch'](()=>({'message':_0x199b10['statusText']}));throw new Error(_0x24ff63['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x199b10['json']();},async 'getGitProviderAllowedTeams'(_0x3848a0){const _0x4cdd93=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3848a0)+'/allowed-teams');if(!_0x4cdd93['ok']){const _0x412b49=await _0x4cdd93['json']()['catch'](()=>({'message':_0x4cdd93['statusText']}));throw new Error(_0x412b49['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x4cdd93['json']();},async 'setGitProviderAllowedTeams'(_0xa63a70,_0x371d37){const _0x160c70=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xa63a70)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x371d37})});if(!_0x160c70['ok']){const _0x168a80=await _0x160c70['json']()['catch'](()=>({'message':_0x160c70['statusText']}));throw new Error(_0x168a80['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x160c70['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 _0x15bd8f=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4bc283=>{_0x4bc283['el']['style']['bottom']=_0x15bd8f+'px';const _0x4ea52d=_0x4bc283['el']['offsetHeight']||toastState['defaultHeight'];_0x15bd8f+=_0x4ea52d+toastState['gap'];});});}function removeToastById(_0x4a7074){const _0x106c5d=toastState['toasts']['findIndex'](_0x561fa9=>_0x561fa9['id']===_0x4a7074);if(_0x106c5d===-0x1)return;const _0x2218cc=toastState['toasts'][_0x106c5d];if(_0x2218cc['timeoutId'])clearTimeout(_0x2218cc['timeoutId']);_0x2218cc['el']['classList']['remove']('show'),setTimeout(()=>_0x2218cc['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x106c5d,0x1),repositionAllToasts();}function registerToast(_0x1ef539){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1ef539),repositionAllToasts(),_0x1ef539['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(_0x3c7c72){if(_0x3c7c72===null||_0x3c7c72===undefined)return'';return String(_0x3c7c72)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x23b010,_0xa2693a){if(_0x23b010&&typeof _0x23b010==='object'&&!Array['isArray'](_0x23b010))return{'code':typeof _0x23b010['text']==='string'?_0x23b010['text']:'','language':typeof _0x23b010['lang']==='string'?_0x23b010['lang']:''};return{'code':typeof _0x23b010==='string'?_0x23b010:'','language':typeof _0xa2693a==='string'?_0xa2693a:''};}function buildMermaidBlock(_0x40c8a8){const _0x34f119=String(_0x40c8a8||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x34f119))+'\x22>'+escapeHtmlValue(_0x34f119)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x267afb=new marked['Renderer'](),_0x42cd3e=_0x267afb['code']['bind'](_0x267afb);return _0x267afb['code']=function(_0xc20bd3,_0x182cb9,..._0x29b7cd){const {code:_0x578284,language:_0x2ec8dd}=getMarkdownCodeBlockPayload(_0xc20bd3,_0x182cb9),_0x7e0a41=String(_0x2ec8dd||'')['trim']()['toLowerCase']();if(_0x7e0a41==='mermaid')return buildMermaidBlock(_0x578284);const _0xd07e0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0xd07e0&&_0x7e0a41)try{const _0x18c402=_0xd07e0['getLanguage'](_0x7e0a41)?_0x7e0a41:'plaintext',_0x569ecc=_0xd07e0['highlight'](_0x578284,{'language':_0x18c402})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x7e0a41)+'\x22>'+_0x569ecc+'</code></pre>';}catch(_0x5169b7){console['error']('Syntax\x20highlighting\x20error:',_0x5169b7);}return _0x42cd3e(_0xc20bd3,_0x182cb9,..._0x29b7cd);},sharedMarkedRenderer=_0x267afb,_0x267afb;}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 _0x136d38=window['mermaid'];if(!_0x136d38||typeof _0x136d38['initialize']!=='function')return _0x136d38||null;return _0x136d38['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x136d38;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x44f723,_0x356c42)=>{const _0x5c3ae7=()=>_0x44f723(configureMermaidInstance()),_0x13ad33=()=>{mermaidLoadPromise=null,_0x356c42(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x368ebd=document['getElementById'](MERMAID_SCRIPT_ID);!_0x368ebd&&(_0x368ebd=document['createElement']('script'),_0x368ebd['id']=MERMAID_SCRIPT_ID,_0x368ebd['src']=MERMAID_SCRIPT_SRC,_0x368ebd['async']=!![],document['head']['appendChild'](_0x368ebd));if(window['mermaid']){_0x5c3ae7();return;}_0x368ebd['addEventListener']('load',_0x5c3ae7,{'once':!![]}),_0x368ebd['addEventListener']('error',_0x13ad33,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0xa7ead9){const _0x4829d2=_0xa7ead9['getAttribute']('data-mermaid-source');if(!_0x4829d2)return null;let _0x2c9fa5=_0x4829d2;try{_0x2c9fa5=decodeURIComponent(_0x4829d2);}catch{}return _0xa7ead9['textContent']=_0x2c9fa5,_0xa7ead9['removeAttribute']('data-processed'),_0xa7ead9['removeAttribute']('aria-roledescription'),_0xa7ead9['removeAttribute']('role'),_0xa7ead9['removeAttribute']('aria-label'),_0x2c9fa5;}function collectMermaidNodes(_0x4e8de4,_0x36b65a){if(!(_0x4e8de4 instanceof Element))return;_0x4e8de4['matches']('.mermaid[data-mermaid-source]')&&_0x36b65a['add'](_0x4e8de4),_0x4e8de4['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x54f9cf=>{_0x36b65a['add'](_0x54f9cf);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x24acdc=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x97bb4d=>setTimeout(_0x97bb4d,0x0);_0x24acdc(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3ae204=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3ae204);});});}function queueMermaidRender(_0x948937){const _0x4550b3=new Set();_0x948937 instanceof Document||_0x948937 instanceof DocumentFragment?_0x948937['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x699d8e=>_0x4550b3['add'](_0x699d8e)):collectMermaidNodes(_0x948937,_0x4550b3);if(_0x4550b3['size']===0x0)return;_0x4550b3['forEach'](_0x1565f0=>pendingMermaidNodes['add'](_0x1565f0)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xd31262=Array['from'](pendingMermaidNodes)['filter'](_0x1a96fb=>_0x1a96fb['isConnected']);pendingMermaidNodes['clear']();if(_0xd31262['length']===0x0)return;const _0x5a0fbc=await loadMermaid();if(!_0x5a0fbc)return;configureMermaidInstance();const _0x1e0e58=getMermaidTheme();for(const _0x34b9f3 of _0xd31262){const _0x44bfb9=_0x34b9f3['getAttribute']('data-mermaid-source');if(!_0x44bfb9)continue;const _0x3e93c7=_0x34b9f3['getAttribute']('data-processed')==='true';if(_0x3e93c7&&_0x34b9f3['dataset']['mermaidTheme']===_0x1e0e58)continue;restoreMermaidSource(_0x34b9f3);try{if(typeof _0x5a0fbc['run']==='function')await _0x5a0fbc['run']({'nodes':[_0x34b9f3]});else typeof _0x5a0fbc['init']==='function'&&_0x5a0fbc['init'](undefined,[_0x34b9f3]);_0x34b9f3['dataset']['mermaidTheme']=_0x1e0e58,delete _0x34b9f3['dataset']['mermaidError'];}catch(_0xb9df39){console['error']('Mermaid\x20render\x20failed:',_0xb9df39),restoreMermaidSource(_0x34b9f3),_0x34b9f3['dataset']['mermaidError']='true',delete _0x34b9f3['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x317912=>{_0x317912['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x317912);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4c413f=>{_0x4c413f['forEach'](_0x46df75=>{_0x46df75['addedNodes']['forEach'](_0x2eb852=>{_0x2eb852['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2eb852);});});}),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'(_0x2b0c61){const _0x36e6a9=new Date(_0x2b0c61),_0xdbbd26=new Date(),_0x1c2d72=_0xdbbd26-_0x36e6a9,_0x2b2e0e=Math['floor'](_0x1c2d72/0x3e8),_0x125ddd=Math['floor'](_0x2b2e0e/0x3c),_0x39a0ae=Math['floor'](_0x125ddd/0x3c),_0x3ad77d=Math['floor'](_0x39a0ae/0x18);if(_0x2b2e0e<0x3c)return'now';if(_0x125ddd<0x3c)return _0x125ddd+'m\x20ago';if(_0x39a0ae<0x18)return _0x39a0ae+'h\x20ago';return _0x3ad77d+'d\x20ago';},'getStatusIcon'(_0x6406){switch(_0x6406){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x19d628){switch(_0x19d628){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'(_0x3e75da,_0x582498=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x389510={};_0x389510['text/plain']=new Blob([_0x3e75da],{'type':'text/plain'});_0x582498&&(_0x389510['text/html']=new Blob([_0x582498],{'type':'text/html'}));const _0x1919cd=new ClipboardItem(_0x389510);return await navigator['clipboard']['write']([_0x1919cd]),!![];}catch(_0x39f77e){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x39f77e);}try{const _0x55361a=_0xea956d=>{_0xea956d['preventDefault'](),_0xea956d['clipboardData']['setData']('text/plain',_0x3e75da),_0x582498&&_0xea956d['clipboardData']['setData']('text/html',_0x582498);};document['addEventListener']('copy',_0x55361a);const _0x4e1579=document['execCommand']('copy');document['removeEventListener']('copy',_0x55361a);if(_0x4e1579)return!![];}catch(_0x241b35){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x241b35);}try{const _0xaa27c2=document['createElement']('textarea');_0xaa27c2['value']=_0x3e75da,_0xaa27c2['style']['position']='fixed',_0xaa27c2['style']['opacity']='0',_0xaa27c2['style']['pointerEvents']='none',document['body']['appendChild'](_0xaa27c2),_0xaa27c2['select']();const _0x306a50=document['execCommand']('copy');return document['body']['removeChild'](_0xaa27c2),_0x306a50;}catch(_0x219d69){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x219d69),![];}},'showToast'(_0x381f75,_0xf763a4='info'){const _0x4d816c=getNextToastId(),_0x4d739c=document['createElement']('div');_0x4d739c['className']='toast\x20toast-'+_0xf763a4,_0x4d739c['textContent']=_0x381f75,_0x4d739c['dataset']['toastId']=_0x4d816c,document['body']['appendChild'](_0x4d739c);const _0x367776=_0xf763a4==='error'?0x2710:0xbb8,_0x200642=setTimeout(()=>{removeToastById(_0x4d816c);},_0x367776),_0x504a8f={'id':_0x4d816c,'el':_0x4d739c,'timeoutId':_0x200642};return registerToast(_0x504a8f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x4d739c['classList']['add']('show');});}),_0x4d816c;},'showError'(_0x512abf){console['error'](_0x512abf);const _0x274155=typeof _0x512abf==='string'?_0x512abf:_0x512abf['message']||'An\x20error\x20occurred';this['showToast'](_0x274155,'error');},'showSuccess'(_0x56bd35){this['showToast'](_0x56bd35,'success');},'capitalize'(_0x1fca37){if(!_0x1fca37)return'';return _0x1fca37['charAt'](0x0)['toUpperCase']()+_0x1fca37['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2c7f67){return escapeHtmlValue(_0x2c7f67);},'ansiToHtml'(_0x286f57){if(_0x286f57===null||_0x286f57===undefined)return'';let _0x5956f8=this['escapeHtml'](_0x286f57);const _0x5eb35f={'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'},_0x4aa4ab={'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 _0x3a3675=0x0;return _0x5956f8=_0x5956f8['replace'](/\x1b\[([0-9;]*)m/g,(_0xcc3a52,_0x68e9e9)=>{if(!_0x68e9e9||_0x68e9e9==='0'){const _0x328768='</span>'['repeat'](_0x3a3675);return _0x3a3675=0x0,_0x328768;}const _0x12b13f=_0x68e9e9['split'](';'),_0x5922be=[];for(const _0x5a5a66 of _0x12b13f){if(_0x5a5a66==='1')_0x5922be['push']('font-weight:bold');else{if(_0x5a5a66==='2')_0x5922be['push']('opacity:0.7');else{if(_0x5a5a66==='3')_0x5922be['push']('font-style:italic');else{if(_0x5a5a66==='4')_0x5922be['push']('text-decoration:underline');else{if(_0x5a5a66==='9')_0x5922be['push']('text-decoration:line-through');else{if(_0x5eb35f[_0x5a5a66])_0x5922be['push']('color:'+_0x5eb35f[_0x5a5a66]);else{if(_0x4aa4ab[_0x5a5a66])_0x5922be['push']('background-color:'+_0x4aa4ab[_0x5a5a66]);}}}}}}}if(_0x5922be['length']>0x0)return _0x3a3675++,'<span\x20style=\x22'+_0x5922be['join'](';')+'\x22>';return'';}),_0x5956f8+='</span>'['repeat'](_0x3a3675),_0x5956f8=_0x5956f8['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3558c6,_0x30f1db)=>{if(!_0x30f1db||_0x30f1db==='0')return'';const _0x24993f=_0x30f1db['split'](';'),_0x4a15f0=[];for(const _0x4616a7 of _0x24993f){if(_0x4616a7==='1')_0x4a15f0['push']('font-weight:bold');else{if(_0x5eb35f[_0x4616a7])_0x4a15f0['push']('color:'+_0x5eb35f[_0x4616a7]);else{if(_0x4aa4ab[_0x4616a7])_0x4a15f0['push']('background-color:'+_0x4aa4ab[_0x4616a7]);}}}if(_0x4a15f0['length']>0x0)return'<span\x20style=\x22'+_0x4a15f0['join'](';')+'\x22>';return'';}),_0x5956f8;},'showModal'({title:_0x34032c,content:_0x566ecd,buttons:buttons=[]}){const _0x5a7719='\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'](_0x34032c)+'</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'+_0x566ecd+'\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']((_0x4b80e7,_0x4948ec)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4b80e7['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4948ec+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4b80e7['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',_0x37dc66=document['createElement']('div');_0x37dc66['id']='utils-modal',_0x37dc66['className']='modal',_0x37dc66['innerHTML']=_0x5a7719,document['body']['appendChild'](_0x37dc66);const _0x42d43a=document['getElementById']('utils-modal-close');_0x42d43a&&_0x42d43a['addEventListener']('click',()=>this['hideModal']());const _0x138d3f=_0x37dc66['querySelectorAll']('[data-btn-index]');_0x138d3f['forEach'](_0x5691f5=>{const _0x4b074d=parseInt(_0x5691f5['dataset']['btnIndex']);buttons[_0x4b074d]?.['onClick']&&_0x5691f5['addEventListener']('click',buttons[_0x4b074d]['onClick']);});const _0x5b2381=document['getElementById']('utils-modal-overlay');_0x5b2381&&_0x5b2381['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x5dbd9d=document['getElementById']('utils-modal');_0x5dbd9d&&_0x5dbd9d['remove']();},'parseKeyValuePairs'(_0x42efb7){const _0x3475ae={};if(!_0x42efb7)return _0x3475ae;return _0x42efb7['split'](/\r?\n/)['map'](_0xd152b5=>_0xd152b5['trim']())['filter'](Boolean)['forEach'](_0x41cab0=>{const _0x16f08f=_0x41cab0['indexOf']('=');if(_0x16f08f>0x0){const _0x1d0ef6=_0x41cab0['slice'](0x0,_0x16f08f)['trim'](),_0x1e0969=_0x41cab0['slice'](_0x16f08f+0x1)['trim']();if(_0x1d0ef6)_0x3475ae[_0x1d0ef6]=_0x1e0969;}}),_0x3475ae;},'debounce'(_0x2de72a,_0x399cc8=0xfa){let _0x27f963=null;return(..._0x19e8c0)=>{clearTimeout(_0x27f963),_0x27f963=setTimeout(()=>_0x2de72a['apply'](this,_0x19e8c0),_0x399cc8);};},'formatTimestamp'(_0x2b62c1){if(!_0x2b62c1)return'N/A';const _0x55c984=new Date(_0x2b62c1);return _0x55c984['toLocaleDateString']()+'\x20'+_0x55c984['toLocaleTimeString']();},'getQueryParams'(){const _0x4e41d6=new URLSearchParams(window['location']['search']),_0x491de4={};for(const [_0x21d7f4,_0x27b3a9]of _0x4e41d6){_0x491de4[_0x21d7f4]=_0x27b3a9;}return _0x491de4;},'formatDuration'(_0x5c629a,_0x26c498){if(!_0x5c629a)return'N/A';const _0x8fdd6b=new Date(_0x5c629a),_0x3b538c=_0x26c498?new Date(_0x26c498):new Date(),_0x9c5866=_0x3b538c-_0x8fdd6b;if(_0x9c5866<0x0)return'0s';const _0x4ee8f7=Math['floor'](_0x9c5866/0x3e8),_0x4e895c=Math['floor'](_0x4ee8f7/0x3c),_0x45450c=Math['floor'](_0x4e895c/0x3c),_0x36ced4=Math['floor'](_0x45450c/0x18);if(_0x4ee8f7<0x3c)return _0x4ee8f7+'s';if(_0x4e895c<0x3c)return _0x4e895c+'m\x20'+_0x4ee8f7%0x3c+'s';if(_0x45450c<0x18)return _0x45450c+'h\x20'+_0x4e895c%0x3c+'m\x20'+_0x4ee8f7%0x3c+'s';return _0x36ced4+'d\x20'+_0x45450c%0x18+'h\x20'+_0x4e895c%0x3c+'m';},'renderMarkdown'(_0x52f66b,_0x16aef8={}){if(!_0x52f66b)return'';_0x52f66b=this['rewriteAttachmentLinks'](_0x52f66b,_0x16aef8),_0x52f66b=this['rewriteColorSyntax'](_0x52f66b);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x52f66b,_0x16aef8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x52f66b);}catch(_0x5e6205){return console['error']('Markdown\x20parsing\x20error:',_0x5e6205),this['renderMarkdownFallback'](_0x52f66b,_0x16aef8);}},'rewriteAttachmentLinks'(_0x82cae,_0x41feb4={}){const _0x2bed05=typeof _0x41feb4['resolveAttachmentUrl']==='function'?_0x41feb4['resolveAttachmentUrl']:_0x41feb4['taskId']?_0x20be8b=>API_BASE+'/tasks/'+_0x41feb4['taskId']+'/attachments/'+encodeURIComponent(_0x20be8b):null;if(!_0x2bed05)return _0x82cae;return String(_0x82cae)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x533ac9,_0x3cf6a4)=>{const _0x32093a=String(_0x3cf6a4||'')['trim']();if(!_0x32093a)return _0x533ac9;let _0x150dd0=_0x32093a;try{_0x150dd0=decodeURIComponent(_0x32093a);}catch{}const _0x13a8c6=_0x2bed05(_0x150dd0);if(!_0x13a8c6)return _0x533ac9;return']('+_0x13a8c6+')';});},'rewriteColorSyntax'(_0x1c1ee8){if(!_0x1c1ee8)return _0x1c1ee8;return String(_0x1c1ee8)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4e3b12,_0x241d0d,_0x3b106e)=>{const _0x4039a9=this['rewriteColorSyntax'](_0x3b106e);return'<span\x20style=\x22color:\x20'+_0x241d0d+'\x22>'+_0x4039a9+'</span>';});},'renderMarkdownFallback'(_0x1345b8,_0xc84885={}){if(!_0x1345b8)return'';_0x1345b8=_0x1345b8['replace'](/\r\n/g,'\x0a'),_0x1345b8=_0x1345b8['replace'](/\r/g,'\x0a'),_0x1345b8=this['rewriteAttachmentLinks'](_0x1345b8,_0xc84885);let _0x136ee3=this['escapeHtml'](_0x1345b8);return _0x136ee3=_0x136ee3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x136ee3=_0x136ee3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x136ee3=_0x136ee3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x136ee3=_0x136ee3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x136ee3=_0x136ee3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x136ee3=_0x136ee3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x136ee3=_0x136ee3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x136ee3=_0x136ee3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x136ee3=_0x136ee3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x136ee3=_0x136ee3['replace'](/\n\n/g,'</p><p>'),_0x136ee3=_0x136ee3['replace'](/\n/g,'<br>'),'<p>'+_0x136ee3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0xcfeb7=new Uint8Array(0x10);crypto['getRandomValues'](_0xcfeb7),_0xcfeb7[0x6]=_0xcfeb7[0x6]&0xf|0x40,_0xcfeb7[0x8]=_0xcfeb7[0x8]&0x3f|0x80;const _0x52b1b5=Array['from'](_0xcfeb7,_0x2d9210=>_0x2d9210['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x52b1b5['slice'](0x0,0x8)+'-'+_0x52b1b5['slice'](0x8,0xc)+'-'+_0x52b1b5['slice'](0xc,0x10)+'-'+_0x52b1b5['slice'](0x10,0x14)+'-'+_0x52b1b5['slice'](0x14);}};export class CustomSelect{constructor(_0x5c2252,_0x2547f1={}){this['nativeSelect']=_0x5c2252,this['options']=_0x2547f1,this['isOpen']=![],this['selectedValue']=_0x5c2252['value']||'',this['searchable']=_0x2547f1['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x135976=document['createElement']('div');_0x135976['className']='custom-select';const _0x1733b8=document['createElement']('div');_0x1733b8['className']='custom-select-trigger',_0x1733b8['setAttribute']('tabindex','0'),_0x1733b8['setAttribute']('role','button'),_0x1733b8['setAttribute']('aria-haspopup','listbox');const _0x5e5ab3=document['createElement']('span');_0x5e5ab3['className']='custom-select-trigger-text';const _0x52aea9=document['createElement']('span');_0x52aea9['className']='custom-select-arrow',_0x52aea9['textContent']='▼',_0x1733b8['appendChild'](_0x5e5ab3),_0x1733b8['appendChild'](_0x52aea9);const _0x2662b6=document['createElement']('div');_0x2662b6['className']='custom-select-dropdown',_0x2662b6['setAttribute']('role','listbox');if(this['searchable']){const _0x4aabdd=document['createElement']('div');_0x4aabdd['className']='custom-select-search';const _0x1cf08c=document['createElement']('input');_0x1cf08c['type']='text',_0x1cf08c['className']='custom-select-search-input',_0x1cf08c['placeholder']='Type\x20to\x20search...',_0x1cf08c['setAttribute']('aria-label','Search\x20options'),_0x1cf08c['addEventListener']('input',_0x1fbe86=>{this['searchQuery']=_0x1fbe86['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1cf08c['addEventListener']('keydown',_0x192bab=>{if(_0x192bab['key']==='Escape')_0x192bab['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x192bab['key']==='Enter'){_0x192bab['preventDefault'](),_0x192bab['stopPropagation']();const _0x28b16c=_0x2662b6['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x28b16c){const _0x426263=_0x28b16c['getAttribute']('data-value');this['select'](_0x426263);}}}}),_0x4aabdd['appendChild'](_0x1cf08c),_0x2662b6['appendChild'](_0x4aabdd),this['searchInput']=_0x1cf08c;}const _0x58913a=document['createElement']('div');_0x58913a['className']='custom-select-options',_0x2662b6['appendChild'](_0x58913a),_0x135976['appendChild'](_0x1733b8),_0x135976['appendChild'](_0x2662b6),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x135976,this['nativeSelect']),this['wrapper']=_0x135976,this['trigger']=_0x1733b8,this['triggerText']=_0x5e5ab3,this['dropdown']=_0x2662b6,this['optionsContainer']=_0x58913a,_0x1733b8['addEventListener']('click',()=>this['toggle']()),_0x1733b8['addEventListener']('keydown',_0x5e9431=>this['handleKeydown'](_0x5e9431)),document['addEventListener']('click',_0x570845=>{!_0x135976['contains'](_0x570845['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4576ba=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4576ba['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x767460=new MutationObserver(()=>{this['updateDisabledState']();});_0x767460['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x454934=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x454934['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x4121d2=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x4121d2),this['trigger']['setAttribute']('aria-disabled',_0x4121d2?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x4121d2?'-1':'0'),_0x4121d2&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x518edb=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x40e9f7=_0x518edb['filter'](_0xa634d6=>!_0xa634d6['disabled']&&!_0xa634d6['hidden']);_0x518edb['forEach']((_0x104f88,_0x12deed)=>{const _0x17697a=document['createElement']('div');_0x17697a['className']='custom-select-option',_0x17697a['textContent']=_0x104f88['textContent'],_0x17697a['setAttribute']('data-value',_0x104f88['value']),_0x17697a['setAttribute']('data-index',_0x12deed),_0x17697a['setAttribute']('role','option'),_0x104f88['disabled']?_0x17697a['classList']['add']('disabled'):_0x17697a['addEventListener']('click',()=>this['select'](_0x104f88['value'])),_0x104f88['value']===this['selectedValue']&&_0x17697a['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x17697a),this['allOptions']['push']({'element':_0x17697a,'text':_0x104f88['textContent']['toLowerCase'](),'value':_0x104f88['value'],'disabled':_0x104f88['disabled']});});if(this['searchable']&&this['searchInput']){const _0xb68b4a=this['searchInput']['parentElement'];_0x40e9f7['length']>0x3?_0xb68b4a['style']['display']='':_0xb68b4a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xd5e8b2=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x391ca5=>{if(!_0xd5e8b2||_0x391ca5['disabled'])_0x391ca5['element']['style']['display']='';else{const _0x1feb34=_0x391ca5['text']['includes'](_0xd5e8b2);_0x391ca5['element']['style']['display']=_0x1feb34?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x4ee515){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x4ee515,this['nativeSelect']['value']=_0x4ee515;const _0xe437e1=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xe437e1),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x424201=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x424201&&(this['triggerText']['textContent']=_0x424201['textContent'],_0x424201['disabled']||_0x424201['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x235378=>{_0x235378['getAttribute']('data-value')===this['selectedValue']?_0x235378['classList']['add']('selected'):_0x235378['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 _0x103b80=window['getComputedStyle'](this['dropdown']);if(_0x103b80['position']==='fixed'){const _0xea013a=this['trigger']['getBoundingClientRect'](),_0x5794a2=parseInt(_0x103b80['maxHeight'])||0xc8,_0x533912=window['innerHeight'],_0x1dc07e=_0x533912-_0xea013a['bottom'],_0x119fbd=_0xea013a['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3612ee;_0x1dc07e<_0x5794a2&&_0x119fbd>_0x1dc07e?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x533912-_0xea013a['top']+'px',_0x3612ee=Math['min'](_0x5794a2,_0x119fbd-0xa),this['dropdown']['style']['maxHeight']=_0x3612ee+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xea013a['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3612ee=Math['min'](_0x5794a2,_0x1dc07e-0xa),this['dropdown']['style']['maxHeight']=_0x3612ee+'px');if(this['optionsContainer']){let _0x38ded0=_0x3612ee;if(this['searchInput']){const _0x3b8a3e=this['searchInput']['parentElement'];_0x3b8a3e&&(_0x38ded0-=_0x3b8a3e['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x38ded0)+'px';}this['dropdown']['style']['left']=_0xea013a['left']+'px',this['dropdown']['style']['width']=_0xea013a['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x3553a7=this['searchInput']['parentElement'];_0x3553a7&&_0x3553a7['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'](_0x3e4399){if(this['nativeSelect']['disabled'])return;if(_0x3e4399['key']==='Enter'||_0x3e4399['key']==='\x20')_0x3e4399['preventDefault'](),this['toggle']();else _0x3e4399['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5c3772='\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',_0x5c3772),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5a15ed=document['getElementById']('confirm-dialog-close'),_0x209da6=document['getElementById']('confirm-dialog-cancel'),_0x1a5e8b=document['getElementById']('confirm-dialog-confirm'),_0x48eac4=this['_modal']['querySelector']('.modal-overlay');_0x5a15ed['addEventListener']('click',()=>this['_resolve'](![])),_0x209da6['addEventListener']('click',()=>this['_resolve'](![])),_0x1a5e8b['addEventListener']('click',()=>this['_resolve'](!![])),_0x48eac4['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x5a80f0=>{if(_0x5a80f0['key']==='Escape')_0x5a80f0['preventDefault'](),this['_resolve'](![]);else _0x5a80f0['key']==='Enter'&&(_0x5a80f0['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x287433,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4a6c0b=>{this['_resolvePromise']=_0x4a6c0b,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x287433;const _0x100ed9=document['getElementById']('confirm-dialog-cancel'),_0x5e406e=document['getElementById']('confirm-dialog-confirm');_0x100ed9['textContent']=cancelText,_0x5e406e['textContent']=confirmText,_0x5e406e['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5e406e['focus']();});},'_resolve'(_0x4f54f0){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x4f54f0),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3e71bc,_0x57d1d7={}){this['container']=_0x3e71bc,this['options']={'placeholder':_0x57d1d7['placeholder']||'Type\x20to\x20search...','maxItems':_0x57d1d7['maxItems']||0x64,'loadItems':_0x57d1d7['loadItems']||(async()=>[]),'renderItem':_0x57d1d7['renderItem']||(_0x3ee633=>({'primary':String(_0x3ee633),'secondary':''})),'onSelect':_0x57d1d7['onSelect']||(()=>{}),'filterItems':_0x57d1d7['filterItems']||null,'getItemValue':_0x57d1d7['getItemValue']||(_0x421a25=>_0x421a25),'sortItems':_0x57d1d7['sortItems']||null,'debounceMs':_0x57d1d7['debounceMs']||0xc8,'minCharsForSearch':_0x57d1d7['minCharsForSearch']||0x0,'emptyMessage':_0x57d1d7['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x57d1d7['loadingMessage']||'Loading...','preload':_0x57d1d7['preload']!==![],'searchMode':_0x57d1d7['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',_0x467c93=>this['onBlur'](_0x467c93)),this['input']['addEventListener']('input',_0x495382=>this['onInput'](_0x495382)),this['input']['addEventListener']('keydown',_0x1affc2=>this['onKeydown'](_0x1affc2)),this['clearBtn']['addEventListener']('mousedown',_0x5bb182=>{_0x5bb182['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x375470=>{_0x375470['preventDefault']();}),document['addEventListener']('click',_0xa82868=>{!this['wrapper']['contains'](_0xa82868['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(_0x558d2b){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x558d2b);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x435f3f){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x1f953f){const _0x4d2fbf=_0x1f953f['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x4d2fbf);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x4d2fbf):this['loadAndShow'](_0x4d2fbf);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1e0db9){switch(_0x1e0db9['key']){case'ArrowDown':_0x1e0db9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1e0db9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1e0db9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1e0db9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2feb26){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5ca786=this['selectedIndex']+_0x2feb26;if(_0x5ca786>=0x0&&_0x5ca786<this['filteredItems']['length']){this['selectedIndex']=_0x5ca786,this['updateSelectionHighlight']();const _0x116633=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x116633[this['selectedIndex']]&&_0x116633[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1c26ce=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1c26ce['forEach']((_0x1572ca,_0xaad1b6)=>{_0x1572ca['classList']['toggle']('keyboard-selected',_0xaad1b6===this['selectedIndex']);});}async['loadAndShow'](_0x432d5c){this['showLoading']();try{const _0x3f6f2e=await this['options']['loadItems'](_0x432d5c);if(this['options']['searchMode']==='server'){let _0x588b3b=_0x3f6f2e;this['options']['sortItems']&&(_0x588b3b=this['options']['sortItems']([..._0x3f6f2e]));this['filteredItems']=_0x588b3b;const _0x148ea6=this['filteredItems']['length']>=this['options']['maxItems'];_0x148ea6&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x148ea6),this['open']();}else this['allItems']=_0x3f6f2e,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x432d5c);}catch(_0x1a6dbe){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x1a6dbe),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x35935a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x35935a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x12f432=this['filteredItems']['length']>=this['options']['maxItems'];_0x12f432&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x12f432),this['open']();}['renderItems'](_0x5dccab){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']((_0x2d45a4,_0x33bc5a)=>{const _0xb86fc3=document['createElement']('div');_0xb86fc3['className']='autocomplete-select-item',_0xb86fc3['setAttribute']('role','option'),_0xb86fc3['setAttribute']('data-index',_0x33bc5a);const _0x17e8e2=this['options']['renderItem'](_0x2d45a4);let _0x31798d='';_0x17e8e2['icon']&&(_0x31798d='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x17e8e2['iconClass']||'')+'\x22>'+_0x17e8e2['icon']+'</span>'),_0xb86fc3['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x31798d+'\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'](_0x17e8e2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x17e8e2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x17e8e2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xb86fc3['addEventListener']('click',()=>{this['selectItem'](_0x2d45a4);}),_0xb86fc3['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x33bc5a,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xb86fc3);}),_0x5dccab?(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'](_0xcc4cc7){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0xcc4cc7)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x12c987){this['selectedItem']=_0x12c987;const _0x4834df=this['options']['renderItem'](_0x12c987);this['input']['value']=_0x4834df['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x12c987);}['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'](_0x2b864c){if(_0x2b864c){this['selectedItem']=_0x2b864c;const _0x31cdef=this['options']['renderItem'](_0x2b864c);this['input']['value']=_0x31cdef['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x659fad){this['allItems']=_0x659fad,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'](_0x3d3d88){this['input']['placeholder']=_0x3d3d88;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3f75b8=null){const _0x4dc393=document['getElementById']('admin-menu-container'),_0x4a33d8=document['getElementById']('admin-menu-btn'),_0x5f4f89=document['getElementById']('admin-menu');if(!_0x4dc393||!_0x4a33d8||!_0x5f4f89)return;try{!_0x3f75b8&&(_0x3f75b8=await API['getCurrentUser']());if(_0x3f75b8){const _0x5f082b=window['Permissions'],_0x5ad8bb=_0x5f082b['hasServerPermission'](_0x3f75b8,'*')||_0x5f082b['hasEnvPermission'](_0x3f75b8,'environments:manage')||_0x5f082b['hasServerPermission'](_0x3f75b8,'users:create')||_0x5f082b['hasTeamPermission'](_0x3f75b8,'teams:manage')||_0x5f082b['hasEnvPermission'](_0x3f75b8,'environments:view_details');if(!_0x5ad8bb)return;_0x4dc393['hidden']=![];if(!_0x5f082b['hasServerPermission'](_0x3f75b8,'*')){const _0x4debb5=_0x5f4f89['querySelectorAll']('.admin-menu-item');_0x4debb5['forEach'](_0x567e3c=>{const _0x8c1288=_0x567e3c['querySelector']('.option-text')?.['textContent']?.['trim']();_0x8c1288==='Users'&&!_0x5f082b['hasServerPermission'](_0x3f75b8,'users:create')&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Skills'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Server\x20Settings'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Server\x20Health'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Git\x20History'&&(_0x567e3c['hidden']=!![]),_0x8c1288==='Roles'&&(_0x567e3c['hidden']=!![]);});}_0x4a33d8['addEventListener']('click',_0x4cae85=>{_0x4cae85['stopPropagation']();const _0x1b5b15=document['getElementById']('actions-menu');if(_0x1b5b15)_0x1b5b15['hidden']=!![];_0x5f4f89['hidden']=!_0x5f4f89['hidden'];}),document['addEventListener']('click',_0x7989d0=>{!_0x5f4f89['hidden']&&!_0x4a33d8['contains'](_0x7989d0['target'])&&!_0x5f4f89['contains'](_0x7989d0['target'])&&(_0x5f4f89['hidden']=!![]);}),document['addEventListener']('keydown',_0x3393b9=>{_0x3393b9['key']==='Escape'&&!_0x5f4f89['hidden']&&(_0x5f4f89['hidden']=!![]);});const _0x4b8069=document['getElementById']('server-health-btn');_0x4b8069&&_0x4b8069['addEventListener']('click',async()=>{_0x5f4f89['hidden']=!![];const {openServerHealthModal:_0x5b6cae}=await import('./server-health.js');_0x5b6cae();});}}catch(_0x1f99f8){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1f99f8['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 _0x558bfe=window['location']['pathname'],_0x1a621b=_0x558bfe['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1a621b)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1a621b[0x1]),_0x1a621b[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x54768b={}){const _0x3ad123=new URLSearchParams();_0x54768b['userId']&&_0x3ad123['set']('userId',String(_0x54768b['userId']));_0x54768b['automation']&&_0x3ad123['set']('automation',String(_0x54768b['automation']));const _0x37b635=API_BASE+'/tasks/stats'+(_0x3ad123['toString']()?'?'+_0x3ad123['toString']():''),_0x44ebcc=await fetch(_0x37b635);if(!_0x44ebcc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44ebcc['statusText']);return await _0x44ebcc['json']();},async 'getTasks'(_0x46df3f={}){const _0x4dd9ea=new URLSearchParams();_0x46df3f['status']&&_0x4dd9ea['set']('status',String(_0x46df3f['status']));_0x46df3f['environment']&&_0x4dd9ea['set']('environment',String(_0x46df3f['environment']));_0x46df3f['automation']&&_0x4dd9ea['set']('automation',String(_0x46df3f['automation']));if(_0x46df3f['include']){const _0x27d059=Array['isArray'](_0x46df3f['include'])?_0x46df3f['include']['join'](','):String(_0x46df3f['include']);_0x27d059&&_0x4dd9ea['set']('include',_0x27d059);}_0x46df3f['filter']&&_0x4dd9ea['set']('filter',String(_0x46df3f['filter']));_0x46df3f['page']&&_0x4dd9ea['set']('page',String(_0x46df3f['page']));_0x46df3f['limit']&&_0x4dd9ea['set']('limit',String(_0x46df3f['limit']));_0x46df3f['userId']&&_0x4dd9ea['set']('userId',String(_0x46df3f['userId']));_0x46df3f['search']&&_0x4dd9ea['set']('search',String(_0x46df3f['search']));_0x46df3f['includeChildTasks']&&_0x4dd9ea['set']('includeChildTasks','true');const _0x4d95a3=API_BASE+'/tasks'+(_0x4dd9ea['toString']()?'?'+_0x4dd9ea['toString']():''),_0x4600a0=await fetch(_0x4d95a3);if(!_0x4600a0['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4600a0['statusText']);return await _0x4600a0['json']();},async 'getAutomations'(_0xef3604={}){const _0x50fade=new URLSearchParams();_0xef3604['environment']&&_0x50fade['set']('environment',String(_0xef3604['environment']));const _0x585126=await fetch(API_BASE+'/api/automations'+(_0x50fade['toString']()?'?'+_0x50fade['toString']():''));if(!_0x585126['ok']){const _0x34f575=await _0x585126['json']()['catch'](()=>({}));throw new Error(_0x34f575['message']||_0x34f575['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x585126['statusText']);}return await _0x585126['json']();},async 'getAutomation'(_0x5d3f7b){const _0x4613fe=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5d3f7b));if(!_0x4613fe['ok']){const _0x5a167a=await _0x4613fe['json']()['catch'](()=>({}));throw new Error(_0x5a167a['message']||_0x5a167a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4613fe['statusText']);}return await _0x4613fe['json']();},async 'createAutomation'(_0x1cf893){const _0x27fe61=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cf893||{})});if(!_0x27fe61['ok']){const _0x3b7add=await _0x27fe61['json']()['catch'](()=>({}));throw new Error(_0x3b7add['message']||_0x3b7add['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x27fe61['statusText']);}return await _0x27fe61['json']();},async 'updateAutomation'(_0x29a69a,_0x564f91){const _0x37ff5b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x29a69a),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x564f91||{})});if(!_0x37ff5b['ok']){const _0x544675=await _0x37ff5b['json']()['catch'](()=>({}));throw new Error(_0x544675['message']||_0x544675['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x37ff5b['statusText']);}return await _0x37ff5b['json']();},async 'deleteAutomation'(_0x56c48){const _0x1b6ade=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56c48),{'method':'DELETE'});if(!_0x1b6ade['ok']){const _0x5d8955=await _0x1b6ade['json']()['catch'](()=>({}));throw new Error(_0x5d8955['message']||_0x5d8955['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1b6ade['statusText']);}return await _0x1b6ade['json']();},async 'triggerAutomation'(_0x43e54c){const _0x16aa3a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x43e54c)+'/trigger',{'method':'POST'});if(!_0x16aa3a['ok']){const _0x54442a=await _0x16aa3a['json']()['catch'](()=>({}));throw new Error(_0x54442a['message']||_0x54442a['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x16aa3a['statusText']);}return await _0x16aa3a['json']();},async 'setAutomationEnabled'(_0x3fb294,_0x212717){const _0x364d8b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3fb294)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x212717})});if(!_0x364d8b['ok']){const _0x3ce5a0=await _0x364d8b['json']()['catch'](()=>({}));throw new Error(_0x3ce5a0['message']||_0x3ce5a0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x364d8b['statusText']);}return await _0x364d8b['json']();},async 'getAutomationHistory'(_0x2892b0,_0x11f16e=0x32){const _0x1560e0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2892b0)+'/history?limit='+encodeURIComponent(String(_0x11f16e)));if(!_0x1560e0['ok']){const _0x2fd163=await _0x1560e0['json']()['catch'](()=>({}));throw new Error(_0x2fd163['message']||_0x2fd163['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1560e0['statusText']);}return await _0x1560e0['json']();},async 'getTask'(_0x370c2c,_0x3b5508={}){const _0x1d43f1=new URLSearchParams();if(_0x3b5508['include']){const _0x390f4b=Array['isArray'](_0x3b5508['include'])?_0x3b5508['include']['join'](','):String(_0x3b5508['include']);if(_0x390f4b)_0x1d43f1['set']('include',_0x390f4b);}const _0x3886f6=await fetch(API_BASE+'/tasks/'+_0x370c2c+(_0x1d43f1['toString']()?'?'+_0x1d43f1['toString']():''));if(!_0x3886f6['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x3886f6['statusText']);return await _0x3886f6['json']();},async 'getTaskResults'(_0x11021b){const _0x582f67=await fetch(API_BASE+'/tasks/'+_0x11021b+'/results');if(!_0x582f67['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x582f67['statusText']);return await _0x582f67['json']();},async 'getTaskPatches'(_0x5afbaa){const _0x310495=await fetch(API_BASE+'/tasks/'+_0x5afbaa+'/patches');if(!_0x310495['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x310495['statusText']);return await _0x310495['json']();},async 'getTaskAttachments'(_0x10572a){const _0x23ae5f=await fetch(API_BASE+'/tasks/'+_0x10572a+'/attachments');if(!_0x23ae5f['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x23ae5f['statusText']);return await _0x23ae5f['json']();},async 'uploadAttachments'(_0x4c2a2d,_0x16f212){const _0x4dc101=new FormData();for(const _0x88053d of _0x16f212){_0x4dc101['append']('attachments',_0x88053d);}const _0x44f016=await fetch(API_BASE+'/tasks/'+_0x4c2a2d+'/attachments',{'method':'POST','body':_0x4dc101});if(!_0x44f016['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x44f016['statusText']);return await _0x44f016['json']();},async 'isAINameGenerationAvailable'(){try{const _0x21d0dd=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x21d0dd['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x21d0dd['json']();}catch(_0x3afa8a){return{'available':![],'reason':_0x3afa8a['message']};}},async 'generateTaskName'(_0x45c767){try{const _0x4a8bac=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x45c767})});return await _0x4a8bac['json']();}catch(_0x1be9b6){return{'success':![],'error':_0x1be9b6['message']};}},async 'createTask'(_0x11a4e6){let _0x592c93,_0x2c8606={};if(_0x11a4e6['files']&&_0x11a4e6['files']['length']>0x0){const _0x43b22c=new FormData();for(const [_0x4283ae,_0x1b84ea]of Object['entries'](_0x11a4e6)){if(_0x4283ae!=='files'){if(_0x1b84ea==null)continue;typeof _0x1b84ea==='object'?_0x43b22c['append'](_0x4283ae,JSON['stringify'](_0x1b84ea)):_0x43b22c['append'](_0x4283ae,String(_0x1b84ea));}}for(const _0x2494ab of _0x11a4e6['files']){_0x43b22c['append']('attachments',_0x2494ab);}_0x592c93=_0x43b22c;}else _0x2c8606['Content-Type']='application/json',_0x592c93=JSON['stringify'](_0x11a4e6);const _0x2add2d=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x2c8606,'body':_0x592c93});if(!_0x2add2d['ok']){const _0x4fdbbe=await _0x2add2d['json'](),_0x460021=new Error(_0x4fdbbe['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2add2d['statusText']),{message:_0x21993c,..._0xa57a02}=_0x4fdbbe;Object['assign'](_0x460021,_0xa57a02);throw _0x460021;}return await _0x2add2d['json']();},async 'createTestTask'(_0x1cb1ae){const _0x3c8a1e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cb1ae)});if(!_0x3c8a1e['ok']){const _0x1772ae=await _0x3c8a1e['json']();throw new Error(_0x1772ae['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c8a1e['statusText']);}return await _0x3c8a1e['json']();},async 'createEphemeralTest'(_0x102f51){const _0x3120ad=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x102f51)});if(!_0x3120ad['ok']){const _0x4f17fa=await _0x3120ad['json']();throw new Error(_0x4f17fa['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x3120ad['statusText']);}return await _0x3120ad['json']();},async 'createDeployTask'(_0x41ae1c){const _0x3c9168=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41ae1c)});if(!_0x3c9168['ok']){const _0x50264e=await _0x3c9168['json']();throw new Error(_0x50264e['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3c9168['statusText']);}return await _0x3c9168['json']();},async 'getEnvironments'(){const _0x372c30=await fetch(API_BASE+'/environments');if(!_0x372c30['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x372c30['statusText']);return await _0x372c30['json']();},async 'getEnvironment'(_0x53bcb8){const _0x16dfa2=await fetch(API_BASE+'/environments/'+_0x53bcb8);if(!_0x16dfa2['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x16dfa2['statusText']);return await _0x16dfa2['json']();},async 'getEnvironmentRepoHistory'(_0x4c7658,_0x40a561,_0x549aa9={}){if(!_0x4c7658||!_0x40a561)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1c4748=new URLSearchParams();if(_0x549aa9['limit'])_0x1c4748['set']('limit',String(_0x549aa9['limit']));if(_0x549aa9['offset'])_0x1c4748['set']('offset',String(_0x549aa9['offset']));if(_0x549aa9['search'])_0x1c4748['set']('search',String(_0x549aa9['search']));if(_0x549aa9['branch'])_0x1c4748['set']('branch',String(_0x549aa9['branch']));const _0x5ae376=API_BASE+'/environments/'+encodeURIComponent(_0x4c7658)+'/repos/'+encodeURIComponent(_0x40a561)+'/git/history',_0x119c75=await fetch(''+_0x5ae376+(_0x1c4748['toString']()?'?'+_0x1c4748['toString']():''));if(!_0x119c75['ok']){const _0xc73c08=await _0x119c75['json']()['catch'](()=>({}));throw new Error(_0xc73c08['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x119c75['statusText']);}return await _0x119c75['json']();},async 'getEnvironmentRepoCommit'(_0x3b4fe9,_0x4a18e3,_0x267af0){if(!_0x3b4fe9||!_0x4a18e3||!_0x267af0)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x262ded=API_BASE+'/environments/'+encodeURIComponent(_0x3b4fe9)+'/repos/'+encodeURIComponent(_0x4a18e3)+'/git/commits/'+encodeURIComponent(_0x267af0),_0x356f95=await fetch(_0x262ded);if(!_0x356f95['ok']){const _0x4cb4ce=await _0x356f95['json']()['catch'](()=>({}));throw new Error(_0x4cb4ce['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x356f95['statusText']);}return await _0x356f95['json']();},async 'getEnvironmentRepoBranches'(_0x145907,_0x2bf629){if(!_0x145907||!_0x2bf629)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x316dc1=API_BASE+'/environments/'+encodeURIComponent(_0x145907)+'/repos/'+encodeURIComponent(_0x2bf629)+'/git/branches',_0xb04567=await fetch(_0x316dc1);if(!_0xb04567['ok']){const _0x318dfe=await _0xb04567['json']()['catch'](()=>({}));throw new Error(_0x318dfe['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xb04567['statusText']);}return await _0xb04567['json']();},async 'revertEnvironmentRepoCommit'(_0x1ad243,_0x12d720,_0x3c243d,_0x10698a={}){if(!_0x1ad243||!_0x12d720||!_0x3c243d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xa41b7a=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1ad243)+'/repos/'+encodeURIComponent(_0x12d720)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3c243d,..._0x10698a})});if(!_0xa41b7a['ok']){const _0xd333a0=await _0xa41b7a['json']()['catch'](()=>({}));throw new Error(_0xd333a0['message']||_0xd333a0['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0xa41b7a['statusText']);}return await _0xa41b7a['json']();},async 'getTemplates'(_0x12dc59={}){const _0x4b5bcc=new URLSearchParams();if(_0x12dc59['include']){const _0x447c5e=Array['isArray'](_0x12dc59['include'])?_0x12dc59['include']['join'](','):String(_0x12dc59['include']);if(_0x447c5e)_0x4b5bcc['set']('include',_0x447c5e);}const _0x4889a2=await fetch(API_BASE+'/templates'+(_0x4b5bcc['toString']()?'?'+_0x4b5bcc['toString']():''));if(!_0x4889a2['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4889a2['statusText']);return await _0x4889a2['json']();},async 'getTemplatesForEnvironment'(_0x23cfd4,_0x4ed2b3={}){if(!_0x23cfd4)throw new Error('Environment\x20name\x20is\x20required');const _0x1adab5=new URLSearchParams();if(_0x4ed2b3['include']){const _0x3a51b7=Array['isArray'](_0x4ed2b3['include'])?_0x4ed2b3['include']['join'](','):String(_0x4ed2b3['include']);if(_0x3a51b7)_0x1adab5['set']('include',_0x3a51b7);}const _0xd9187e=await fetch(API_BASE+'/templates/'+_0x23cfd4+(_0x1adab5['toString']()?'?'+_0x1adab5['toString']():''));if(!_0xd9187e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x23cfd4+':\x20'+_0xd9187e['statusText']);return await _0xd9187e['json']();},async 'getTemplate'(_0x401727,_0x401e97,_0x35106b={}){if(!_0x401727||!_0x401e97)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x426764=new URLSearchParams();if(_0x35106b['include']){const _0x1993ed=Array['isArray'](_0x35106b['include'])?_0x35106b['include']['join'](','):String(_0x35106b['include']);if(_0x1993ed)_0x426764['set']('include',_0x1993ed);}const _0x503a1f=await fetch(API_BASE+'/templates/'+_0x401727+'/'+_0x401e97+(_0x426764['toString']()?'?'+_0x426764['toString']():''));if(!_0x503a1f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x503a1f['statusText']);return await _0x503a1f['json']();},async 'getTaskLogs'(_0x63639b,_0x225ffe={}){if(!_0x63639b)throw new Error('Task\x20ID\x20is\x20required');const _0x5082eb=new URLSearchParams();_0x225ffe['tail']&&_0x5082eb['set']('tail',String(_0x225ffe['tail']));const _0x34f739=await fetch(API_BASE+'/tasks/'+_0x63639b+'/logs'+(_0x5082eb['toString']()?'?'+_0x5082eb['toString']():''));if(!_0x34f739['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x34f739['statusText']);return await _0x34f739['text']();},async 'getContainers'(){const _0x416107=await fetch(API_BASE+'/containers');if(!_0x416107['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x416107['statusText']);return await _0x416107['json']();},async 'getContainer'(_0x48389e){const _0x5cdcaa=await fetch(API_BASE+'/containers/'+_0x48389e);if(!_0x5cdcaa['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5cdcaa['statusText']);return await _0x5cdcaa['json']();},async 'startInteractiveContainer'(_0x300f92){const _0x40ca32=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x300f92)});if(!_0x40ca32['ok']){const _0x271852=await _0x40ca32['json']()['catch'](()=>({}));throw new Error(_0x271852['message']||'Failed\x20to\x20start\x20container:\x20'+_0x40ca32['statusText']);}return await _0x40ca32['json']();},async 'stopContainer'(_0x32e44d){const _0x8dad81=await fetch(API_BASE+'/containers/'+_0x32e44d,{'method':'DELETE'});if(!_0x8dad81['ok']){const _0x352248=await _0x8dad81['json']()['catch'](()=>({}));throw new Error(_0x352248['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x8dad81['statusText']);}return await _0x8dad81['json']();},async 'stopTask'(_0x26ad68){if(!_0x26ad68)throw new Error('Task\x20ID\x20is\x20required');const _0x4508e3=await fetch(API_BASE+'/tasks/'+_0x26ad68+'/stop',{'method':'POST'});if(!_0x4508e3['ok']){const _0x1d2c9e=await _0x4508e3['json']()['catch'](()=>({}));throw new Error(_0x1d2c9e['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x4508e3['statusText']);}return await _0x4508e3['json']();},async 'interruptTask'(_0x1da781){if(!_0x1da781)throw new Error('Task\x20ID\x20is\x20required');const _0x5bfd6c=await fetch(API_BASE+'/tasks/'+_0x1da781+'/interrupt',{'method':'POST'});if(!_0x5bfd6c['ok']){const _0x59cb1f=await _0x5bfd6c['json']()['catch'](()=>({}));throw new Error(_0x59cb1f['error']||_0x59cb1f['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5bfd6c['statusText']);}return await _0x5bfd6c['json']();},async 'startTask'(_0x39cdb2){if(!_0x39cdb2)throw new Error('Task\x20ID\x20is\x20required');const _0xc2bccd=await fetch(API_BASE+'/tasks/'+_0x39cdb2+'/start',{'method':'POST'});if(!_0xc2bccd['ok']){const _0xc0a047=await _0xc2bccd['json']()['catch'](()=>({}));throw new Error(_0xc0a047['error']||'Failed\x20to\x20start\x20task:\x20'+_0xc2bccd['statusText']);}return await _0xc2bccd['json']();},async 'deleteTask'(_0x598615){if(!_0x598615)throw new Error('Task\x20ID\x20is\x20required');const _0x8ad427=await fetch(API_BASE+'/tasks/'+_0x598615,{'method':'DELETE'});if(!_0x8ad427['ok']){const _0x408ca6=await _0x8ad427['json']()['catch'](()=>({}));throw new Error(_0x408ca6['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x8ad427['statusText']);}return await _0x8ad427['json']();},async 'refreshTasksFromDisk'(){const _0x23eed2=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x23eed2['ok']){const _0x48095a=await _0x23eed2['json']()['catch'](()=>({}));throw new Error(_0x48095a['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x23eed2['statusText']);}return await _0x23eed2['json']();},async 'approveTask'(_0x21e26e,_0x2daffc={}){if(!_0x21e26e)throw new Error('Task\x20ID\x20is\x20required');const _0x2f2182={'commit_message':_0x2daffc['commit_message']||'','pull':_0x2daffc['pull']??![],'push':_0x2daffc['push']??![]};_0x2daffc['new_branch']&&(_0x2f2182['new_branch']=_0x2daffc['new_branch']);const _0x98aee3=await fetch(API_BASE+'/tasks/'+_0x21e26e+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f2182)});if(!_0x98aee3['ok']){const _0x425838=await _0x98aee3['json']()['catch'](()=>({}));let _0xaa81f9=_0x425838['error']||_0x425838['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x98aee3['statusText'];if(_0x425838['results']&&Array['isArray'](_0x425838['results'])){const _0x5cc6da=_0x425838['results']['filter'](_0x4989f4=>!_0x4989f4['success']&&_0x4989f4['error']);_0x5cc6da['length']>0x0&&(_0xaa81f9=_0x5cc6da[0x0]['error']);}throw new Error(_0xaa81f9);}return await _0x98aee3['json']();},async 'getPullRequestInfo'(_0x387d50){if(!_0x387d50)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8b11=await fetch(API_BASE+'/tasks/'+_0x387d50+'/pull-request-info');if(!_0x4f8b11['ok']){const _0x47ef77=await _0x4f8b11['json']()['catch'](()=>({}));throw new Error(_0x47ef77['error']||_0x47ef77['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4f8b11['statusText']);}return await _0x4f8b11['json']();},async 'createPullRequests'(_0x5c589a,_0x177f21){if(!_0x5c589a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x177f21||!Array['isArray'](_0x177f21))throw new Error('repos\x20array\x20is\x20required');const _0x28dcb3=await fetch(API_BASE+'/tasks/'+_0x5c589a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x177f21})});if(!_0x28dcb3['ok']){const _0x2db840=await _0x28dcb3['json']()['catch'](()=>({}));let _0x1dc302=_0x2db840['error']||_0x2db840['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x28dcb3['statusText'];if(_0x2db840['results']&&Array['isArray'](_0x2db840['results'])){const _0x5a3191=_0x2db840['results']['filter'](_0x1dd7a3=>!_0x1dd7a3['success']&&_0x1dd7a3['error']);_0x5a3191['length']>0x0&&(_0x1dc302=_0x5a3191[0x0]['error']);}throw new Error(_0x1dc302);}return await _0x28dcb3['json']();},async 'syncRepos'(_0x11456d){if(!_0x11456d)throw new Error('Task\x20ID\x20is\x20required');const _0x329278=await fetch(API_BASE+'/tasks/'+_0x11456d+'/sync-repos',{'method':'POST'});if(!_0x329278['ok']){const _0x16f771=await _0x329278['json']()['catch'](()=>({}));throw new Error(_0x16f771['error']||_0x16f771['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x329278['statusText']);}return await _0x329278['json']();},async 'getIbmiSyncInfo'(_0x43673f){if(!_0x43673f)throw new Error('Task\x20ID\x20is\x20required');const _0x1817c9=await fetch(API_BASE+'/tasks/'+_0x43673f+'/ibmi-sync-info');if(!_0x1817c9['ok']){const _0x36fe62=await _0x1817c9['json']()['catch'](()=>({}));throw new Error(_0x36fe62['error']||_0x36fe62['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1817c9['json']();},async 'getSyncFiles'(_0x152573){if(!_0x152573)throw new Error('Task\x20ID\x20is\x20required');const _0x53cf19=await fetch(API_BASE+'/tasks/'+_0x152573+'/sync-to-ibmi/files');if(!_0x53cf19['ok']){const _0x5119b9=await _0x53cf19['json']()['catch'](()=>({}));throw new Error(_0x5119b9['error']||_0x5119b9['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x53cf19['json']();},async 'syncToIbmi'(_0x48916a,_0x2c1872,_0x5988ed=null,_0x1bbee7=null,_0x49ccdb=null){if(!_0x48916a)throw new Error('Task\x20ID\x20is\x20required');const _0x55651a={'library':_0x2c1872};if(_0x5988ed)_0x55651a['user']=_0x5988ed;if(_0x1bbee7)_0x55651a['password']=_0x1bbee7;if(_0x49ccdb)_0x55651a['files']=_0x49ccdb;const _0x280aec=await fetch(API_BASE+'/tasks/'+_0x48916a+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55651a)});if(!_0x280aec['ok']){const _0x2c46b3=await _0x280aec['json']()['catch'](()=>({}));throw new Error(_0x2c46b3['error']||_0x2c46b3['message']||'Sync\x20failed');}return await _0x280aec['json']();},async 'getIbmiSyncLog'(_0x378669){if(!_0x378669)throw new Error('Task\x20ID\x20is\x20required');const _0x55b045=await fetch(API_BASE+'/tasks/'+_0x378669+'/ibmi-sync-log');if(!_0x55b045['ok']){const _0x23be01=await _0x55b045['json']()['catch'](()=>({}));throw new Error(_0x23be01['error']||_0x23be01['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x55b045['json']();},async 'pullChanges'(_0x526975){if(!_0x526975)throw new Error('Task\x20ID\x20is\x20required');const _0x45c4b5=await fetch(API_BASE+'/tasks/'+_0x526975+'/pull-changes',{'method':'POST'});if(!_0x45c4b5['ok']){const _0x12fd71=await _0x45c4b5['json']()['catch'](()=>({}));throw new Error(_0x12fd71['error']||_0x12fd71['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x45c4b5['statusText']);}return await _0x45c4b5['json']();},async 'readFile'(_0x4bba86,_0x53b60a){if(!_0x4bba86)throw new Error('Task\x20ID\x20is\x20required');if(!_0x53b60a)throw new Error('File\x20path\x20is\x20required');const _0x4b3aee=await fetch(API_BASE+'/tasks/'+_0x4bba86+'/files?path='+encodeURIComponent(_0x53b60a));if(!_0x4b3aee['ok']){const _0x4b9fca=await _0x4b3aee['json']()['catch'](()=>({}));throw new Error(_0x4b9fca['error']||_0x4b9fca['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4b3aee['statusText']);}return await _0x4b3aee['json']();},'getTaskFileDownloadUrl'(_0x2c1429,_0xac2afb){if(!_0x2c1429)throw new Error('Task\x20ID\x20is\x20required');if(!_0xac2afb)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2c1429+'/files/download?path='+encodeURIComponent(_0xac2afb);},async 'writeFile'(_0x2cf831,_0x3c09b9,_0x48cb6d){if(!_0x2cf831)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3c09b9)throw new Error('File\x20path\x20is\x20required');if(_0x48cb6d===undefined)throw new Error('Content\x20is\x20required');const _0x1c5294=await fetch(API_BASE+'/tasks/'+_0x2cf831+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3c09b9,'content':_0x48cb6d})});if(!_0x1c5294['ok']){const _0x1628f0=await _0x1c5294['json']()['catch'](()=>({}));throw new Error(_0x1628f0['error']||_0x1628f0['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1c5294['statusText']);}return await _0x1c5294['json']();},async 'uploadTaskFiles'(_0x734798,_0x27caac,_0xc6bc61){if(!_0x734798)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27caac)throw new Error('Target\x20directory\x20is\x20required');if(!_0xc6bc61||_0xc6bc61['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x1b6798=new FormData();_0x1b6798['append']('targetDir',_0x27caac);for(const _0x20ad26 of _0xc6bc61){_0x1b6798['append']('files',_0x20ad26,_0x20ad26['name']);}const _0xa702ee=await fetch(API_BASE+'/tasks/'+_0x734798+'/files/upload',{'method':'POST','body':_0x1b6798});if(!_0xa702ee['ok']){const _0x2c12cf=await _0xa702ee['json']()['catch'](()=>({}));throw new Error(_0x2c12cf['error']||_0x2c12cf['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xa702ee['statusText']);}return await _0xa702ee['json']();},async 'deleteFile'(_0x4ade78,_0x351ad1){if(!_0x4ade78)throw new Error('Task\x20ID\x20is\x20required');if(!_0x351ad1)throw new Error('File\x20path\x20is\x20required');const _0x29faa4=await fetch(API_BASE+'/tasks/'+_0x4ade78+'/files?path='+encodeURIComponent(_0x351ad1),{'method':'DELETE'});if(!_0x29faa4['ok']){const _0x45aee3=await _0x29faa4['json']()['catch'](()=>({}));throw new Error(_0x45aee3['error']||_0x45aee3['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x29faa4['statusText']);}return await _0x29faa4['json']();},async 'discardFile'(_0x5ef92,_0x268b48,_0x206ab9){if(!_0x5ef92)throw new Error('Task\x20ID\x20is\x20required');if(!_0x268b48)throw new Error('File\x20path\x20is\x20required');if(!_0x206ab9)throw new Error('Repository\x20path\x20is\x20required');const _0x3793a6=await fetch(API_BASE+'/tasks/'+_0x5ef92+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x268b48,'repoPath':_0x206ab9})});if(!_0x3793a6['ok']){const _0x4f10a9=await _0x3793a6['json']()['catch'](()=>({}));throw new Error(_0x4f10a9['error']||_0x4f10a9['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3793a6['statusText']);}return await _0x3793a6['json']();},async 'followUpTask'(_0x1483d4,_0x555b9c={}){if(!_0x1483d4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x555b9c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x594997,_0x5c5b6f={};if(_0x555b9c['files']&&_0x555b9c['files']['length']>0x0){const _0x4a83bd=new FormData();_0x4a83bd['append']('instructions',_0x555b9c['instructions']);for(const _0x325b65 of _0x555b9c['files']){_0x4a83bd['append']('attachments',_0x325b65);}_0x594997=_0x4a83bd;}else _0x5c5b6f['Content-Type']='application/json',_0x594997=JSON['stringify']({'instructions':_0x555b9c['instructions']});const _0x2b2fea=await fetch(API_BASE+'/tasks/'+_0x1483d4+'/follow-up',{'method':'POST','headers':_0x5c5b6f,'body':_0x594997});if(!_0x2b2fea['ok']){const _0x29b08a=await _0x2b2fea['json']()['catch'](()=>({}));throw new Error(_0x29b08a['error']||_0x29b08a['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x2b2fea['statusText']);}return await _0x2b2fea['json']();},async 'getTaskRewindPoints'(_0x1be989){if(!_0x1be989)throw new Error('Task\x20ID\x20is\x20required');const _0x39a915=await fetch(API_BASE+'/tasks/'+_0x1be989+'/rewind-points');if(!_0x39a915['ok']){const _0x460500=await _0x39a915['json']()['catch'](()=>({}));throw new Error(_0x460500['error']||_0x460500['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x39a915['statusText']);}return await _0x39a915['json']();},async 'rewindTask'(_0x35ecde,_0x359395={}){if(!_0x35ecde)throw new Error('Task\x20ID\x20is\x20required');const _0x66eaf1=Number['isInteger'](_0x359395['targetFollowUpCount'])?_0x359395['targetFollowUpCount']:0x0,_0x2507f5={'targetFollowUpCount':_0x66eaf1};typeof _0x359395['instructions']==='string'&&_0x359395['instructions']['trim']()&&(_0x2507f5['instructions']=_0x359395['instructions']['trim']());typeof _0x359395['rewindFiles']==='boolean'&&(_0x2507f5['rewindFiles']=_0x359395['rewindFiles']);const _0x217df5=await fetch(API_BASE+'/tasks/'+_0x35ecde+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2507f5)});if(!_0x217df5['ok']){const _0x22c95c=await _0x217df5['json']()['catch'](()=>({}));throw new Error(_0x22c95c['error']||_0x22c95c['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x217df5['statusText']);}return await _0x217df5['json']();},async 'login'(_0x2bc830,_0x4a98d3){const _0x7f24fe=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2bc830,'password':_0x4a98d3})});if(!_0x7f24fe['ok']){const _0x2c2bc8=await _0x7f24fe['json']();throw new Error(_0x2c2bc8['message']||'Login\x20failed');}return await _0x7f24fe['json']();},async 'logout'(){const _0xe82141=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0xe82141['ok']){const _0x38248a=await _0xe82141['json']();throw new Error(_0x38248a['message']||'Logout\x20failed');}return await _0xe82141['json']();},async 'getCurrentUser'(){const _0x4c0ac2=await fetch(API_BASE+'/auth/me');if(!_0x4c0ac2['ok'])throw new Error('Not\x20authenticated');const _0x2ec907=await _0x4c0ac2['json']();return _0x2ec907['user'];},async 'getRolesInfo'(){const _0x5d718d=await fetch(API_BASE+'/users/roles');if(!_0x5d718d['ok']){const _0x41ed46=await _0x5d718d['json']();throw new Error(_0x41ed46['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x5d718d['json']();},async 'getUsers'(){const _0x582e5b=await fetch(API_BASE+'/users');if(!_0x582e5b['ok']){const _0x8b6aaa=await _0x582e5b['json']();throw new Error(_0x8b6aaa['message']||'Failed\x20to\x20get\x20users');}return await _0x582e5b['json']();},async 'getUser'(_0x14e744){const _0x4af1c2=await fetch(API_BASE+'/users/'+_0x14e744);if(!_0x4af1c2['ok']){const _0x66c734=await _0x4af1c2['json']();throw new Error(_0x66c734['message']||'Failed\x20to\x20get\x20user');}return await _0x4af1c2['json']();},async 'createUser'(_0x11b61a){const _0x57fb14=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11b61a)});if(!_0x57fb14['ok']){const _0x139799=await _0x57fb14['json']();throw new Error(_0x139799['message']||'Failed\x20to\x20create\x20user');}return await _0x57fb14['json']();},async 'updateUser'(_0x5baeb6,_0x4e6cd6){const _0xbada10=await fetch(API_BASE+'/users/'+_0x5baeb6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e6cd6)});if(!_0xbada10['ok']){const _0x3b8f70=await _0xbada10['json']();throw new Error(_0x3b8f70['message']||'Failed\x20to\x20update\x20user');}return await _0xbada10['json']();},async 'deleteUser'(_0x5b486d){const _0x47432e=await fetch(API_BASE+'/users/'+_0x5b486d,{'method':'DELETE'});if(!_0x47432e['ok']){const _0x30f626=await _0x47432e['json']();throw new Error(_0x30f626['message']||'Failed\x20to\x20delete\x20user');}return await _0x47432e['json']();},async 'stopAllContainers'(){const _0x4811c6=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1b0bf1=await _0x4811c6['json']()['catch'](()=>({}));if(!_0x4811c6['ok'])throw new Error(_0x1b0bf1['message']||_0x1b0bf1['error']||'Failed\x20to\x20stop\x20containers');return _0x1b0bf1;},async 'removeStoppedContainers'(){const _0x2ec3ff=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x351316=await _0x2ec3ff['json']()['catch'](()=>({}));if(!_0x2ec3ff['ok'])throw new Error(_0x351316['message']||_0x351316['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x351316;},async 'pruneDockerResources'(){const _0x55e702=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x395d14=await _0x55e702['json']()['catch'](()=>({}));if(!_0x55e702['ok'])throw new Error(_0x395d14['message']||_0x395d14['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x395d14;},async 'createPasswordToken'(_0x348513,_0x1dfbc5='setup',_0x589353=![]){const _0x5bbd1e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x348513,'type':_0x1dfbc5,'sendEmail':_0x589353})});if(!_0x5bbd1e['ok']){const _0x414261=await _0x5bbd1e['json']();throw new Error(_0x414261['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5bbd1e['json']();},async 'getEmailConfig'(){const _0x3a6ee2=await fetch(API_BASE+'/password/email-config');if(!_0x3a6ee2['ok']){const _0x1a76fc=await _0x3a6ee2['json']();throw new Error(_0x1a76fc['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3a6ee2['json']();},async 'updateTaskName'(_0xa306d,_0x2b8900){const _0x2130b6=await fetch(API_BASE+'/tasks/'+_0xa306d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x2b8900})});if(!_0x2130b6['ok']){const _0x3a5865=await _0x2130b6['json']();throw new Error(_0x3a5865['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2130b6['json']();},async 'pinTask'(_0x1428fa,_0x480bd5,_0xf41c10=null){if(!_0x1428fa)throw new Error('Task\x20ID\x20is\x20required');const _0xc7b15e={'pinned':_0x480bd5};_0xf41c10&&_0xf41c10['length']>0x0&&(_0xc7b15e['additionalTaskIds']=_0xf41c10);const _0x708a12=await fetch(API_BASE+'/tasks/'+_0x1428fa+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7b15e)});if(!_0x708a12['ok']){const _0x21d7f2=await _0x708a12['json']();throw new Error(_0x21d7f2['error']||'Failed\x20to\x20pin\x20task');}return await _0x708a12['json']();},async 'setTaskWinner'(_0x1d6dc8,_0x43b60e,_0x3a5adb=[]){if(!_0x1d6dc8)throw new Error('Task\x20ID\x20is\x20required');const _0x28dfd0=await fetch(API_BASE+'/tasks/'+_0x1d6dc8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x43b60e,'siblings':_0x3a5adb})});if(!_0x28dfd0['ok']){const _0x272119=await _0x28dfd0['json']();throw new Error(_0x272119['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x28dfd0['json']();},async 'setTaskLoser'(_0x3a34b6,_0x2fcb85){if(!_0x3a34b6)throw new Error('Task\x20ID\x20is\x20required');const _0x1e95c6=await fetch(API_BASE+'/tasks/'+_0x3a34b6+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2fcb85})});if(!_0x1e95c6['ok']){const _0x51ce72=await _0x1e95c6['json']();throw new Error(_0x51ce72['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1e95c6['json']();},async 'createTaskGroup'(_0x1473a6){const _0x144392=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1473a6)});if(!_0x144392['ok']){const _0x224603=await _0x144392['json']();throw new Error(_0x224603['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x144392['json']();},async 'getTaskGroups'(_0xb34e3f={}){const _0x549bec=new URLSearchParams();if(_0xb34e3f['userId'])_0x549bec['set']('userId',String(_0xb34e3f['userId']));if(_0xb34e3f['status'])_0x549bec['set']('status',String(_0xb34e3f['status']));if(_0xb34e3f['limit'])_0x549bec['set']('limit',String(_0xb34e3f['limit']));const _0x4a15e3=API_BASE+'/tasks/groups'+(_0x549bec['toString']()?'?'+_0x549bec['toString']():''),_0x3769be=await fetch(_0x4a15e3);if(!_0x3769be['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3769be['json']();},async 'getTaskGroup'(_0xbb155){const _0x5cc2cc=await fetch(API_BASE+'/tasks/groups/'+_0xbb155);if(!_0x5cc2cc['ok']){const _0x576aca=await _0x5cc2cc['json']();throw new Error(_0x576aca['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x5cc2cc['json']();},async 'updateTaskGroup'(_0x1ad128,_0x32804b,_0x44eb7a){const _0x366d58=await fetch(API_BASE+'/tasks/'+_0x1ad128+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x32804b,'groupIndex':_0x44eb7a})});if(!_0x366d58['ok']){const _0x429c17=await _0x366d58['json']();throw new Error(_0x429c17['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x366d58['json']();},async 'removeTaskFromGroup'(_0x29cc77){return this['updateTaskGroup'](_0x29cc77,null,null);},async 'deleteTaskGroup'(_0x1646d9,_0xf6658=![]){const _0x38b06b=_0xf6658?'?deleteTasks=true':'',_0x5c7f95=await fetch(API_BASE+'/tasks/groups/'+_0x1646d9+_0x38b06b,{'method':'DELETE'});if(!_0x5c7f95['ok']){const _0x38e8c9=await _0x5c7f95['json']();throw new Error(_0x38e8c9['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x58107d,_0x29b880){const _0x362565=await fetch(API_BASE+'/tasks/groups/'+_0x58107d+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x29b880})});if(!_0x362565['ok']){const _0x538e40=await _0x362565['json']();throw new Error(_0x538e40['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x362565['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x57339d){if(!_0x57339d)throw new Error('Task\x20ID\x20is\x20required');const _0x24b153=await fetch(API_BASE+'/tasks/'+_0x57339d+'/comments');if(!_0x24b153['ok']){const _0x226c2b=await _0x24b153['json']()['catch'](()=>({}));throw new Error(_0x226c2b['error']||'Failed\x20to\x20get\x20comments');}return await _0x24b153['json']();},async 'addComment'(_0x519b34,_0x446a2f){if(!_0x519b34)throw new Error('Task\x20ID\x20is\x20required');if(!_0x446a2f)throw new Error('Comment\x20content\x20is\x20required');const _0x481a5f=await fetch(API_BASE+'/tasks/'+_0x519b34+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x446a2f})});if(!_0x481a5f['ok']){const _0x3b1fec=await _0x481a5f['json']()['catch'](()=>({}));throw new Error(_0x3b1fec['error']||'Failed\x20to\x20add\x20comment');}return await _0x481a5f['json']();},async 'updateComment'(_0x2e4d88,_0x1a5bcb,_0xd556da){if(!_0x2e4d88)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a5bcb)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xd556da)throw new Error('Comment\x20content\x20is\x20required');const _0x579261=await fetch(API_BASE+'/tasks/'+_0x2e4d88+'/comments/'+_0x1a5bcb,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xd556da})});if(!_0x579261['ok']){const _0x9b227a=await _0x579261['json']()['catch'](()=>({}));throw new Error(_0x9b227a['error']||'Failed\x20to\x20update\x20comment');}return await _0x579261['json']();},async 'deleteComment'(_0x164d08,_0x4869b6){if(!_0x164d08)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4869b6)throw new Error('Comment\x20ID\x20is\x20required');const _0x413791=await fetch(API_BASE+'/tasks/'+_0x164d08+'/comments/'+_0x4869b6,{'method':'DELETE'});if(!_0x413791['ok']){const _0x250a39=await _0x413791['json']()['catch'](()=>({}));throw new Error(_0x250a39['error']||'Failed\x20to\x20delete\x20comment');}return await _0x413791['json']();},async 'createObjective'(_0x250546){const _0x287cad={'objective':!![],'name':_0x250546['name']||'','environment':_0x250546['environment']||null,'agents':_0x250546['agents']||[],'branches':_0x250546['branches']||{},'isPinned':_0x250546['isPinned']||![],'parentObjectiveId':_0x250546['parentObjectiveId']||null,'env_vars':_0x250546['envVars']||{},'parameters':{'instructions':_0x250546['instructions']||''},'files':_0x250546['files']||[],'jira':_0x250546['jira']||null};return this['createTask'](_0x287cad);},async 'updateObjective'(_0x336930,_0x381af7,_0x419f33=[],_0x5137e1=[]){let _0xc17e57,_0x164eb1={};const _0x2b2d1b={..._0x381af7};_0x5137e1&&_0x5137e1['length']>0x0&&(_0x2b2d1b['removeAttachments']=_0x5137e1);if(_0x419f33&&_0x419f33['length']>0x0){const _0x3b1408=new FormData();for(const [_0x38f8f4,_0x564e46]of Object['entries'](_0x2b2d1b)){if(_0x564e46==null)continue;typeof _0x564e46==='object'?_0x3b1408['append'](_0x38f8f4,JSON['stringify'](_0x564e46)):_0x3b1408['append'](_0x38f8f4,String(_0x564e46));}for(const _0x5a0c0b of _0x419f33){_0x3b1408['append']('attachments',_0x5a0c0b);}_0xc17e57=_0x3b1408;}else _0x164eb1['Content-Type']='application/json',_0xc17e57=JSON['stringify'](_0x2b2d1b);const _0xb8309c=await fetch(API_BASE+'/tasks/'+_0x336930,{'method':'PATCH','headers':_0x164eb1,'body':_0xc17e57});if(!_0xb8309c['ok']){const _0x56eef8=await _0xb8309c['json']();throw new Error(_0x56eef8['error']||'Failed\x20to\x20update\x20objective');}return await _0xb8309c['json']();},async 'deleteObjective'(_0x5e37d7){return this['deleteTask'](_0x5e37d7);},async 'launchObjective'(_0x3a84dd,_0x3d6fcb={}){const _0x4e5e8d=await fetch(API_BASE+'/tasks/'+_0x3a84dd+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d6fcb)});if(!_0x4e5e8d['ok']){const _0x58069d=await _0x4e5e8d['json']();throw new Error(_0x58069d['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4e5e8d['json']();},async 'getObjectiveAttachments'(_0x3ac773){return this['getTaskAttachments'](_0x3ac773);},async 'createJudgeTask'({environment:_0x5667eb,judgeAgent:_0x23e7e1,groupId:_0x3a151f,taskIds:_0x3e7573,judgeCustomInstructions:_0x297b6b,isPinned:_0x2722c1}){const _0x2106e1=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5667eb,'judgeAgent':_0x23e7e1,'groupId':_0x3a151f,'taskIds':_0x3e7573,'judgeCustomInstructions':_0x297b6b,'isPinned':_0x2722c1})});if(!_0x2106e1['ok']){const _0x1c9b7d=await _0x2106e1['json']();throw new Error(_0x1c9b7d['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2106e1['json']();},async 'getJudgeTasks'(_0x3f4461){const _0x50c664=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3f4461));if(!_0x50c664['ok']){const _0x3c6465=await _0x50c664['json']();throw new Error(_0x3c6465['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x50c664['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x232583,_0x3c2e0f,_0x3859d7=''){const _0x1aaa54=await fetch(API_BASE+'/tasks/'+_0x232583+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3c2e0f,'customPreamble':_0x3859d7})});if(!_0x1aaa54['ok']){const _0x597e3e=await _0x1aaa54['json']();throw new Error(_0x597e3e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1aaa54['json']();},async 'getJiraConfig'(){const _0x31dc2e=await fetch(API_BASE+'/jira/config');if(!_0x31dc2e['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x31dc2e['json']();},async 'getJiraIssue'(_0x1645b3){const _0x270e06=await fetch(API_BASE+'/jira/issues/'+_0x1645b3);if(!_0x270e06['ok']){const _0x8ba9ad=await _0x270e06['json']()['catch'](()=>({}));throw new Error(_0x8ba9ad['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x270e06['statusText']);}return await _0x270e06['json']();},async 'searchJiraIssues'(_0x2ad7cb,_0x2271fb=0x14){const _0x161d06=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2ad7cb,'maxResults':_0x2271fb})});if(!_0x161d06['ok']){const _0x34379d=await _0x161d06['json']()['catch'](()=>({}));throw new Error(_0x34379d['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x161d06['statusText']);}return await _0x161d06['json']();},async 'postJiraComment'(_0xe5ab53,_0x4ad2ec){const _0x46d971=await fetch(API_BASE+'/jira/issues/'+_0xe5ab53+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x4ad2ec})});if(!_0x46d971['ok']){const _0x19b13f=await _0x46d971['json']()['catch'](()=>({}));throw new Error(_0x19b13f['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x46d971['statusText']);}return await _0x46d971['json']();},async 'getJiraComments'(_0xcc4d7a){const _0x42cfb8=await fetch(API_BASE+'/jira/issues/'+_0xcc4d7a+'/comments');if(!_0x42cfb8['ok']){const _0x1f3f11=await _0x42cfb8['json']()['catch'](()=>({}));throw new Error(_0x1f3f11['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x42cfb8['statusText']);}return await _0x42cfb8['json']();},async 'promptParameter'({environment:_0x34a12f,command:_0x1b4179,parser:parser='json'}){const _0x1f49e6=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x34a12f,'command':_0x1b4179,'parser':parser})});if(!_0x1f49e6['ok']){const _0x37aef0=await _0x1f49e6['json']()['catch'](()=>({}));throw new Error(_0x37aef0['message']||_0x37aef0['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x1f49e6['statusText']);}return await _0x1f49e6['json']();},async 'promptParameterStream'(_0x555975,_0xeb6387){const _0x4ca344=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x555975)});if(!_0x4ca344['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4ca344['statusText']);const _0x1c2592=_0x4ca344['body']['getReader'](),_0x1b56c9=new TextDecoder();let _0x1ff70d='';return new Promise((_0x2dca22,_0x127fda)=>{const _0x41b032=async()=>{try{const {done:_0x176b27,value:_0x55fec5}=await _0x1c2592['read']();if(_0x176b27)return;_0x1ff70d+=_0x1b56c9['decode'](_0x55fec5,{'stream':!![]});const _0x151e01=_0x1ff70d['split']('\x0a\x0a');_0x1ff70d=_0x151e01['pop']()||'';for(const _0x4c80ea of _0x151e01){if(!_0x4c80ea['trim']())continue;const _0x341314=_0x4c80ea['split']('\x0a');let _0x700e35='message',_0x3ab34f='';for(const _0x12683b of _0x341314){if(_0x12683b['startsWith']('event:'))_0x700e35=_0x12683b['substring'](0x6)['trim']();else _0x12683b['startsWith']('data:')&&(_0x3ab34f=_0x12683b['substring'](0x5)['trim']());}if(!_0x3ab34f)continue;try{const _0x7e452=JSON['parse'](_0x3ab34f);if(_0x700e35==='progress'&&_0xeb6387)_0xeb6387(_0x7e452['stage'],_0x7e452['message']);else{if(_0x700e35==='result'){_0x2dca22(_0x7e452);return;}else{if(_0x700e35==='error'){let _0x2b68ef=_0x7e452['message']||_0x7e452['error']||'Prompt\x20command\x20failed';_0x7e452['rawOutput']&&(_0x2b68ef+='\x0a\x0aRaw\x20output:\x0a'+_0x7e452['rawOutput']);_0x127fda(new Error(_0x2b68ef));return;}}}}catch(_0x3eea2e){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3eea2e),console['error']('Event\x20type:',_0x700e35),console['error']('Event\x20data:',_0x3ab34f),console['error']('First\x20200\x20chars:',_0x3ab34f['substring'](0x0,0xc8)),_0x127fda(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3eea2e['message']+'\x0a\x0aData:\x20'+_0x3ab34f['substring'](0x0,0x1f4)));return;}}_0x41b032();}catch(_0x16f500){_0x127fda(_0x16f500);}};_0x41b032();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x527cf4){const _0x1d7587=await fetch(''+API_BASE+_0x527cf4);if(!_0x1d7587['ok']){const _0x5a729b=await _0x1d7587['json']()['catch'](()=>({'error':_0x1d7587['statusText']})),_0x5c752a=new Error(_0x5a729b['error']||_0x5a729b['message']||_0x1d7587['statusText']);if(_0x5a729b['detail']!==undefined)_0x5c752a['detail']=_0x5a729b['detail'];throw _0x5c752a;}return await _0x1d7587['json']();},async 'post'(_0x50f56b,_0x1dd3d1){const _0x7d483b=await fetch(''+API_BASE+_0x50f56b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1dd3d1)});if(!_0x7d483b['ok']){const _0x28627a=await _0x7d483b['json']()['catch'](()=>({'error':_0x7d483b['statusText']})),_0x1fb2af=new Error(_0x28627a['error']||_0x28627a['message']||_0x7d483b['statusText']);if(_0x28627a['detail']!==undefined)_0x1fb2af['detail']=_0x28627a['detail'];throw _0x1fb2af;}return await _0x7d483b['json']();},async 'put'(_0x2d575f,_0x1d1ae7){const _0x13db45=await fetch(''+API_BASE+_0x2d575f,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d1ae7)});if(!_0x13db45['ok']){const _0x52ac51=await _0x13db45['json']()['catch'](()=>({'error':_0x13db45['statusText']})),_0xbff5c3=new Error(_0x52ac51['error']||_0x52ac51['message']||_0x13db45['statusText']);if(_0x52ac51['detail']!==undefined)_0xbff5c3['detail']=_0x52ac51['detail'];throw _0xbff5c3;}return await _0x13db45['json']();},async 'delete'(_0x2ffde6,_0x27dd36){const _0x2fe189={'method':'DELETE'};_0x27dd36&&(_0x2fe189['headers']={'Content-Type':'application/json'},_0x2fe189['body']=JSON['stringify'](_0x27dd36));const _0x1166a5=await fetch(''+API_BASE+_0x2ffde6,_0x2fe189);if(!_0x1166a5['ok']){const _0x2bfe2c=await _0x1166a5['json']()['catch'](()=>({'error':_0x1166a5['statusText']})),_0x1c2aba=new Error(_0x2bfe2c['error']||_0x2bfe2c['message']||_0x1166a5['statusText']);if(_0x2bfe2c['detail']!==undefined)_0x1c2aba['detail']=_0x2bfe2c['detail'];throw _0x1c2aba;}return await _0x1166a5['json']();},async 'getSkills'(){const _0xb35c36=await fetch(API_BASE+'/skills');if(!_0xb35c36['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0xb35c36['statusText']);return await _0xb35c36['json']();},async 'getSkill'(_0x56ed35){const _0x5f44e3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x56ed35));if(!_0x5f44e3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5f44e3['statusText']);return await _0x5f44e3['json']();},async 'createSkill'(_0x580821){const _0x5e5f05=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x580821)});if(!_0x5e5f05['ok']){const _0x23dca1=await _0x5e5f05['json']()['catch'](()=>({'error':_0x5e5f05['statusText']})),_0x116be9=new Error(_0x23dca1['error']||_0x23dca1['message']||_0x5e5f05['statusText']);if(_0x23dca1['detail']!==undefined)_0x116be9['detail']=_0x23dca1['detail'];throw _0x116be9;}return await _0x5e5f05['json']();},async 'updateSkill'(_0x35262b,_0x26c0ce){const _0x267195=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35262b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26c0ce)});if(!_0x267195['ok']){const _0x3059ba=await _0x267195['json']()['catch'](()=>({'error':_0x267195['statusText']})),_0xf61abc=new Error(_0x3059ba['error']||_0x3059ba['message']||_0x267195['statusText']);if(_0x3059ba['detail']!==undefined)_0xf61abc['detail']=_0x3059ba['detail'];throw _0xf61abc;}return await _0x267195['json']();},async 'deleteSkill'(_0x3f7f06){const _0x284571=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f7f06),{'method':'DELETE'});if(!_0x284571['ok']){const _0x5580fc=await _0x284571['json']()['catch'](()=>({'error':_0x284571['statusText']})),_0x581673=new Error(_0x5580fc['error']||_0x5580fc['message']||_0x284571['statusText']);if(_0x5580fc['detail']!==undefined)_0x581673['detail']=_0x5580fc['detail'];throw _0x581673;}return await _0x284571['json']();},async 'getSkillFile'(_0xf53b25,_0x1fca5e){const _0x5ed941=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xf53b25)+'/files/'+_0x1fca5e);if(!_0x5ed941['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5ed941['statusText']);return await _0x5ed941['json']();},async 'saveSkillFile'(_0x53c0c2,_0x32a7a8,_0x37e214){const _0x529493=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x53c0c2)+'/files/'+_0x32a7a8,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x37e214})});if(!_0x529493['ok']){const _0x3c4bd8=await _0x529493['json']()['catch'](()=>({'error':_0x529493['statusText']})),_0x100ca5=new Error(_0x3c4bd8['error']||_0x3c4bd8['message']||_0x529493['statusText']);if(_0x3c4bd8['detail']!==undefined)_0x100ca5['detail']=_0x3c4bd8['detail'];throw _0x100ca5;}return await _0x529493['json']();},async 'deleteSkillFile'(_0x269481,_0x4a4d01){const _0xd94318=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x269481)+'/files/'+_0x4a4d01,{'method':'DELETE'});if(!_0xd94318['ok']){const _0x2247a3=await _0xd94318['json']()['catch'](()=>({'error':_0xd94318['statusText']})),_0x237eb5=new Error(_0x2247a3['error']||_0x2247a3['message']||_0xd94318['statusText']);if(_0x2247a3['detail']!==undefined)_0x237eb5['detail']=_0x2247a3['detail'];throw _0x237eb5;}return await _0xd94318['json']();},async 'pullSkills'(){const _0x284bda=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x284bda['ok']){const _0x59973f=await _0x284bda['json']()['catch'](()=>({'error':_0x284bda['statusText']})),_0x1255ed=new Error(_0x59973f['error']||_0x59973f['message']||_0x284bda['statusText']);if(_0x59973f['detail']!==undefined)_0x1255ed['detail']=_0x59973f['detail'];throw _0x1255ed;}return await _0x284bda['json']();},async 'commitSkills'(_0xea081,_0x344a0d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x344a0d,_0x272e76=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0xea081,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x272e76['ok']){const _0x343383=await _0x272e76['json']()['catch'](()=>({'error':_0x272e76['statusText']})),_0x1052bf=new Error(_0x343383['error']||_0x343383['message']||_0x272e76['statusText']);if(_0x343383['detail']!==undefined)_0x1052bf['detail']=_0x343383['detail'];throw _0x1052bf;}return await _0x272e76['json']();},async 'discardSkillsChanges'(){const _0x47e053=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x47e053['ok']){const _0x301f13=await _0x47e053['json']()['catch'](()=>({'error':_0x47e053['statusText']})),_0x33357d=new Error(_0x301f13['error']||_0x301f13['message']||_0x47e053['statusText']);if(_0x301f13['detail']!==undefined)_0x33357d['detail']=_0x301f13['detail'];throw _0x33357d;}return await _0x47e053['json']();},async 'getSkillCatalog'(){const _0x2134b2=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2134b2['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2134b2['statusText']);return await _0x2134b2['json']();},async 'getImportedSkillsRegistry'(){const _0x192ef5=await fetch(API_BASE+'/external-skills/registry');if(!_0x192ef5['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x192ef5['statusText']);return await _0x192ef5['json']();},async 'importCatalogSkill'(_0x5dc864){const _0x2eb75a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x5dc864})});if(!_0x2eb75a['ok']){const _0x1f14dd=await _0x2eb75a['json']()['catch'](()=>({'error':_0x2eb75a['statusText']})),_0x2479b1=new Error(_0x1f14dd['error']||_0x1f14dd['message']||_0x2eb75a['statusText']);if(_0x1f14dd['detail']!==undefined)_0x2479b1['detail']=_0x1f14dd['detail'];throw _0x2479b1;}return await _0x2eb75a['json']();},async 'importSkillFromGit'(_0x5217c1,_0x3a146c,_0x2971d7='main',_0x2c1d87=null){const _0x448454=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5217c1,'skillPath':_0x3a146c,'branch':_0x2971d7,'skillId':_0x2c1d87})});if(!_0x448454['ok']){const _0x442471=await _0x448454['json']()['catch'](()=>({'error':_0x448454['statusText']})),_0x238622=new Error(_0x442471['error']||_0x442471['message']||_0x448454['statusText']);if(_0x442471['detail']!==undefined)_0x238622['detail']=_0x442471['detail'];throw _0x238622;}return await _0x448454['json']();},async 'probeMarketplace'(_0x5f5524,_0x4c5d5e='main'){const _0xb140bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5f5524,'branch':_0x4c5d5e})});if(!_0xb140bd['ok']){const _0x16848d=await _0xb140bd['json']()['catch'](()=>({'error':_0xb140bd['statusText']})),_0x1ad425=new Error(_0x16848d['error']||_0x16848d['message']||_0xb140bd['statusText']);if(_0x16848d['detail']!==undefined)_0x1ad425['detail']=_0x16848d['detail'];throw _0x1ad425;}return await _0xb140bd['json']();},async 'importMarketplaceBundle'(_0x29a8dd,_0x1651f8,_0x2f3c9c,_0x4f6042=null){const _0xe828c7=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x29a8dd,'branch':_0x1651f8,'bundleId':_0x2f3c9c,'selectedSkills':_0x4f6042})});if(!_0xe828c7['ok']){const _0x576dd1=await _0xe828c7['json']()['catch'](()=>({'error':_0xe828c7['statusText']})),_0x116d41=new Error(_0x576dd1['error']||_0x576dd1['message']||_0xe828c7['statusText']);if(_0x576dd1['detail']!==undefined)_0x116d41['detail']=_0x576dd1['detail'];throw _0x116d41;}return await _0xe828c7['json']();},async 'importSkillFromFolder'(_0x35a84a,_0x1d12ce=null){const _0x493a3a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x35a84a,'skillId':_0x1d12ce})});if(!_0x493a3a['ok']){const _0x19f8ee=await _0x493a3a['json']()['catch'](()=>({'error':_0x493a3a['statusText']})),_0x7b4048=new Error(_0x19f8ee['error']||_0x19f8ee['message']||_0x493a3a['statusText']);if(_0x19f8ee['detail']!==undefined)_0x7b4048['detail']=_0x19f8ee['detail'];throw _0x7b4048;}return await _0x493a3a['json']();},async 'importSkillFromNpm'(_0x105657,_0x12ce67='latest',_0x402144=null,_0x2e1a6b=null){const _0x15c4be=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x105657,'version':_0x12ce67,'skillId':_0x402144,'registry':_0x2e1a6b})});if(!_0x15c4be['ok']){const _0x54974d=await _0x15c4be['json']()['catch'](()=>({'error':_0x15c4be['statusText']})),_0x291464=new Error(_0x54974d['error']||_0x54974d['message']||_0x15c4be['statusText']);if(_0x54974d['detail']!==undefined)_0x291464['detail']=_0x54974d['detail'];throw _0x291464;}return await _0x15c4be['json']();},async 'checkSkillUpdates'(_0x451e1f){const _0x2d3535=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x451e1f)+'/check-updates',{'method':'POST'});if(!_0x2d3535['ok']){const _0xd33bed=await _0x2d3535['json']()['catch'](()=>({'error':_0x2d3535['statusText']})),_0x23f348=new Error(_0xd33bed['error']||_0xd33bed['message']||_0x2d3535['statusText']);if(_0xd33bed['detail']!==undefined)_0x23f348['detail']=_0xd33bed['detail'];throw _0x23f348;}return await _0x2d3535['json']();},async 'updateExternalSkill'(_0x4b47fb){const _0xbafea0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4b47fb)+'/update',{'method':'POST'});if(!_0xbafea0['ok']){const _0x1aeabc=await _0xbafea0['json']()['catch'](()=>({'error':_0xbafea0['statusText']})),_0xe6b817=new Error(_0x1aeabc['error']||_0x1aeabc['message']||_0xbafea0['statusText']);if(_0x1aeabc['detail']!==undefined)_0xe6b817['detail']=_0x1aeabc['detail'];throw _0xe6b817;}return await _0xbafea0['json']();},async 'updateSkillFlags'(_0x4efb03,_0x135dd1){const _0x248374=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4efb03)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x135dd1})});if(!_0x248374['ok']){const _0x494149=await _0x248374['json']()['catch'](()=>({'error':_0x248374['statusText']})),_0x477a98=new Error(_0x494149['error']||_0x494149['message']||_0x248374['statusText']);if(_0x494149['detail']!==undefined)_0x477a98['detail']=_0x494149['detail'];throw _0x477a98;}return await _0x248374['json']();},async 'removeFromImportedRegistry'(_0x140b14){const _0x1e0abd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x140b14)+'/registry',{'method':'DELETE'});if(!_0x1e0abd['ok']){const _0x1a2295=await _0x1e0abd['json']()['catch'](()=>({'error':_0x1e0abd['statusText']})),_0x565da4=new Error(_0x1a2295['error']||_0x1a2295['message']||_0x1e0abd['statusText']);if(_0x1a2295['detail']!==undefined)_0x565da4['detail']=_0x1a2295['detail'];throw _0x565da4;}return await _0x1e0abd['json']();},async 'getTeams'(){const _0x26d917=await fetch(API_BASE+'/teams');if(!_0x26d917['ok']){const _0x2047f9=await _0x26d917['json']()['catch'](()=>({'message':_0x26d917['statusText']}));throw new Error(_0x2047f9['message']||'Failed\x20to\x20get\x20teams');}return await _0x26d917['json']();},async 'getTeam'(_0x4cfdd9){const _0xf5b59=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cfdd9));if(!_0xf5b59['ok']){const _0x2a5af1=await _0xf5b59['json']()['catch'](()=>({'message':_0xf5b59['statusText']}));throw new Error(_0x2a5af1['message']||'Failed\x20to\x20get\x20team');}return await _0xf5b59['json']();},async 'createTeam'(_0x21f13){const _0x1bb835=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21f13)});if(!_0x1bb835['ok']){const _0x385eed=await _0x1bb835['json']()['catch'](()=>({'message':_0x1bb835['statusText']}));throw new Error(_0x385eed['message']||'Failed\x20to\x20create\x20team');}return await _0x1bb835['json']();},async 'updateTeam'(_0x4066e2,_0x5a24b9){const _0x5b517b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4066e2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5a24b9)});if(!_0x5b517b['ok']){const _0x231e5c=await _0x5b517b['json']()['catch'](()=>({'message':_0x5b517b['statusText']}));throw new Error(_0x231e5c['message']||'Failed\x20to\x20update\x20team');}return await _0x5b517b['json']();},async 'deleteTeam'(_0x2e34f7){const _0x206201=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2e34f7),{'method':'DELETE'});if(!_0x206201['ok']){const _0x4a04fd=await _0x206201['json']()['catch'](()=>({'message':_0x206201['statusText']}));throw new Error(_0x4a04fd['message']||'Failed\x20to\x20delete\x20team');}return await _0x206201['json']();},async 'addTeamMember'(_0x3a4d86,_0x3b0376){const _0x3773e9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3a4d86)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3b0376})});if(!_0x3773e9['ok']){const _0x662a3c=await _0x3773e9['json']()['catch'](()=>({'message':_0x3773e9['statusText']}));throw new Error(_0x662a3c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x3773e9['json']();},async 'removeTeamMember'(_0x596b1b,_0x277929){const _0x39949f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x596b1b)+'/members/'+encodeURIComponent(_0x277929),{'method':'DELETE'});if(!_0x39949f['ok']){const _0x4bb1a2=await _0x39949f['json']()['catch'](()=>({'message':_0x39949f['statusText']}));throw new Error(_0x4bb1a2['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x39949f['json']();},async 'getBindings'(_0x5772ce={}){const _0x3d4af6=new URLSearchParams();if(_0x5772ce['resource_type'])_0x3d4af6['set']('resource_type',_0x5772ce['resource_type']);if(_0x5772ce['resource_id'])_0x3d4af6['set']('resource_id',_0x5772ce['resource_id']);if(_0x5772ce['subject_type'])_0x3d4af6['set']('subject_type',_0x5772ce['subject_type']);if(_0x5772ce['subject_id'])_0x3d4af6['set']('subject_id',_0x5772ce['subject_id']);const _0x5c4d97=_0x3d4af6['toString'](),_0x47f5de=await fetch(API_BASE+'/bindings'+(_0x5c4d97?'?'+_0x5c4d97:''));if(!_0x47f5de['ok']){const _0x422492=await _0x47f5de['json']()['catch'](()=>({'message':_0x47f5de['statusText']}));throw new Error(_0x422492['message']||'Failed\x20to\x20get\x20bindings');}return await _0x47f5de['json']();},async 'createBinding'(_0x6e7e96){const _0x606c3d=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6e7e96)});if(!_0x606c3d['ok']){const _0x4787a3=await _0x606c3d['json']()['catch'](()=>({'message':_0x606c3d['statusText']}));throw new Error(_0x4787a3['message']||'Failed\x20to\x20create\x20binding');}return await _0x606c3d['json']();},async 'updateBinding'(_0x41d760,_0x1e9a20){const _0x2fae38=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x41d760),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e9a20)});if(!_0x2fae38['ok']){const _0x4012b0=await _0x2fae38['json']()['catch'](()=>({'message':_0x2fae38['statusText']}));throw new Error(_0x4012b0['message']||'Failed\x20to\x20update\x20binding');}return await _0x2fae38['json']();},async 'deleteBinding'(_0x2e9bbe){const _0x1fecb5=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2e9bbe),{'method':'DELETE'});if(!_0x1fecb5['ok']){const _0x3f12e0=await _0x1fecb5['json']()['catch'](()=>({'message':_0x1fecb5['statusText']}));throw new Error(_0x3f12e0['message']||'Failed\x20to\x20delete\x20binding');}return await _0x1fecb5['json']();},async 'getRoleDefinitions'(){const _0xc5e418=await fetch(API_BASE+'/roles');if(!_0xc5e418['ok']){const _0x3ed57d=await _0xc5e418['json']()['catch'](()=>({'message':_0xc5e418['statusText']}));throw new Error(_0x3ed57d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xc5e418['json']();},async 'getRoleDefinition'(_0x2e2885){const _0x160333=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2e2885));if(!_0x160333['ok']){const _0x74b6dd=await _0x160333['json']()['catch'](()=>({'message':_0x160333['statusText']}));throw new Error(_0x74b6dd['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x160333['json']();},async 'createRoleDefinition'(_0x264216){const _0x565039=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x264216)});if(!_0x565039['ok']){const _0x27112c=await _0x565039['json']()['catch'](()=>({'message':_0x565039['statusText']}));throw new Error(_0x27112c['message']||_0x27112c['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x565039['json']();},async 'updateRoleDefinition'(_0x579866,_0x20909b){const _0x53a165=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x579866),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20909b)});if(!_0x53a165['ok']){const _0x59f7b3=await _0x53a165['json']()['catch'](()=>({'message':_0x53a165['statusText']}));throw new Error(_0x59f7b3['message']||_0x59f7b3['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x53a165['json']();},async 'deleteRoleDefinition'(_0x1743bd){const _0x4612c1=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1743bd),{'method':'DELETE'});if(!_0x4612c1['ok']){const _0x4595ea=await _0x4612c1['json']()['catch'](()=>({'message':_0x4612c1['statusText']}));throw new Error(_0x4595ea['message']||_0x4595ea['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x4612c1['json']();},async 'getAvailablePermissions'(){const _0xb0e895=await fetch(API_BASE+'/roles/available-permissions');if(!_0xb0e895['ok']){const _0x357a3e=await _0xb0e895['json']()['catch'](()=>({'message':_0xb0e895['statusText']}));throw new Error(_0x357a3e['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xb0e895['json']();},async 'getGitProviderAllowedTeams'(_0x26feac){const _0x427707=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x26feac)+'/allowed-teams');if(!_0x427707['ok']){const _0x553eb8=await _0x427707['json']()['catch'](()=>({'message':_0x427707['statusText']}));throw new Error(_0x553eb8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x427707['json']();},async 'setGitProviderAllowedTeams'(_0x53a7df,_0x128727){const _0x23eec1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x53a7df)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x128727})});if(!_0x23eec1['ok']){const _0x16f3a7=await _0x23eec1['json']()['catch'](()=>({'message':_0x23eec1['statusText']}));throw new Error(_0x16f3a7['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x23eec1['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 _0x31d284=toastState['baseBottom'];toastState['toasts']['forEach'](_0x569f1a=>{_0x569f1a['el']['style']['bottom']=_0x31d284+'px';const _0x167d89=_0x569f1a['el']['offsetHeight']||toastState['defaultHeight'];_0x31d284+=_0x167d89+toastState['gap'];});});}function removeToastById(_0x5cd6fc){const _0x3c0eaf=toastState['toasts']['findIndex'](_0x54a476=>_0x54a476['id']===_0x5cd6fc);if(_0x3c0eaf===-0x1)return;const _0x1dc22f=toastState['toasts'][_0x3c0eaf];if(_0x1dc22f['timeoutId'])clearTimeout(_0x1dc22f['timeoutId']);_0x1dc22f['el']['classList']['remove']('show'),setTimeout(()=>_0x1dc22f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3c0eaf,0x1),repositionAllToasts();}function registerToast(_0x53a68c){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x53a68c),repositionAllToasts(),_0x53a68c['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(_0x1c066e){if(_0x1c066e===null||_0x1c066e===undefined)return'';return String(_0x1c066e)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x64bae3,_0x587c7f){if(_0x64bae3&&typeof _0x64bae3==='object'&&!Array['isArray'](_0x64bae3))return{'code':typeof _0x64bae3['text']==='string'?_0x64bae3['text']:'','language':typeof _0x64bae3['lang']==='string'?_0x64bae3['lang']:''};return{'code':typeof _0x64bae3==='string'?_0x64bae3:'','language':typeof _0x587c7f==='string'?_0x587c7f:''};}function buildMermaidBlock(_0x14540d){const _0x8c3470=String(_0x14540d||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x8c3470))+'\x22>'+escapeHtmlValue(_0x8c3470)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x225f4f=new marked['Renderer'](),_0x476435=_0x225f4f['code']['bind'](_0x225f4f);return _0x225f4f['code']=function(_0x129a09,_0x1247b1,..._0x554666){const {code:_0x3351ab,language:_0x15a77b}=getMarkdownCodeBlockPayload(_0x129a09,_0x1247b1),_0x4d27c1=String(_0x15a77b||'')['trim']()['toLowerCase']();if(_0x4d27c1==='mermaid')return buildMermaidBlock(_0x3351ab);const _0x508da9=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x508da9&&_0x4d27c1)try{const _0x3f1c72=_0x508da9['getLanguage'](_0x4d27c1)?_0x4d27c1:'plaintext',_0x37f60a=_0x508da9['highlight'](_0x3351ab,{'language':_0x3f1c72})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4d27c1)+'\x22>'+_0x37f60a+'</code></pre>';}catch(_0x3e71ff){console['error']('Syntax\x20highlighting\x20error:',_0x3e71ff);}return _0x476435(_0x129a09,_0x1247b1,..._0x554666);},sharedMarkedRenderer=_0x225f4f,_0x225f4f;}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 _0x3c6ebc=window['mermaid'];if(!_0x3c6ebc||typeof _0x3c6ebc['initialize']!=='function')return _0x3c6ebc||null;return _0x3c6ebc['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x3c6ebc;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x5241a5,_0xfd67c6)=>{const _0x100185=()=>_0x5241a5(configureMermaidInstance()),_0x1a5d4f=()=>{mermaidLoadPromise=null,_0xfd67c6(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x7db1ab=document['getElementById'](MERMAID_SCRIPT_ID);!_0x7db1ab&&(_0x7db1ab=document['createElement']('script'),_0x7db1ab['id']=MERMAID_SCRIPT_ID,_0x7db1ab['src']=MERMAID_SCRIPT_SRC,_0x7db1ab['async']=!![],document['head']['appendChild'](_0x7db1ab));if(window['mermaid']){_0x100185();return;}_0x7db1ab['addEventListener']('load',_0x100185,{'once':!![]}),_0x7db1ab['addEventListener']('error',_0x1a5d4f,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x588bb0){const _0x1a516a=_0x588bb0['getAttribute']('data-mermaid-source');if(!_0x1a516a)return null;let _0x3ffb4a=_0x1a516a;try{_0x3ffb4a=decodeURIComponent(_0x1a516a);}catch{}return _0x588bb0['textContent']=_0x3ffb4a,_0x588bb0['removeAttribute']('data-processed'),_0x588bb0['removeAttribute']('aria-roledescription'),_0x588bb0['removeAttribute']('role'),_0x588bb0['removeAttribute']('aria-label'),_0x3ffb4a;}function collectMermaidNodes(_0xbdfd95,_0xc3f09){if(!(_0xbdfd95 instanceof Element))return;_0xbdfd95['matches']('.mermaid[data-mermaid-source]')&&_0xc3f09['add'](_0xbdfd95),_0xbdfd95['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f07fd=>{_0xc3f09['add'](_0x5f07fd);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3693bf=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x50adc6=>setTimeout(_0x50adc6,0x0);_0x3693bf(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x49642d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x49642d);});});}function queueMermaidRender(_0x5eb7ea){const _0x4d480e=new Set();_0x5eb7ea instanceof Document||_0x5eb7ea instanceof DocumentFragment?_0x5eb7ea['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27613a=>_0x4d480e['add'](_0x27613a)):collectMermaidNodes(_0x5eb7ea,_0x4d480e);if(_0x4d480e['size']===0x0)return;_0x4d480e['forEach'](_0x44dc1d=>pendingMermaidNodes['add'](_0x44dc1d)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x34cc07=Array['from'](pendingMermaidNodes)['filter'](_0x225ced=>_0x225ced['isConnected']);pendingMermaidNodes['clear']();if(_0x34cc07['length']===0x0)return;const _0x7ea092=await loadMermaid();if(!_0x7ea092)return;configureMermaidInstance();const _0x531be0=getMermaidTheme();for(const _0x3a154a of _0x34cc07){const _0x4535ad=_0x3a154a['getAttribute']('data-mermaid-source');if(!_0x4535ad)continue;const _0x5d17d1=_0x3a154a['getAttribute']('data-processed')==='true';if(_0x5d17d1&&_0x3a154a['dataset']['mermaidTheme']===_0x531be0)continue;restoreMermaidSource(_0x3a154a);try{if(typeof _0x7ea092['run']==='function')await _0x7ea092['run']({'nodes':[_0x3a154a]});else typeof _0x7ea092['init']==='function'&&_0x7ea092['init'](undefined,[_0x3a154a]);_0x3a154a['dataset']['mermaidTheme']=_0x531be0,delete _0x3a154a['dataset']['mermaidError'];}catch(_0x2feb34){console['error']('Mermaid\x20render\x20failed:',_0x2feb34),restoreMermaidSource(_0x3a154a),_0x3a154a['dataset']['mermaidError']='true',delete _0x3a154a['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3278ff=>{_0x3278ff['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3278ff);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2e227d=>{_0x2e227d['forEach'](_0x32c572=>{_0x32c572['addedNodes']['forEach'](_0x54fd93=>{_0x54fd93['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x54fd93);});});}),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'(_0x302283){const _0x393c5e=new Date(_0x302283),_0x1b0cf1=new Date(),_0x5d7a57=_0x1b0cf1-_0x393c5e,_0x1c6e16=Math['floor'](_0x5d7a57/0x3e8),_0x5a6d83=Math['floor'](_0x1c6e16/0x3c),_0x4ea138=Math['floor'](_0x5a6d83/0x3c),_0x146f9b=Math['floor'](_0x4ea138/0x18);if(_0x1c6e16<0x3c)return'now';if(_0x5a6d83<0x3c)return _0x5a6d83+'m\x20ago';if(_0x4ea138<0x18)return _0x4ea138+'h\x20ago';return _0x146f9b+'d\x20ago';},'getStatusIcon'(_0x3a8dec){switch(_0x3a8dec){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x408e06){switch(_0x408e06){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'(_0x33e6c7,_0x4dfcb9=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x21c2c6={};_0x21c2c6['text/plain']=new Blob([_0x33e6c7],{'type':'text/plain'});_0x4dfcb9&&(_0x21c2c6['text/html']=new Blob([_0x4dfcb9],{'type':'text/html'}));const _0x114145=new ClipboardItem(_0x21c2c6);return await navigator['clipboard']['write']([_0x114145]),!![];}catch(_0x1dce73){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1dce73);}try{const _0x5e3990=_0x392101=>{_0x392101['preventDefault'](),_0x392101['clipboardData']['setData']('text/plain',_0x33e6c7),_0x4dfcb9&&_0x392101['clipboardData']['setData']('text/html',_0x4dfcb9);};document['addEventListener']('copy',_0x5e3990);const _0x11a761=document['execCommand']('copy');document['removeEventListener']('copy',_0x5e3990);if(_0x11a761)return!![];}catch(_0xbd53b6){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xbd53b6);}try{const _0x5022c7=document['createElement']('textarea');_0x5022c7['value']=_0x33e6c7,_0x5022c7['style']['position']='fixed',_0x5022c7['style']['opacity']='0',_0x5022c7['style']['pointerEvents']='none',document['body']['appendChild'](_0x5022c7),_0x5022c7['select']();const _0x3d1636=document['execCommand']('copy');return document['body']['removeChild'](_0x5022c7),_0x3d1636;}catch(_0x373351){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x373351),![];}},'showToast'(_0x523a47,_0x533531='info'){const _0x1d44c8=getNextToastId(),_0x27c04f=document['createElement']('div');_0x27c04f['className']='toast\x20toast-'+_0x533531,_0x27c04f['textContent']=_0x523a47,_0x27c04f['dataset']['toastId']=_0x1d44c8,document['body']['appendChild'](_0x27c04f);const _0x12ac43=_0x533531==='error'?0x2710:0xbb8,_0x1850d1=setTimeout(()=>{removeToastById(_0x1d44c8);},_0x12ac43),_0x5a2e9f={'id':_0x1d44c8,'el':_0x27c04f,'timeoutId':_0x1850d1};return registerToast(_0x5a2e9f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x27c04f['classList']['add']('show');});}),_0x1d44c8;},'showError'(_0x11ff59){console['error'](_0x11ff59);const _0x54ef53=typeof _0x11ff59==='string'?_0x11ff59:_0x11ff59['message']||'An\x20error\x20occurred';this['showToast'](_0x54ef53,'error');},'showSuccess'(_0x294326){this['showToast'](_0x294326,'success');},'capitalize'(_0x4d3265){if(!_0x4d3265)return'';return _0x4d3265['charAt'](0x0)['toUpperCase']()+_0x4d3265['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x168289){return escapeHtmlValue(_0x168289);},'ansiToHtml'(_0x2e1baf){if(_0x2e1baf===null||_0x2e1baf===undefined)return'';let _0x1f65d2=this['escapeHtml'](_0x2e1baf);const _0x2b9137={'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'},_0x45af36={'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 _0x11f463=0x0;return _0x1f65d2=_0x1f65d2['replace'](/\x1b\[([0-9;]*)m/g,(_0x3a3b3e,_0x351aa0)=>{if(!_0x351aa0||_0x351aa0==='0'){const _0x588b40='</span>'['repeat'](_0x11f463);return _0x11f463=0x0,_0x588b40;}const _0x1abd65=_0x351aa0['split'](';'),_0x546f28=[];for(const _0xaad550 of _0x1abd65){if(_0xaad550==='1')_0x546f28['push']('font-weight:bold');else{if(_0xaad550==='2')_0x546f28['push']('opacity:0.7');else{if(_0xaad550==='3')_0x546f28['push']('font-style:italic');else{if(_0xaad550==='4')_0x546f28['push']('text-decoration:underline');else{if(_0xaad550==='9')_0x546f28['push']('text-decoration:line-through');else{if(_0x2b9137[_0xaad550])_0x546f28['push']('color:'+_0x2b9137[_0xaad550]);else{if(_0x45af36[_0xaad550])_0x546f28['push']('background-color:'+_0x45af36[_0xaad550]);}}}}}}}if(_0x546f28['length']>0x0)return _0x11f463++,'<span\x20style=\x22'+_0x546f28['join'](';')+'\x22>';return'';}),_0x1f65d2+='</span>'['repeat'](_0x11f463),_0x1f65d2=_0x1f65d2['replace'](/\\u001b\[([0-9;]*)m/g,(_0x569579,_0x16bb4d)=>{if(!_0x16bb4d||_0x16bb4d==='0')return'';const _0x4ee087=_0x16bb4d['split'](';'),_0x1c4a69=[];for(const _0x6e9c77 of _0x4ee087){if(_0x6e9c77==='1')_0x1c4a69['push']('font-weight:bold');else{if(_0x2b9137[_0x6e9c77])_0x1c4a69['push']('color:'+_0x2b9137[_0x6e9c77]);else{if(_0x45af36[_0x6e9c77])_0x1c4a69['push']('background-color:'+_0x45af36[_0x6e9c77]);}}}if(_0x1c4a69['length']>0x0)return'<span\x20style=\x22'+_0x1c4a69['join'](';')+'\x22>';return'';}),_0x1f65d2;},'showModal'({title:_0x40a829,content:_0x25ae0c,buttons:buttons=[]}){const _0x55420a='\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'](_0x40a829)+'</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'+_0x25ae0c+'\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']((_0x129bf2,_0x589292)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x129bf2['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x589292+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x129bf2['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',_0xa1ec72=document['createElement']('div');_0xa1ec72['id']='utils-modal',_0xa1ec72['className']='modal',_0xa1ec72['innerHTML']=_0x55420a,document['body']['appendChild'](_0xa1ec72);const _0x45b5ef=document['getElementById']('utils-modal-close');_0x45b5ef&&_0x45b5ef['addEventListener']('click',()=>this['hideModal']());const _0x427570=_0xa1ec72['querySelectorAll']('[data-btn-index]');_0x427570['forEach'](_0x3c9b8d=>{const _0x1d52d9=parseInt(_0x3c9b8d['dataset']['btnIndex']);buttons[_0x1d52d9]?.['onClick']&&_0x3c9b8d['addEventListener']('click',buttons[_0x1d52d9]['onClick']);});const _0xf6466f=document['getElementById']('utils-modal-overlay');_0xf6466f&&_0xf6466f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x602cd8=document['getElementById']('utils-modal');_0x602cd8&&_0x602cd8['remove']();},'parseKeyValuePairs'(_0x3ca8c6){const _0xfc7b9d={};if(!_0x3ca8c6)return _0xfc7b9d;return _0x3ca8c6['split'](/\r?\n/)['map'](_0x2f3ea6=>_0x2f3ea6['trim']())['filter'](Boolean)['forEach'](_0x10f489=>{const _0x4d92d3=_0x10f489['indexOf']('=');if(_0x4d92d3>0x0){const _0x3565a0=_0x10f489['slice'](0x0,_0x4d92d3)['trim'](),_0x6556c7=_0x10f489['slice'](_0x4d92d3+0x1)['trim']();if(_0x3565a0)_0xfc7b9d[_0x3565a0]=_0x6556c7;}}),_0xfc7b9d;},'debounce'(_0xaac3cc,_0x1298a1=0xfa){let _0x4ade1d=null;return(..._0x5ce7a1)=>{clearTimeout(_0x4ade1d),_0x4ade1d=setTimeout(()=>_0xaac3cc['apply'](this,_0x5ce7a1),_0x1298a1);};},'formatTimestamp'(_0x15979f){if(!_0x15979f)return'N/A';const _0x4e62f2=new Date(_0x15979f);return _0x4e62f2['toLocaleDateString']()+'\x20'+_0x4e62f2['toLocaleTimeString']();},'getQueryParams'(){const _0x2dcd0c=new URLSearchParams(window['location']['search']),_0x525c37={};for(const [_0x99a533,_0x2655e3]of _0x2dcd0c){_0x525c37[_0x99a533]=_0x2655e3;}return _0x525c37;},'formatDuration'(_0x4a4f56,_0x46900c){if(!_0x4a4f56)return'N/A';const _0x28d4bd=new Date(_0x4a4f56),_0x96d078=_0x46900c?new Date(_0x46900c):new Date(),_0x461f70=_0x96d078-_0x28d4bd;if(_0x461f70<0x0)return'0s';const _0x1b1f73=Math['floor'](_0x461f70/0x3e8),_0x341f20=Math['floor'](_0x1b1f73/0x3c),_0xebf4d3=Math['floor'](_0x341f20/0x3c),_0x2f17c8=Math['floor'](_0xebf4d3/0x18);if(_0x1b1f73<0x3c)return _0x1b1f73+'s';if(_0x341f20<0x3c)return _0x341f20+'m\x20'+_0x1b1f73%0x3c+'s';if(_0xebf4d3<0x18)return _0xebf4d3+'h\x20'+_0x341f20%0x3c+'m\x20'+_0x1b1f73%0x3c+'s';return _0x2f17c8+'d\x20'+_0xebf4d3%0x18+'h\x20'+_0x341f20%0x3c+'m';},'renderMarkdown'(_0x4e8942,_0x180861={}){if(!_0x4e8942)return'';_0x4e8942=this['rewriteAttachmentLinks'](_0x4e8942,_0x180861),_0x4e8942=this['rewriteColorSyntax'](_0x4e8942);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x4e8942,_0x180861);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x4e8942);}catch(_0x3e148c){return console['error']('Markdown\x20parsing\x20error:',_0x3e148c),this['renderMarkdownFallback'](_0x4e8942,_0x180861);}},'rewriteAttachmentLinks'(_0x47a58b,_0x17dc08={}){const _0x545db6=typeof _0x17dc08['resolveAttachmentUrl']==='function'?_0x17dc08['resolveAttachmentUrl']:_0x17dc08['taskId']?_0x15b45e=>API_BASE+'/tasks/'+_0x17dc08['taskId']+'/attachments/'+encodeURIComponent(_0x15b45e):null;if(!_0x545db6)return _0x47a58b;return String(_0x47a58b)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3bdc69,_0x17d07a)=>{const _0x21a29a=String(_0x17d07a||'')['trim']();if(!_0x21a29a)return _0x3bdc69;let _0x14784e=_0x21a29a;try{_0x14784e=decodeURIComponent(_0x21a29a);}catch{}const _0x5e693b=_0x545db6(_0x14784e);if(!_0x5e693b)return _0x3bdc69;return']('+_0x5e693b+')';});},'rewriteColorSyntax'(_0x514932){if(!_0x514932)return _0x514932;return String(_0x514932)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x406cc6,_0xd4ee65,_0x437d0e)=>{const _0x3047d4=this['rewriteColorSyntax'](_0x437d0e);return'<span\x20style=\x22color:\x20'+_0xd4ee65+'\x22>'+_0x3047d4+'</span>';});},'renderMarkdownFallback'(_0x28d9e2,_0x260c8f={}){if(!_0x28d9e2)return'';_0x28d9e2=_0x28d9e2['replace'](/\r\n/g,'\x0a'),_0x28d9e2=_0x28d9e2['replace'](/\r/g,'\x0a'),_0x28d9e2=this['rewriteAttachmentLinks'](_0x28d9e2,_0x260c8f);let _0x536ab1=this['escapeHtml'](_0x28d9e2);return _0x536ab1=_0x536ab1['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x536ab1=_0x536ab1['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x536ab1=_0x536ab1['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x536ab1=_0x536ab1['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x536ab1=_0x536ab1['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x536ab1=_0x536ab1['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x536ab1=_0x536ab1['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x536ab1=_0x536ab1['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x536ab1=_0x536ab1['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x536ab1=_0x536ab1['replace'](/\n\n/g,'</p><p>'),_0x536ab1=_0x536ab1['replace'](/\n/g,'<br>'),'<p>'+_0x536ab1+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x456807=new Uint8Array(0x10);crypto['getRandomValues'](_0x456807),_0x456807[0x6]=_0x456807[0x6]&0xf|0x40,_0x456807[0x8]=_0x456807[0x8]&0x3f|0x80;const _0x5581e0=Array['from'](_0x456807,_0x37c459=>_0x37c459['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5581e0['slice'](0x0,0x8)+'-'+_0x5581e0['slice'](0x8,0xc)+'-'+_0x5581e0['slice'](0xc,0x10)+'-'+_0x5581e0['slice'](0x10,0x14)+'-'+_0x5581e0['slice'](0x14);}};export class CustomSelect{constructor(_0x2f06cb,_0x3afb34={}){this['nativeSelect']=_0x2f06cb,this['options']=_0x3afb34,this['isOpen']=![],this['selectedValue']=_0x2f06cb['value']||'',this['searchable']=_0x3afb34['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5ee939=document['createElement']('div');_0x5ee939['className']='custom-select';const _0xda7444=document['createElement']('div');_0xda7444['className']='custom-select-trigger',_0xda7444['setAttribute']('tabindex','0'),_0xda7444['setAttribute']('role','button'),_0xda7444['setAttribute']('aria-haspopup','listbox');const _0x7b9d7f=document['createElement']('span');_0x7b9d7f['className']='custom-select-trigger-text';const _0x396d5f=document['createElement']('span');_0x396d5f['className']='custom-select-arrow',_0x396d5f['textContent']='▼',_0xda7444['appendChild'](_0x7b9d7f),_0xda7444['appendChild'](_0x396d5f);const _0x2d7cb0=document['createElement']('div');_0x2d7cb0['className']='custom-select-dropdown',_0x2d7cb0['setAttribute']('role','listbox');if(this['searchable']){const _0x2d44ee=document['createElement']('div');_0x2d44ee['className']='custom-select-search';const _0xac3e0b=document['createElement']('input');_0xac3e0b['type']='text',_0xac3e0b['className']='custom-select-search-input',_0xac3e0b['placeholder']='Type\x20to\x20search...',_0xac3e0b['setAttribute']('aria-label','Search\x20options'),_0xac3e0b['addEventListener']('input',_0x3fe270=>{this['searchQuery']=_0x3fe270['target']['value']['toLowerCase'](),this['filterOptions']();}),_0xac3e0b['addEventListener']('keydown',_0xf64154=>{if(_0xf64154['key']==='Escape')_0xf64154['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0xf64154['key']==='Enter'){_0xf64154['preventDefault'](),_0xf64154['stopPropagation']();const _0x1e6350=_0x2d7cb0['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1e6350){const _0x379154=_0x1e6350['getAttribute']('data-value');this['select'](_0x379154);}}}}),_0x2d44ee['appendChild'](_0xac3e0b),_0x2d7cb0['appendChild'](_0x2d44ee),this['searchInput']=_0xac3e0b;}const _0x346634=document['createElement']('div');_0x346634['className']='custom-select-options',_0x2d7cb0['appendChild'](_0x346634),_0x5ee939['appendChild'](_0xda7444),_0x5ee939['appendChild'](_0x2d7cb0),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5ee939,this['nativeSelect']),this['wrapper']=_0x5ee939,this['trigger']=_0xda7444,this['triggerText']=_0x7b9d7f,this['dropdown']=_0x2d7cb0,this['optionsContainer']=_0x346634,_0xda7444['addEventListener']('click',()=>this['toggle']()),_0xda7444['addEventListener']('keydown',_0x295b51=>this['handleKeydown'](_0x295b51)),document['addEventListener']('click',_0x5bcb71=>{!_0x5ee939['contains'](_0x5bcb71['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x31810f=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x31810f['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x397bb0=new MutationObserver(()=>{this['updateDisabledState']();});_0x397bb0['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x58195c=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x58195c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3217ab=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3217ab),this['trigger']['setAttribute']('aria-disabled',_0x3217ab?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3217ab?'-1':'0'),_0x3217ab&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x25bf92=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x23d308=_0x25bf92['filter'](_0xfb4b3f=>!_0xfb4b3f['disabled']&&!_0xfb4b3f['hidden']);_0x25bf92['forEach']((_0x209b7b,_0x32aeb5)=>{const _0x4d7681=document['createElement']('div');_0x4d7681['className']='custom-select-option',_0x4d7681['textContent']=_0x209b7b['textContent'],_0x4d7681['setAttribute']('data-value',_0x209b7b['value']),_0x4d7681['setAttribute']('data-index',_0x32aeb5),_0x4d7681['setAttribute']('role','option'),_0x209b7b['disabled']?_0x4d7681['classList']['add']('disabled'):_0x4d7681['addEventListener']('click',()=>this['select'](_0x209b7b['value'])),_0x209b7b['value']===this['selectedValue']&&_0x4d7681['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4d7681),this['allOptions']['push']({'element':_0x4d7681,'text':_0x209b7b['textContent']['toLowerCase'](),'value':_0x209b7b['value'],'disabled':_0x209b7b['disabled']});});if(this['searchable']&&this['searchInput']){const _0x32ca7f=this['searchInput']['parentElement'];_0x23d308['length']>0x3?_0x32ca7f['style']['display']='':_0x32ca7f['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xd680a6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x10d15a=>{if(!_0xd680a6||_0x10d15a['disabled'])_0x10d15a['element']['style']['display']='';else{const _0x435071=_0x10d15a['text']['includes'](_0xd680a6);_0x10d15a['element']['style']['display']=_0x435071?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x59f0a7){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x59f0a7,this['nativeSelect']['value']=_0x59f0a7;const _0x5de539=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x5de539),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1d9ecd=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1d9ecd&&(this['triggerText']['textContent']=_0x1d9ecd['textContent'],_0x1d9ecd['disabled']||_0x1d9ecd['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x284b73=>{_0x284b73['getAttribute']('data-value')===this['selectedValue']?_0x284b73['classList']['add']('selected'):_0x284b73['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 _0x13e452=window['getComputedStyle'](this['dropdown']);if(_0x13e452['position']==='fixed'){const _0x4b6a5c=this['trigger']['getBoundingClientRect'](),_0x272328=parseInt(_0x13e452['maxHeight'])||0xc8,_0x274a68=window['innerHeight'],_0xf60f0c=_0x274a68-_0x4b6a5c['bottom'],_0x4b7cdf=_0x4b6a5c['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x21d58d;_0xf60f0c<_0x272328&&_0x4b7cdf>_0xf60f0c?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x274a68-_0x4b6a5c['top']+'px',_0x21d58d=Math['min'](_0x272328,_0x4b7cdf-0xa),this['dropdown']['style']['maxHeight']=_0x21d58d+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4b6a5c['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x21d58d=Math['min'](_0x272328,_0xf60f0c-0xa),this['dropdown']['style']['maxHeight']=_0x21d58d+'px');if(this['optionsContainer']){let _0x1a1b82=_0x21d58d;if(this['searchInput']){const _0x5d0b74=this['searchInput']['parentElement'];_0x5d0b74&&(_0x1a1b82-=_0x5d0b74['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1a1b82)+'px';}this['dropdown']['style']['left']=_0x4b6a5c['left']+'px',this['dropdown']['style']['width']=_0x4b6a5c['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x3de21d=this['searchInput']['parentElement'];_0x3de21d&&_0x3de21d['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'](_0xa0b8eb){if(this['nativeSelect']['disabled'])return;if(_0xa0b8eb['key']==='Enter'||_0xa0b8eb['key']==='\x20')_0xa0b8eb['preventDefault'](),this['toggle']();else _0xa0b8eb['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x169778='\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',_0x169778),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4bbce2=document['getElementById']('confirm-dialog-close'),_0x493180=document['getElementById']('confirm-dialog-cancel'),_0x50a0f9=document['getElementById']('confirm-dialog-confirm'),_0x1f2517=this['_modal']['querySelector']('.modal-overlay');_0x4bbce2['addEventListener']('click',()=>this['_resolve'](![])),_0x493180['addEventListener']('click',()=>this['_resolve'](![])),_0x50a0f9['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f2517['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x104e9c=>{if(_0x104e9c['key']==='Escape')_0x104e9c['preventDefault'](),this['_resolve'](![]);else _0x104e9c['key']==='Enter'&&(_0x104e9c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4a70f8,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x185c43=>{this['_resolvePromise']=_0x185c43,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4a70f8;const _0x3d99be=document['getElementById']('confirm-dialog-cancel'),_0x8f4ab9=document['getElementById']('confirm-dialog-confirm');_0x3d99be['textContent']=cancelText,_0x8f4ab9['textContent']=confirmText,_0x8f4ab9['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x8f4ab9['focus']();});},'_resolve'(_0x18ba77){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x18ba77),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1313b1,_0x443699={}){this['container']=_0x1313b1,this['options']={'placeholder':_0x443699['placeholder']||'Type\x20to\x20search...','maxItems':_0x443699['maxItems']||0x64,'loadItems':_0x443699['loadItems']||(async()=>[]),'renderItem':_0x443699['renderItem']||(_0x3fe1a9=>({'primary':String(_0x3fe1a9),'secondary':''})),'onSelect':_0x443699['onSelect']||(()=>{}),'filterItems':_0x443699['filterItems']||null,'getItemValue':_0x443699['getItemValue']||(_0x562983=>_0x562983),'sortItems':_0x443699['sortItems']||null,'debounceMs':_0x443699['debounceMs']||0xc8,'minCharsForSearch':_0x443699['minCharsForSearch']||0x0,'emptyMessage':_0x443699['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x443699['loadingMessage']||'Loading...','preload':_0x443699['preload']!==![],'searchMode':_0x443699['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',_0x215421=>this['onBlur'](_0x215421)),this['input']['addEventListener']('input',_0x3548ea=>this['onInput'](_0x3548ea)),this['input']['addEventListener']('keydown',_0xefbf10=>this['onKeydown'](_0xefbf10)),this['clearBtn']['addEventListener']('mousedown',_0x1321ff=>{_0x1321ff['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4e34fa=>{_0x4e34fa['preventDefault']();}),document['addEventListener']('click',_0x1b8ee8=>{!this['wrapper']['contains'](_0x1b8ee8['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(_0x409203){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x409203);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2b3ab2){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x544beb){const _0x28c53b=_0x544beb['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x28c53b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x28c53b):this['loadAndShow'](_0x28c53b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0xb401c9){switch(_0xb401c9['key']){case'ArrowDown':_0xb401c9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0xb401c9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0xb401c9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0xb401c9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x18c7d3){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2226af=this['selectedIndex']+_0x18c7d3;if(_0x2226af>=0x0&&_0x2226af<this['filteredItems']['length']){this['selectedIndex']=_0x2226af,this['updateSelectionHighlight']();const _0x2450fd=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2450fd[this['selectedIndex']]&&_0x2450fd[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x44c3ff=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x44c3ff['forEach']((_0x3b530b,_0x533ec8)=>{_0x3b530b['classList']['toggle']('keyboard-selected',_0x533ec8===this['selectedIndex']);});}async['loadAndShow'](_0x343e97){this['showLoading']();try{const _0x4a69eb=await this['options']['loadItems'](_0x343e97);if(this['options']['searchMode']==='server'){let _0x3a6389=_0x4a69eb;this['options']['sortItems']&&(_0x3a6389=this['options']['sortItems']([..._0x4a69eb]));this['filteredItems']=_0x3a6389;const _0x5b6846=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b6846&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b6846),this['open']();}else this['allItems']=_0x4a69eb,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x343e97);}catch(_0x38d1ff){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x38d1ff),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x55a744){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x55a744):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2ca873=this['filteredItems']['length']>=this['options']['maxItems'];_0x2ca873&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2ca873),this['open']();}['renderItems'](_0x37e452){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']((_0x7977e7,_0x2a77c3)=>{const _0x85cce0=document['createElement']('div');_0x85cce0['className']='autocomplete-select-item',_0x85cce0['setAttribute']('role','option'),_0x85cce0['setAttribute']('data-index',_0x2a77c3);const _0x14f56c=this['options']['renderItem'](_0x7977e7);let _0xbb2ac1='';_0x14f56c['icon']&&(_0xbb2ac1='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x14f56c['iconClass']||'')+'\x22>'+_0x14f56c['icon']+'</span>'),_0x85cce0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xbb2ac1+'\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'](_0x14f56c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x14f56c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x14f56c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x85cce0['addEventListener']('click',()=>{this['selectItem'](_0x7977e7);}),_0x85cce0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x2a77c3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x85cce0);}),_0x37e452?(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'](_0x982c7f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x982c7f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2e6985){this['selectedItem']=_0x2e6985;const _0x2816f6=this['options']['renderItem'](_0x2e6985);this['input']['value']=_0x2816f6['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2e6985);}['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'](_0x3ced21){if(_0x3ced21){this['selectedItem']=_0x3ced21;const _0x27e227=this['options']['renderItem'](_0x3ced21);this['input']['value']=_0x27e227['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4bafe7){this['allItems']=_0x4bafe7,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'](_0x132dc3){this['input']['placeholder']=_0x132dc3;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1d6b08=null){const _0x53a60b=document['getElementById']('admin-menu-container'),_0x1482b6=document['getElementById']('admin-menu-btn'),_0x209e14=document['getElementById']('admin-menu');if(!_0x53a60b||!_0x1482b6||!_0x209e14)return;try{!_0x1d6b08&&(_0x1d6b08=await API['getCurrentUser']());if(_0x1d6b08){const _0x5e3baa=window['Permissions'],_0x395aca=_0x5e3baa['hasServerPermission'](_0x1d6b08,'*')||_0x5e3baa['hasEnvPermission'](_0x1d6b08,'environments:manage')||_0x5e3baa['hasServerPermission'](_0x1d6b08,'users:create')||_0x5e3baa['hasTeamPermission'](_0x1d6b08,'teams:manage')||_0x5e3baa['hasEnvPermission'](_0x1d6b08,'environments:view_details');if(!_0x395aca)return;_0x53a60b['hidden']=![];if(!_0x5e3baa['hasServerPermission'](_0x1d6b08,'*')){const _0x36a349=_0x209e14['querySelectorAll']('.admin-menu-item');_0x36a349['forEach'](_0x18f6f6=>{const _0x28054f=_0x18f6f6['querySelector']('.option-text')?.['textContent']?.['trim']();_0x28054f==='Users'&&!_0x5e3baa['hasServerPermission'](_0x1d6b08,'users:create')&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Skills'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Server\x20Settings'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Server\x20Health'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Git\x20History'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Roles'&&(_0x18f6f6['hidden']=!![]);});}_0x1482b6['addEventListener']('click',_0x27ebf6=>{_0x27ebf6['stopPropagation']();const _0x1f10b1=document['getElementById']('actions-menu');if(_0x1f10b1)_0x1f10b1['hidden']=!![];_0x209e14['hidden']=!_0x209e14['hidden'];}),document['addEventListener']('click',_0x52caf7=>{!_0x209e14['hidden']&&!_0x1482b6['contains'](_0x52caf7['target'])&&!_0x209e14['contains'](_0x52caf7['target'])&&(_0x209e14['hidden']=!![]);}),document['addEventListener']('keydown',_0x5c0718=>{_0x5c0718['key']==='Escape'&&!_0x209e14['hidden']&&(_0x209e14['hidden']=!![]);});const _0xcd6129=document['getElementById']('server-health-btn');_0xcd6129&&_0xcd6129['addEventListener']('click',async()=>{_0x209e14['hidden']=!![];const {openServerHealthModal:_0x3418b7}=await import('./server-health.js');_0x3418b7();});}}catch(_0x18bb55){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x18bb55['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};