@profoundlogic/coderflow-server 0.6.3 → 0.6.5

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 _0x9ee399=window['location']['pathname'],_0x40110a=_0x9ee399['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x40110a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x40110a[0x1]),_0x40110a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x51c990={}){const _0x37a15f=new URLSearchParams();_0x51c990['userId']&&_0x37a15f['set']('userId',String(_0x51c990['userId']));_0x51c990['automation']&&_0x37a15f['set']('automation',String(_0x51c990['automation']));const _0x1f85f2=API_BASE+'/tasks/stats'+(_0x37a15f['toString']()?'?'+_0x37a15f['toString']():''),_0x44cd72=await fetch(_0x1f85f2);if(!_0x44cd72['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44cd72['statusText']);return await _0x44cd72['json']();},async 'getTasks'(_0x3a6bd4={}){const _0x563553=new URLSearchParams();_0x3a6bd4['status']&&_0x563553['set']('status',String(_0x3a6bd4['status']));_0x3a6bd4['environment']&&_0x563553['set']('environment',String(_0x3a6bd4['environment']));_0x3a6bd4['automation']&&_0x563553['set']('automation',String(_0x3a6bd4['automation']));if(_0x3a6bd4['include']){const _0x298a87=Array['isArray'](_0x3a6bd4['include'])?_0x3a6bd4['include']['join'](','):String(_0x3a6bd4['include']);_0x298a87&&_0x563553['set']('include',_0x298a87);}_0x3a6bd4['filter']&&_0x563553['set']('filter',String(_0x3a6bd4['filter']));_0x3a6bd4['page']&&_0x563553['set']('page',String(_0x3a6bd4['page']));_0x3a6bd4['limit']&&_0x563553['set']('limit',String(_0x3a6bd4['limit']));_0x3a6bd4['userId']&&_0x563553['set']('userId',String(_0x3a6bd4['userId']));_0x3a6bd4['search']&&_0x563553['set']('search',String(_0x3a6bd4['search']));_0x3a6bd4['includeChildTasks']&&_0x563553['set']('includeChildTasks','true');const _0x33f762=API_BASE+'/tasks'+(_0x563553['toString']()?'?'+_0x563553['toString']():''),_0xd943c=await fetch(_0x33f762);if(!_0xd943c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xd943c['statusText']);return await _0xd943c['json']();},async 'getAutomations'(_0x5c93a2={}){const _0x2c0562=new URLSearchParams();_0x5c93a2['environment']&&_0x2c0562['set']('environment',String(_0x5c93a2['environment']));const _0x499814=await fetch(API_BASE+'/api/automations'+(_0x2c0562['toString']()?'?'+_0x2c0562['toString']():''));if(!_0x499814['ok']){const _0x2dd68f=await _0x499814['json']()['catch'](()=>({}));throw new Error(_0x2dd68f['message']||_0x2dd68f['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x499814['statusText']);}return await _0x499814['json']();},async 'getAutomation'(_0x500ca9){const _0x479db9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x500ca9));if(!_0x479db9['ok']){const _0x4dd4fc=await _0x479db9['json']()['catch'](()=>({}));throw new Error(_0x4dd4fc['message']||_0x4dd4fc['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x479db9['statusText']);}return await _0x479db9['json']();},async 'createAutomation'(_0x7ed4b3){const _0x58c06f=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x7ed4b3||{})});if(!_0x58c06f['ok']){const _0x2ef0d2=await _0x58c06f['json']()['catch'](()=>({}));throw new Error(_0x2ef0d2['message']||_0x2ef0d2['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x58c06f['statusText']);}return await _0x58c06f['json']();},async 'updateAutomation'(_0x2c872d,_0x1f8d63){const _0x3d2843=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2c872d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f8d63||{})});if(!_0x3d2843['ok']){const _0x4b3497=await _0x3d2843['json']()['catch'](()=>({}));throw new Error(_0x4b3497['message']||_0x4b3497['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x3d2843['statusText']);}return await _0x3d2843['json']();},async 'deleteAutomation'(_0xb8717a){const _0x29c14d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xb8717a),{'method':'DELETE'});if(!_0x29c14d['ok']){const _0xb189ab=await _0x29c14d['json']()['catch'](()=>({}));throw new Error(_0xb189ab['message']||_0xb189ab['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x29c14d['statusText']);}return await _0x29c14d['json']();},async 'triggerAutomation'(_0x35c4c1){const _0x3f7a19=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x35c4c1)+'/trigger',{'method':'POST'});if(!_0x3f7a19['ok']){const _0xee2d8a=await _0x3f7a19['json']()['catch'](()=>({}));throw new Error(_0xee2d8a['message']||_0xee2d8a['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3f7a19['statusText']);}return await _0x3f7a19['json']();},async 'setAutomationEnabled'(_0x264489,_0x5555b6){const _0x505b81=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x264489)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5555b6})});if(!_0x505b81['ok']){const _0x4e879c=await _0x505b81['json']()['catch'](()=>({}));throw new Error(_0x4e879c['message']||_0x4e879c['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x505b81['statusText']);}return await _0x505b81['json']();},async 'getAutomationHistory'(_0x15a3a4,_0x57089f=0x32){const _0x46e0e3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x15a3a4)+'/history?limit='+encodeURIComponent(String(_0x57089f)));if(!_0x46e0e3['ok']){const _0x4fe0b6=await _0x46e0e3['json']()['catch'](()=>({}));throw new Error(_0x4fe0b6['message']||_0x4fe0b6['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x46e0e3['statusText']);}return await _0x46e0e3['json']();},async 'getTask'(_0x3851a0,_0x4172c8={}){const _0x202be2=new URLSearchParams();if(_0x4172c8['include']){const _0x452976=Array['isArray'](_0x4172c8['include'])?_0x4172c8['include']['join'](','):String(_0x4172c8['include']);if(_0x452976)_0x202be2['set']('include',_0x452976);}const _0x32432e=await fetch(API_BASE+'/tasks/'+_0x3851a0+(_0x202be2['toString']()?'?'+_0x202be2['toString']():''));if(!_0x32432e['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x32432e['statusText']);return await _0x32432e['json']();},async 'getTaskResults'(_0xc5718a){const _0x2e52fa=await fetch(API_BASE+'/tasks/'+_0xc5718a+'/results');if(!_0x2e52fa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2e52fa['statusText']);return await _0x2e52fa['json']();},async 'getTaskPatches'(_0x131b31){const _0x2a02b1=await fetch(API_BASE+'/tasks/'+_0x131b31+'/patches');if(!_0x2a02b1['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2a02b1['statusText']);return await _0x2a02b1['json']();},async 'getTaskAttachments'(_0x220b16){const _0x18142e=await fetch(API_BASE+'/tasks/'+_0x220b16+'/attachments');if(!_0x18142e['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x18142e['statusText']);return await _0x18142e['json']();},async 'uploadAttachments'(_0x5b745a,_0x36e351){const _0xb615df=new FormData();for(const _0x550644 of _0x36e351){_0xb615df['append']('attachments',_0x550644);}const _0x4fda71=await fetch(API_BASE+'/tasks/'+_0x5b745a+'/attachments',{'method':'POST','body':_0xb615df});if(!_0x4fda71['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4fda71['statusText']);return await _0x4fda71['json']();},async 'isAINameGenerationAvailable'(){try{const _0x8a6f8f=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x8a6f8f['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x8a6f8f['json']();}catch(_0x54456d){return{'available':![],'reason':_0x54456d['message']};}},async 'generateTaskName'(_0x59315c){try{const _0x52eaa6=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x59315c})});return await _0x52eaa6['json']();}catch(_0x52bf02){return{'success':![],'error':_0x52bf02['message']};}},async 'createTask'(_0x1f469f){let _0x279839,_0x408158={};if(_0x1f469f['files']&&_0x1f469f['files']['length']>0x0){const _0x47eec0=new FormData();for(const [_0x417cc0,_0x5cb19c]of Object['entries'](_0x1f469f)){if(_0x417cc0!=='files'){if(_0x5cb19c==null)continue;typeof _0x5cb19c==='object'?_0x47eec0['append'](_0x417cc0,JSON['stringify'](_0x5cb19c)):_0x47eec0['append'](_0x417cc0,String(_0x5cb19c));}}for(const _0x20c23f of _0x1f469f['files']){_0x47eec0['append']('attachments',_0x20c23f);}_0x279839=_0x47eec0;}else _0x408158['Content-Type']='application/json',_0x279839=JSON['stringify'](_0x1f469f);const _0x24b7b0=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x408158,'body':_0x279839});if(!_0x24b7b0['ok']){const _0x492d41=await _0x24b7b0['json'](),_0x2d0add=new Error(_0x492d41['error']||'Failed\x20to\x20create\x20task:\x20'+_0x24b7b0['statusText']),{message:_0x1bc852,..._0x23320a}=_0x492d41;Object['assign'](_0x2d0add,_0x23320a);throw _0x2d0add;}return await _0x24b7b0['json']();},async 'createTestTask'(_0xa3874){const _0x3e665a=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa3874)});if(!_0x3e665a['ok']){const _0x337da6=await _0x3e665a['json']();throw new Error(_0x337da6['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3e665a['statusText']);}return await _0x3e665a['json']();},async 'createEphemeralTest'(_0x70d276){const _0x5a01ca=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x70d276)});if(!_0x5a01ca['ok']){const _0x79474d=await _0x5a01ca['json']();throw new Error(_0x79474d['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5a01ca['statusText']);}return await _0x5a01ca['json']();},async 'createDeployTask'(_0x4cdeb9){const _0xbb1f7f=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cdeb9)});if(!_0xbb1f7f['ok']){const _0x2be275=await _0xbb1f7f['json']();throw new Error(_0x2be275['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xbb1f7f['statusText']);}return await _0xbb1f7f['json']();},async 'getEnvironments'(){const _0x4c8a8d=await fetch(API_BASE+'/environments');if(!_0x4c8a8d['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4c8a8d['statusText']);return await _0x4c8a8d['json']();},async 'getEnvironment'(_0x3207f1){const _0x26575c=await fetch(API_BASE+'/environments/'+_0x3207f1);if(!_0x26575c['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x26575c['statusText']);return await _0x26575c['json']();},async 'getEnvironmentRepoHistory'(_0x41f29a,_0x478be3,_0x3802d6={}){if(!_0x41f29a||!_0x478be3)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xe42f8a=new URLSearchParams();if(_0x3802d6['limit'])_0xe42f8a['set']('limit',String(_0x3802d6['limit']));if(_0x3802d6['offset'])_0xe42f8a['set']('offset',String(_0x3802d6['offset']));if(_0x3802d6['search'])_0xe42f8a['set']('search',String(_0x3802d6['search']));if(_0x3802d6['branch'])_0xe42f8a['set']('branch',String(_0x3802d6['branch']));const _0x5a1b28=API_BASE+'/environments/'+encodeURIComponent(_0x41f29a)+'/repos/'+encodeURIComponent(_0x478be3)+'/git/history',_0x51b3e8=await fetch(''+_0x5a1b28+(_0xe42f8a['toString']()?'?'+_0xe42f8a['toString']():''));if(!_0x51b3e8['ok']){const _0x5849cb=await _0x51b3e8['json']()['catch'](()=>({}));throw new Error(_0x5849cb['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x51b3e8['statusText']);}return await _0x51b3e8['json']();},async 'getEnvironmentRepoCommit'(_0x5b0af8,_0x1135f0,_0x494ca6){if(!_0x5b0af8||!_0x1135f0||!_0x494ca6)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x43d901=API_BASE+'/environments/'+encodeURIComponent(_0x5b0af8)+'/repos/'+encodeURIComponent(_0x1135f0)+'/git/commits/'+encodeURIComponent(_0x494ca6),_0x3cfcba=await fetch(_0x43d901);if(!_0x3cfcba['ok']){const _0x256ad4=await _0x3cfcba['json']()['catch'](()=>({}));throw new Error(_0x256ad4['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3cfcba['statusText']);}return await _0x3cfcba['json']();},async 'getEnvironmentRepoBranches'(_0x1ecc26,_0x2c0604){if(!_0x1ecc26||!_0x2c0604)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4ce181=API_BASE+'/environments/'+encodeURIComponent(_0x1ecc26)+'/repos/'+encodeURIComponent(_0x2c0604)+'/git/branches',_0x92dd3d=await fetch(_0x4ce181);if(!_0x92dd3d['ok']){const _0x39575e=await _0x92dd3d['json']()['catch'](()=>({}));throw new Error(_0x39575e['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x92dd3d['statusText']);}return await _0x92dd3d['json']();},async 'revertEnvironmentRepoCommit'(_0x1c36b8,_0x3fa9df,_0x58f621,_0x4724e5={}){if(!_0x1c36b8||!_0x3fa9df||!_0x58f621)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x59a3fd=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c36b8)+'/repos/'+encodeURIComponent(_0x3fa9df)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x58f621,..._0x4724e5})});if(!_0x59a3fd['ok']){const _0x50bee3=await _0x59a3fd['json']()['catch'](()=>({}));throw new Error(_0x50bee3['message']||_0x50bee3['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x59a3fd['statusText']);}return await _0x59a3fd['json']();},async 'getTemplates'(_0x5cfe3b={}){const _0x2317bb=new URLSearchParams();if(_0x5cfe3b['include']){const _0x2b7de5=Array['isArray'](_0x5cfe3b['include'])?_0x5cfe3b['include']['join'](','):String(_0x5cfe3b['include']);if(_0x2b7de5)_0x2317bb['set']('include',_0x2b7de5);}const _0x42b998=await fetch(API_BASE+'/templates'+(_0x2317bb['toString']()?'?'+_0x2317bb['toString']():''));if(!_0x42b998['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x42b998['statusText']);return await _0x42b998['json']();},async 'getTemplatesForEnvironment'(_0x467209,_0xa93801={}){if(!_0x467209)throw new Error('Environment\x20name\x20is\x20required');const _0x3b09c6=new URLSearchParams();if(_0xa93801['include']){const _0x2ec33=Array['isArray'](_0xa93801['include'])?_0xa93801['include']['join'](','):String(_0xa93801['include']);if(_0x2ec33)_0x3b09c6['set']('include',_0x2ec33);}const _0x40dd2b=await fetch(API_BASE+'/templates/'+_0x467209+(_0x3b09c6['toString']()?'?'+_0x3b09c6['toString']():''));if(!_0x40dd2b['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x467209+':\x20'+_0x40dd2b['statusText']);return await _0x40dd2b['json']();},async 'getTemplate'(_0x291a3d,_0x48b4e9,_0x19de47={}){if(!_0x291a3d||!_0x48b4e9)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x893e75=new URLSearchParams();if(_0x19de47['include']){const _0x31aa8b=Array['isArray'](_0x19de47['include'])?_0x19de47['include']['join'](','):String(_0x19de47['include']);if(_0x31aa8b)_0x893e75['set']('include',_0x31aa8b);}const _0x297e8c=await fetch(API_BASE+'/templates/'+_0x291a3d+'/'+_0x48b4e9+(_0x893e75['toString']()?'?'+_0x893e75['toString']():''));if(!_0x297e8c['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x297e8c['statusText']);return await _0x297e8c['json']();},async 'getTaskLogs'(_0x20d06f,_0x5df640={}){if(!_0x20d06f)throw new Error('Task\x20ID\x20is\x20required');const _0x133a5c=new URLSearchParams();_0x5df640['tail']&&_0x133a5c['set']('tail',String(_0x5df640['tail']));const _0x37f145=await fetch(API_BASE+'/tasks/'+_0x20d06f+'/logs'+(_0x133a5c['toString']()?'?'+_0x133a5c['toString']():''));if(!_0x37f145['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x37f145['statusText']);return await _0x37f145['text']();},async 'getContainers'(){const _0x62b960=await fetch(API_BASE+'/containers');if(!_0x62b960['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x62b960['statusText']);return await _0x62b960['json']();},async 'getContainer'(_0x53dc55){const _0x294c4f=await fetch(API_BASE+'/containers/'+_0x53dc55);if(!_0x294c4f['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x294c4f['statusText']);return await _0x294c4f['json']();},async 'startInteractiveContainer'(_0x5877ca){const _0x4bd9d0=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5877ca)});if(!_0x4bd9d0['ok']){const _0x43b338=await _0x4bd9d0['json']()['catch'](()=>({}));throw new Error(_0x43b338['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4bd9d0['statusText']);}return await _0x4bd9d0['json']();},async 'stopContainer'(_0x1c30d5){const _0x432915=await fetch(API_BASE+'/containers/'+_0x1c30d5,{'method':'DELETE'});if(!_0x432915['ok']){const _0x55d2c4=await _0x432915['json']()['catch'](()=>({}));throw new Error(_0x55d2c4['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x432915['statusText']);}return await _0x432915['json']();},async 'stopTask'(_0x1c478a){if(!_0x1c478a)throw new Error('Task\x20ID\x20is\x20required');const _0x132fcd=await fetch(API_BASE+'/tasks/'+_0x1c478a+'/stop',{'method':'POST'});if(!_0x132fcd['ok']){const _0x4cda71=await _0x132fcd['json']()['catch'](()=>({}));throw new Error(_0x4cda71['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x132fcd['statusText']);}return await _0x132fcd['json']();},async 'interruptTask'(_0x4049c5){if(!_0x4049c5)throw new Error('Task\x20ID\x20is\x20required');const _0x2fe379=await fetch(API_BASE+'/tasks/'+_0x4049c5+'/interrupt',{'method':'POST'});if(!_0x2fe379['ok']){const _0x2ac02a=await _0x2fe379['json']()['catch'](()=>({}));throw new Error(_0x2ac02a['error']||_0x2ac02a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x2fe379['statusText']);}return await _0x2fe379['json']();},async 'startTask'(_0x3630ca){if(!_0x3630ca)throw new Error('Task\x20ID\x20is\x20required');const _0x5330c2=await fetch(API_BASE+'/tasks/'+_0x3630ca+'/start',{'method':'POST'});if(!_0x5330c2['ok']){const _0x2a0a36=await _0x5330c2['json']()['catch'](()=>({}));throw new Error(_0x2a0a36['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5330c2['statusText']);}return await _0x5330c2['json']();},async 'deleteTask'(_0x29db9f){if(!_0x29db9f)throw new Error('Task\x20ID\x20is\x20required');const _0x5eeb74=await fetch(API_BASE+'/tasks/'+_0x29db9f,{'method':'DELETE'});if(!_0x5eeb74['ok']){const _0x57dbe0=await _0x5eeb74['json']()['catch'](()=>({}));throw new Error(_0x57dbe0['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x5eeb74['statusText']);}return await _0x5eeb74['json']();},async 'refreshTasksFromDisk'(){const _0x2b044f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2b044f['ok']){const _0x1177b1=await _0x2b044f['json']()['catch'](()=>({}));throw new Error(_0x1177b1['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2b044f['statusText']);}return await _0x2b044f['json']();},async 'approveTask'(_0x5a2972,_0x4b010c={}){if(!_0x5a2972)throw new Error('Task\x20ID\x20is\x20required');const _0x5ce48f={'commit_message':_0x4b010c['commit_message']||'','pull':_0x4b010c['pull']??![],'push':_0x4b010c['push']??![]};_0x4b010c['new_branch']&&(_0x5ce48f['new_branch']=_0x4b010c['new_branch']);const _0x2c9f85=await fetch(API_BASE+'/tasks/'+_0x5a2972+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ce48f)});if(!_0x2c9f85['ok']){const _0x3e8e18=await _0x2c9f85['json']()['catch'](()=>({}));let _0x252299=_0x3e8e18['error']||_0x3e8e18['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x2c9f85['statusText'];if(_0x3e8e18['results']&&Array['isArray'](_0x3e8e18['results'])){const _0xc4ccbc=_0x3e8e18['results']['filter'](_0x71cbd=>!_0x71cbd['success']&&_0x71cbd['error']);_0xc4ccbc['length']>0x0&&(_0x252299=_0xc4ccbc[0x0]['error']);}throw new Error(_0x252299);}return await _0x2c9f85['json']();},async 'getPullRequestInfo'(_0x277619){if(!_0x277619)throw new Error('Task\x20ID\x20is\x20required');const _0xadbbce=await fetch(API_BASE+'/tasks/'+_0x277619+'/pull-request-info');if(!_0xadbbce['ok']){const _0x57b18a=await _0xadbbce['json']()['catch'](()=>({}));throw new Error(_0x57b18a['error']||_0x57b18a['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0xadbbce['statusText']);}return await _0xadbbce['json']();},async 'createPullRequests'(_0x19a6e4,_0x89dcf2){if(!_0x19a6e4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x89dcf2||!Array['isArray'](_0x89dcf2))throw new Error('repos\x20array\x20is\x20required');const _0x3aac2f=await fetch(API_BASE+'/tasks/'+_0x19a6e4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x89dcf2})});if(!_0x3aac2f['ok']){const _0x24570c=await _0x3aac2f['json']()['catch'](()=>({}));let _0x116778=_0x24570c['error']||_0x24570c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x3aac2f['statusText'];if(_0x24570c['results']&&Array['isArray'](_0x24570c['results'])){const _0x4a7c81=_0x24570c['results']['filter'](_0x5b8b0a=>!_0x5b8b0a['success']&&_0x5b8b0a['error']);_0x4a7c81['length']>0x0&&(_0x116778=_0x4a7c81[0x0]['error']);}throw new Error(_0x116778);}return await _0x3aac2f['json']();},async 'syncRepos'(_0x3ee457){if(!_0x3ee457)throw new Error('Task\x20ID\x20is\x20required');const _0x545bd0=await fetch(API_BASE+'/tasks/'+_0x3ee457+'/sync-repos',{'method':'POST'});if(!_0x545bd0['ok']){const _0x4f18a5=await _0x545bd0['json']()['catch'](()=>({}));throw new Error(_0x4f18a5['error']||_0x4f18a5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x545bd0['statusText']);}return await _0x545bd0['json']();},async 'getIbmiSyncInfo'(_0x29230d){if(!_0x29230d)throw new Error('Task\x20ID\x20is\x20required');const _0x25ddaa=await fetch(API_BASE+'/tasks/'+_0x29230d+'/ibmi-sync-info');if(!_0x25ddaa['ok']){const _0x54d809=await _0x25ddaa['json']()['catch'](()=>({}));throw new Error(_0x54d809['error']||_0x54d809['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x25ddaa['json']();},async 'getSyncFiles'(_0x42ceba){if(!_0x42ceba)throw new Error('Task\x20ID\x20is\x20required');const _0x53f31c=await fetch(API_BASE+'/tasks/'+_0x42ceba+'/sync-to-ibmi/files');if(!_0x53f31c['ok']){const _0x1700ee=await _0x53f31c['json']()['catch'](()=>({}));throw new Error(_0x1700ee['error']||_0x1700ee['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x53f31c['json']();},async 'syncToIbmi'(_0x15696b,_0x14f45f,_0xc64806=null,_0x540d19=null,_0x5148d1=null){if(!_0x15696b)throw new Error('Task\x20ID\x20is\x20required');const _0xd177a1={'library':_0x14f45f};if(_0xc64806)_0xd177a1['user']=_0xc64806;if(_0x540d19)_0xd177a1['password']=_0x540d19;if(_0x5148d1)_0xd177a1['files']=_0x5148d1;const _0x11c39a=await fetch(API_BASE+'/tasks/'+_0x15696b+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd177a1)});if(!_0x11c39a['ok']){const _0x58146d=await _0x11c39a['json']()['catch'](()=>({}));throw new Error(_0x58146d['error']||_0x58146d['message']||'Sync\x20failed');}return await _0x11c39a['json']();},async 'getIbmiSyncLog'(_0x373c41){if(!_0x373c41)throw new Error('Task\x20ID\x20is\x20required');const _0x1feaae=await fetch(API_BASE+'/tasks/'+_0x373c41+'/ibmi-sync-log');if(!_0x1feaae['ok']){const _0x5f2f82=await _0x1feaae['json']()['catch'](()=>({}));throw new Error(_0x5f2f82['error']||_0x5f2f82['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1feaae['json']();},async 'pullChanges'(_0x42fdfe){if(!_0x42fdfe)throw new Error('Task\x20ID\x20is\x20required');const _0x10f84d=await fetch(API_BASE+'/tasks/'+_0x42fdfe+'/pull-changes',{'method':'POST'});if(!_0x10f84d['ok']){const _0x93e54f=await _0x10f84d['json']()['catch'](()=>({}));throw new Error(_0x93e54f['error']||_0x93e54f['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x10f84d['statusText']);}return await _0x10f84d['json']();},async 'readFile'(_0x557e73,_0x27a025){if(!_0x557e73)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27a025)throw new Error('File\x20path\x20is\x20required');const _0x3584b7=await fetch(API_BASE+'/tasks/'+_0x557e73+'/files?path='+encodeURIComponent(_0x27a025));if(!_0x3584b7['ok']){const _0x417ce8=await _0x3584b7['json']()['catch'](()=>({}));throw new Error(_0x417ce8['error']||_0x417ce8['message']||'Failed\x20to\x20read\x20file:\x20'+_0x3584b7['statusText']);}return await _0x3584b7['json']();},'getTaskFileDownloadUrl'(_0x33d136,_0x3db23b){if(!_0x33d136)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3db23b)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x33d136+'/files/download?path='+encodeURIComponent(_0x3db23b);},async 'writeFile'(_0x34dbed,_0x446d45,_0x370010){if(!_0x34dbed)throw new Error('Task\x20ID\x20is\x20required');if(!_0x446d45)throw new Error('File\x20path\x20is\x20required');if(_0x370010===undefined)throw new Error('Content\x20is\x20required');const _0x1157f6=await fetch(API_BASE+'/tasks/'+_0x34dbed+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x446d45,'content':_0x370010})});if(!_0x1157f6['ok']){const _0x533b0d=await _0x1157f6['json']()['catch'](()=>({}));throw new Error(_0x533b0d['error']||_0x533b0d['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1157f6['statusText']);}return await _0x1157f6['json']();},async 'uploadTaskFiles'(_0x1083d6,_0x282a87,_0xae816c){if(!_0x1083d6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x282a87)throw new Error('Target\x20directory\x20is\x20required');if(!_0xae816c||_0xae816c['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x32170a=new FormData();_0x32170a['append']('targetDir',_0x282a87);for(const _0x206e66 of _0xae816c){_0x32170a['append']('files',_0x206e66,_0x206e66['name']);}const _0x44c2ed=await fetch(API_BASE+'/tasks/'+_0x1083d6+'/files/upload',{'method':'POST','body':_0x32170a});if(!_0x44c2ed['ok']){const _0x45ae20=await _0x44c2ed['json']()['catch'](()=>({}));throw new Error(_0x45ae20['error']||_0x45ae20['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x44c2ed['statusText']);}return await _0x44c2ed['json']();},async 'deleteFile'(_0x102647,_0x97e0e4){if(!_0x102647)throw new Error('Task\x20ID\x20is\x20required');if(!_0x97e0e4)throw new Error('File\x20path\x20is\x20required');const _0x4b54d2=await fetch(API_BASE+'/tasks/'+_0x102647+'/files?path='+encodeURIComponent(_0x97e0e4),{'method':'DELETE'});if(!_0x4b54d2['ok']){const _0x545473=await _0x4b54d2['json']()['catch'](()=>({}));throw new Error(_0x545473['error']||_0x545473['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4b54d2['statusText']);}return await _0x4b54d2['json']();},async 'discardFile'(_0x86b622,_0x227a68,_0x4edd8a){if(!_0x86b622)throw new Error('Task\x20ID\x20is\x20required');if(!_0x227a68)throw new Error('File\x20path\x20is\x20required');if(!_0x4edd8a)throw new Error('Repository\x20path\x20is\x20required');const _0x13a428=await fetch(API_BASE+'/tasks/'+_0x86b622+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x227a68,'repoPath':_0x4edd8a})});if(!_0x13a428['ok']){const _0x57afb7=await _0x13a428['json']()['catch'](()=>({}));throw new Error(_0x57afb7['error']||_0x57afb7['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x13a428['statusText']);}return await _0x13a428['json']();},async 'followUpTask'(_0x2e865a,_0x17fb32={}){if(!_0x2e865a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17fb32['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x183b66,_0x45c12d={};if(_0x17fb32['files']&&_0x17fb32['files']['length']>0x0){const _0x558d38=new FormData();_0x558d38['append']('instructions',_0x17fb32['instructions']);for(const _0x5540b3 of _0x17fb32['files']){_0x558d38['append']('attachments',_0x5540b3);}_0x183b66=_0x558d38;}else _0x45c12d['Content-Type']='application/json',_0x183b66=JSON['stringify']({'instructions':_0x17fb32['instructions']});const _0x337185=await fetch(API_BASE+'/tasks/'+_0x2e865a+'/follow-up',{'method':'POST','headers':_0x45c12d,'body':_0x183b66});if(!_0x337185['ok']){const _0x1a18a4=await _0x337185['json']()['catch'](()=>({}));throw new Error(_0x1a18a4['error']||_0x1a18a4['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x337185['statusText']);}return await _0x337185['json']();},async 'getTaskRewindPoints'(_0x4c6d77){if(!_0x4c6d77)throw new Error('Task\x20ID\x20is\x20required');const _0x392167=await fetch(API_BASE+'/tasks/'+_0x4c6d77+'/rewind-points');if(!_0x392167['ok']){const _0x48f898=await _0x392167['json']()['catch'](()=>({}));throw new Error(_0x48f898['error']||_0x48f898['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x392167['statusText']);}return await _0x392167['json']();},async 'rewindTask'(_0x100ff2,_0x1b3009={}){if(!_0x100ff2)throw new Error('Task\x20ID\x20is\x20required');const _0x4f18e=Number['isInteger'](_0x1b3009['targetFollowUpCount'])?_0x1b3009['targetFollowUpCount']:0x0,_0x3ab6f4={'targetFollowUpCount':_0x4f18e};typeof _0x1b3009['instructions']==='string'&&_0x1b3009['instructions']['trim']()&&(_0x3ab6f4['instructions']=_0x1b3009['instructions']['trim']());typeof _0x1b3009['rewindFiles']==='boolean'&&(_0x3ab6f4['rewindFiles']=_0x1b3009['rewindFiles']);const _0x3802e2=await fetch(API_BASE+'/tasks/'+_0x100ff2+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ab6f4)});if(!_0x3802e2['ok']){const _0x1ab782=await _0x3802e2['json']()['catch'](()=>({}));throw new Error(_0x1ab782['error']||_0x1ab782['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3802e2['statusText']);}return await _0x3802e2['json']();},async 'login'(_0x47ed9,_0x2b4c14){const _0x294dfd=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x47ed9,'password':_0x2b4c14})});if(!_0x294dfd['ok']){const _0x256391=await _0x294dfd['json']();throw new Error(_0x256391['message']||'Login\x20failed');}return await _0x294dfd['json']();},async 'logout'(){const _0x130035=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x130035['ok']){const _0x31ec57=await _0x130035['json']();throw new Error(_0x31ec57['message']||'Logout\x20failed');}return await _0x130035['json']();},async 'getCurrentUser'(){const _0x35b1af=await fetch(API_BASE+'/auth/me');if(!_0x35b1af['ok'])throw new Error('Not\x20authenticated');const _0x3ab5bb=await _0x35b1af['json']();return _0x3ab5bb['user'];},async 'getRolesInfo'(){const _0x172630=await fetch(API_BASE+'/users/roles');if(!_0x172630['ok']){const _0x541616=await _0x172630['json']();throw new Error(_0x541616['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x172630['json']();},async 'getUsers'(){const _0x158dc9=await fetch(API_BASE+'/users');if(!_0x158dc9['ok']){const _0x12c9b2=await _0x158dc9['json']();throw new Error(_0x12c9b2['message']||'Failed\x20to\x20get\x20users');}return await _0x158dc9['json']();},async 'getUser'(_0x12e0cc){const _0x23f706=await fetch(API_BASE+'/users/'+_0x12e0cc);if(!_0x23f706['ok']){const _0xa59f04=await _0x23f706['json']();throw new Error(_0xa59f04['message']||'Failed\x20to\x20get\x20user');}return await _0x23f706['json']();},async 'createUser'(_0x31caa2){const _0x5f5ee7=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31caa2)});if(!_0x5f5ee7['ok']){const _0x3653dd=await _0x5f5ee7['json']();throw new Error(_0x3653dd['message']||'Failed\x20to\x20create\x20user');}return await _0x5f5ee7['json']();},async 'updateUser'(_0x2727e4,_0xe449c){const _0x3c1cb8=await fetch(API_BASE+'/users/'+_0x2727e4,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe449c)});if(!_0x3c1cb8['ok']){const _0x4899b2=await _0x3c1cb8['json']();throw new Error(_0x4899b2['message']||'Failed\x20to\x20update\x20user');}return await _0x3c1cb8['json']();},async 'deleteUser'(_0x5716e1){const _0xad6b6e=await fetch(API_BASE+'/users/'+_0x5716e1,{'method':'DELETE'});if(!_0xad6b6e['ok']){const _0x61b13b=await _0xad6b6e['json']();throw new Error(_0x61b13b['message']||'Failed\x20to\x20delete\x20user');}return await _0xad6b6e['json']();},async 'stopAllContainers'(){const _0x46bff8=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4c1b4a=await _0x46bff8['json']()['catch'](()=>({}));if(!_0x46bff8['ok'])throw new Error(_0x4c1b4a['message']||_0x4c1b4a['error']||'Failed\x20to\x20stop\x20containers');return _0x4c1b4a;},async 'removeStoppedContainers'(){const _0x8d2d03=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bd9a2=await _0x8d2d03['json']()['catch'](()=>({}));if(!_0x8d2d03['ok'])throw new Error(_0x2bd9a2['message']||_0x2bd9a2['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bd9a2;},async 'pruneDockerResources'(){const _0xf26463=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x3b4fe9=await _0xf26463['json']()['catch'](()=>({}));if(!_0xf26463['ok'])throw new Error(_0x3b4fe9['message']||_0x3b4fe9['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x3b4fe9;},async 'createPasswordToken'(_0x2aac42,_0x51415d='setup',_0x484d3b=![]){const _0x513ed8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2aac42,'type':_0x51415d,'sendEmail':_0x484d3b})});if(!_0x513ed8['ok']){const _0x213773=await _0x513ed8['json']();throw new Error(_0x213773['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x513ed8['json']();},async 'getEmailConfig'(){const _0x28b4e6=await fetch(API_BASE+'/password/email-config');if(!_0x28b4e6['ok']){const _0x5bbe7f=await _0x28b4e6['json']();throw new Error(_0x5bbe7f['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x28b4e6['json']();},async 'updateTaskName'(_0x550632,_0x4803c6){const _0x4a1a08=await fetch(API_BASE+'/tasks/'+_0x550632,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4803c6})});if(!_0x4a1a08['ok']){const _0x512121=await _0x4a1a08['json']();throw new Error(_0x512121['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4a1a08['json']();},async 'pinTask'(_0x5f169a,_0x53b378,_0x3efe25=null){if(!_0x5f169a)throw new Error('Task\x20ID\x20is\x20required');const _0x42eb9b={'pinned':_0x53b378};_0x3efe25&&_0x3efe25['length']>0x0&&(_0x42eb9b['additionalTaskIds']=_0x3efe25);const _0x2ffd03=await fetch(API_BASE+'/tasks/'+_0x5f169a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42eb9b)});if(!_0x2ffd03['ok']){const _0x51aaf4=await _0x2ffd03['json']();throw new Error(_0x51aaf4['error']||'Failed\x20to\x20pin\x20task');}return await _0x2ffd03['json']();},async 'setTaskWinner'(_0x594183,_0x5379f3,_0x7cccc=[]){if(!_0x594183)throw new Error('Task\x20ID\x20is\x20required');const _0x25dbc3=await fetch(API_BASE+'/tasks/'+_0x594183+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x5379f3,'siblings':_0x7cccc})});if(!_0x25dbc3['ok']){const _0xa9f07c=await _0x25dbc3['json']();throw new Error(_0xa9f07c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x25dbc3['json']();},async 'setTaskLoser'(_0x24734d,_0x4c6264){if(!_0x24734d)throw new Error('Task\x20ID\x20is\x20required');const _0x418609=await fetch(API_BASE+'/tasks/'+_0x24734d+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4c6264})});if(!_0x418609['ok']){const _0x11427f=await _0x418609['json']();throw new Error(_0x11427f['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x418609['json']();},async 'createTaskGroup'(_0x57d825){const _0x526919=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57d825)});if(!_0x526919['ok']){const _0x1d0c58=await _0x526919['json']();throw new Error(_0x1d0c58['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x526919['json']();},async 'getTaskGroups'(_0x1b7d02={}){const _0x1bfc8e=new URLSearchParams();if(_0x1b7d02['userId'])_0x1bfc8e['set']('userId',String(_0x1b7d02['userId']));if(_0x1b7d02['status'])_0x1bfc8e['set']('status',String(_0x1b7d02['status']));if(_0x1b7d02['limit'])_0x1bfc8e['set']('limit',String(_0x1b7d02['limit']));const _0x31a81a=API_BASE+'/tasks/groups'+(_0x1bfc8e['toString']()?'?'+_0x1bfc8e['toString']():''),_0x30fed6=await fetch(_0x31a81a);if(!_0x30fed6['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x30fed6['json']();},async 'getTaskGroup'(_0x1a8975){const _0x45b375=await fetch(API_BASE+'/tasks/groups/'+_0x1a8975);if(!_0x45b375['ok']){const _0xe4bac3=await _0x45b375['json']();throw new Error(_0xe4bac3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x45b375['json']();},async 'updateTaskGroup'(_0x3fb606,_0x1883de,_0x20a4e2){const _0x38dd4c=await fetch(API_BASE+'/tasks/'+_0x3fb606+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x1883de,'groupIndex':_0x20a4e2})});if(!_0x38dd4c['ok']){const _0x3f3dd4=await _0x38dd4c['json']();throw new Error(_0x3f3dd4['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x38dd4c['json']();},async 'removeTaskFromGroup'(_0x52bd10){return this['updateTaskGroup'](_0x52bd10,null,null);},async 'deleteTaskGroup'(_0x3160d9,_0x5da281=![]){const _0x3de3bf=_0x5da281?'?deleteTasks=true':'',_0x1daacd=await fetch(API_BASE+'/tasks/groups/'+_0x3160d9+_0x3de3bf,{'method':'DELETE'});if(!_0x1daacd['ok']){const _0x3ab070=await _0x1daacd['json']();throw new Error(_0x3ab070['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x44975c,_0x525913){const _0xeaba48=await fetch(API_BASE+'/tasks/groups/'+_0x44975c+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x525913})});if(!_0xeaba48['ok']){const _0x444990=await _0xeaba48['json']();throw new Error(_0x444990['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xeaba48['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x52ccb0){if(!_0x52ccb0)throw new Error('Task\x20ID\x20is\x20required');const _0x171451=await fetch(API_BASE+'/tasks/'+_0x52ccb0+'/comments');if(!_0x171451['ok']){const _0x2b8655=await _0x171451['json']()['catch'](()=>({}));throw new Error(_0x2b8655['error']||'Failed\x20to\x20get\x20comments');}return await _0x171451['json']();},async 'addComment'(_0x23ed85,_0x1ee9dc){if(!_0x23ed85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1ee9dc)throw new Error('Comment\x20content\x20is\x20required');const _0x399448=await fetch(API_BASE+'/tasks/'+_0x23ed85+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1ee9dc})});if(!_0x399448['ok']){const _0x4aaa25=await _0x399448['json']()['catch'](()=>({}));throw new Error(_0x4aaa25['error']||'Failed\x20to\x20add\x20comment');}return await _0x399448['json']();},async 'updateComment'(_0xf95b29,_0x5cc038,_0x20042b){if(!_0xf95b29)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5cc038)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x20042b)throw new Error('Comment\x20content\x20is\x20required');const _0x4adade=await fetch(API_BASE+'/tasks/'+_0xf95b29+'/comments/'+_0x5cc038,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x20042b})});if(!_0x4adade['ok']){const _0x18f436=await _0x4adade['json']()['catch'](()=>({}));throw new Error(_0x18f436['error']||'Failed\x20to\x20update\x20comment');}return await _0x4adade['json']();},async 'deleteComment'(_0x46d5bd,_0x37dd4e){if(!_0x46d5bd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37dd4e)throw new Error('Comment\x20ID\x20is\x20required');const _0x43918e=await fetch(API_BASE+'/tasks/'+_0x46d5bd+'/comments/'+_0x37dd4e,{'method':'DELETE'});if(!_0x43918e['ok']){const _0x5c7a48=await _0x43918e['json']()['catch'](()=>({}));throw new Error(_0x5c7a48['error']||'Failed\x20to\x20delete\x20comment');}return await _0x43918e['json']();},async 'createObjective'(_0x1d5377){const _0x2567e8={'objective':!![],'name':_0x1d5377['name']||'','environment':_0x1d5377['environment']||null,'agents':_0x1d5377['agents']||[],'branches':_0x1d5377['branches']||{},'isPinned':_0x1d5377['isPinned']||![],'parentObjectiveId':_0x1d5377['parentObjectiveId']||null,'env_vars':_0x1d5377['envVars']||{},'parameters':{'instructions':_0x1d5377['instructions']||''},'files':_0x1d5377['files']||[],'jira':_0x1d5377['jira']||null};return this['createTask'](_0x2567e8);},async 'updateObjective'(_0xb2a543,_0x5bdfad,_0x33230d=[],_0x4fbbaa=[]){let _0x1acda0,_0x59746e={};const _0x42b335={..._0x5bdfad};_0x4fbbaa&&_0x4fbbaa['length']>0x0&&(_0x42b335['removeAttachments']=_0x4fbbaa);if(_0x33230d&&_0x33230d['length']>0x0){const _0x47d1ce=new FormData();for(const [_0x863e6e,_0x71dfd3]of Object['entries'](_0x42b335)){if(_0x71dfd3==null)continue;typeof _0x71dfd3==='object'?_0x47d1ce['append'](_0x863e6e,JSON['stringify'](_0x71dfd3)):_0x47d1ce['append'](_0x863e6e,String(_0x71dfd3));}for(const _0x203893 of _0x33230d){_0x47d1ce['append']('attachments',_0x203893);}_0x1acda0=_0x47d1ce;}else _0x59746e['Content-Type']='application/json',_0x1acda0=JSON['stringify'](_0x42b335);const _0x1cc41d=await fetch(API_BASE+'/tasks/'+_0xb2a543,{'method':'PATCH','headers':_0x59746e,'body':_0x1acda0});if(!_0x1cc41d['ok']){const _0x13975a=await _0x1cc41d['json']();throw new Error(_0x13975a['error']||'Failed\x20to\x20update\x20objective');}return await _0x1cc41d['json']();},async 'deleteObjective'(_0x7672de){return this['deleteTask'](_0x7672de);},async 'launchObjective'(_0x118464,_0x24b6f5={}){const _0x1c36e7=await fetch(API_BASE+'/tasks/'+_0x118464+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24b6f5)});if(!_0x1c36e7['ok']){const _0x3cdfdc=await _0x1c36e7['json']();throw new Error(_0x3cdfdc['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1c36e7['json']();},async 'getObjectiveAttachments'(_0xabdc8f){return this['getTaskAttachments'](_0xabdc8f);},async 'createJudgeTask'({environment:_0x19f46f,judgeAgent:_0x7a6bf5,groupId:_0x4b11eb,taskIds:_0x2cbd82,judgeCustomInstructions:_0x3740f1,isPinned:_0x1e54c7}){const _0x178a2a=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x19f46f,'judgeAgent':_0x7a6bf5,'groupId':_0x4b11eb,'taskIds':_0x2cbd82,'judgeCustomInstructions':_0x3740f1,'isPinned':_0x1e54c7})});if(!_0x178a2a['ok']){const _0x4bcb11=await _0x178a2a['json']();throw new Error(_0x4bcb11['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x178a2a['json']();},async 'getJudgeTasks'(_0x1f2d92){const _0x1ef91c=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1f2d92));if(!_0x1ef91c['ok']){const _0x5ac640=await _0x1ef91c['json']();throw new Error(_0x5ac640['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1ef91c['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1957c9,_0x14b922,_0x1b2f73=''){const _0x35e476=await fetch(API_BASE+'/tasks/'+_0x1957c9+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14b922,'customPreamble':_0x1b2f73})});if(!_0x35e476['ok']){const _0xec7a82=await _0x35e476['json']();throw new Error(_0xec7a82['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x35e476['json']();},async 'getJiraConfig'(){const _0x1983ec=await fetch(API_BASE+'/jira/config');if(!_0x1983ec['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1983ec['json']();},async 'getJiraIssue'(_0x22206e){const _0x5b46dc=await fetch(API_BASE+'/jira/issues/'+_0x22206e);if(!_0x5b46dc['ok']){const _0x4443c8=await _0x5b46dc['json']()['catch'](()=>({}));throw new Error(_0x4443c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x5b46dc['statusText']);}return await _0x5b46dc['json']();},async 'searchJiraIssues'(_0x498fd9,_0x463f28=0x14){const _0x102829=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x498fd9,'maxResults':_0x463f28})});if(!_0x102829['ok']){const _0x2aaf1b=await _0x102829['json']()['catch'](()=>({}));throw new Error(_0x2aaf1b['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x102829['statusText']);}return await _0x102829['json']();},async 'postJiraComment'(_0x4f5dd1,_0xf8321b){const _0x3e0186=await fetch(API_BASE+'/jira/issues/'+_0x4f5dd1+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xf8321b})});if(!_0x3e0186['ok']){const _0x3f17b4=await _0x3e0186['json']()['catch'](()=>({}));throw new Error(_0x3f17b4['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x3e0186['statusText']);}return await _0x3e0186['json']();},async 'getJiraComments'(_0x3bfa17){const _0x25eeeb=await fetch(API_BASE+'/jira/issues/'+_0x3bfa17+'/comments');if(!_0x25eeeb['ok']){const _0x1f9a38=await _0x25eeeb['json']()['catch'](()=>({}));throw new Error(_0x1f9a38['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x25eeeb['statusText']);}return await _0x25eeeb['json']();},async 'promptParameter'({environment:_0xdd7935,command:_0x255666,parser:parser='json'}){const _0x2fb9ee=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xdd7935,'command':_0x255666,'parser':parser})});if(!_0x2fb9ee['ok']){const _0x2fc11e=await _0x2fb9ee['json']()['catch'](()=>({}));throw new Error(_0x2fc11e['message']||_0x2fc11e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2fb9ee['statusText']);}return await _0x2fb9ee['json']();},async 'promptParameterStream'(_0x349884,_0x49f8c0){const _0x27348a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x349884)});if(!_0x27348a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x27348a['statusText']);const _0x156bbd=_0x27348a['body']['getReader'](),_0x50ac36=new TextDecoder();let _0x1cb890='';return new Promise((_0x44ecc4,_0x463fbf)=>{const _0x218d62=async()=>{try{const {done:_0x2dadd2,value:_0x99a911}=await _0x156bbd['read']();if(_0x2dadd2)return;_0x1cb890+=_0x50ac36['decode'](_0x99a911,{'stream':!![]});const _0x13dfeb=_0x1cb890['split']('\x0a\x0a');_0x1cb890=_0x13dfeb['pop']()||'';for(const _0x325871 of _0x13dfeb){if(!_0x325871['trim']())continue;const _0x7d00d6=_0x325871['split']('\x0a');let _0x2c5496='message',_0x3a584f='';for(const _0x7c41cb of _0x7d00d6){if(_0x7c41cb['startsWith']('event:'))_0x2c5496=_0x7c41cb['substring'](0x6)['trim']();else _0x7c41cb['startsWith']('data:')&&(_0x3a584f=_0x7c41cb['substring'](0x5)['trim']());}if(!_0x3a584f)continue;try{const _0x28250f=JSON['parse'](_0x3a584f);if(_0x2c5496==='progress'&&_0x49f8c0)_0x49f8c0(_0x28250f['stage'],_0x28250f['message']);else{if(_0x2c5496==='result'){_0x44ecc4(_0x28250f);return;}else{if(_0x2c5496==='error'){let _0xeafe12=_0x28250f['message']||_0x28250f['error']||'Prompt\x20command\x20failed';_0x28250f['rawOutput']&&(_0xeafe12+='\x0a\x0aRaw\x20output:\x0a'+_0x28250f['rawOutput']);_0x463fbf(new Error(_0xeafe12));return;}}}}catch(_0x4d8c53){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x4d8c53),console['error']('Event\x20type:',_0x2c5496),console['error']('Event\x20data:',_0x3a584f),console['error']('First\x20200\x20chars:',_0x3a584f['substring'](0x0,0xc8)),_0x463fbf(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x4d8c53['message']+'\x0a\x0aData:\x20'+_0x3a584f['substring'](0x0,0x1f4)));return;}}_0x218d62();}catch(_0x4925d1){_0x463fbf(_0x4925d1);}};_0x218d62();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3da842){const _0x34c925=await fetch(''+API_BASE+_0x3da842);if(!_0x34c925['ok']){const _0x5d6745=await _0x34c925['json']()['catch'](()=>({'error':_0x34c925['statusText']})),_0x43681c=new Error(_0x5d6745['error']||_0x5d6745['message']||_0x34c925['statusText']);if(_0x5d6745['detail']!==undefined)_0x43681c['detail']=_0x5d6745['detail'];throw _0x43681c;}return await _0x34c925['json']();},async 'post'(_0x5d8720,_0x580275){const _0x2a95de=await fetch(''+API_BASE+_0x5d8720,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x580275)});if(!_0x2a95de['ok']){const _0x328895=await _0x2a95de['json']()['catch'](()=>({'error':_0x2a95de['statusText']})),_0x43226d=new Error(_0x328895['error']||_0x328895['message']||_0x2a95de['statusText']);if(_0x328895['detail']!==undefined)_0x43226d['detail']=_0x328895['detail'];throw _0x43226d;}return await _0x2a95de['json']();},async 'put'(_0x384d17,_0x1d5a13){const _0x34c0ea=await fetch(''+API_BASE+_0x384d17,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d5a13)});if(!_0x34c0ea['ok']){const _0x5a62ed=await _0x34c0ea['json']()['catch'](()=>({'error':_0x34c0ea['statusText']})),_0x1ae0fc=new Error(_0x5a62ed['error']||_0x5a62ed['message']||_0x34c0ea['statusText']);if(_0x5a62ed['detail']!==undefined)_0x1ae0fc['detail']=_0x5a62ed['detail'];throw _0x1ae0fc;}return await _0x34c0ea['json']();},async 'delete'(_0x4f2667,_0x2e3e28){const _0xea880={'method':'DELETE'};_0x2e3e28&&(_0xea880['headers']={'Content-Type':'application/json'},_0xea880['body']=JSON['stringify'](_0x2e3e28));const _0x47510e=await fetch(''+API_BASE+_0x4f2667,_0xea880);if(!_0x47510e['ok']){const _0x3b117b=await _0x47510e['json']()['catch'](()=>({'error':_0x47510e['statusText']})),_0xac2c15=new Error(_0x3b117b['error']||_0x3b117b['message']||_0x47510e['statusText']);if(_0x3b117b['detail']!==undefined)_0xac2c15['detail']=_0x3b117b['detail'];throw _0xac2c15;}return await _0x47510e['json']();},async 'getSkills'(){const _0x5d78c8=await fetch(API_BASE+'/skills');if(!_0x5d78c8['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x5d78c8['statusText']);return await _0x5d78c8['json']();},async 'getSkill'(_0x35b14b){const _0x195c87=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35b14b));if(!_0x195c87['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x195c87['statusText']);return await _0x195c87['json']();},async 'createSkill'(_0x351f23){const _0x216b8e=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x351f23)});if(!_0x216b8e['ok']){const _0x304086=await _0x216b8e['json']()['catch'](()=>({'error':_0x216b8e['statusText']})),_0x18f181=new Error(_0x304086['error']||_0x304086['message']||_0x216b8e['statusText']);if(_0x304086['detail']!==undefined)_0x18f181['detail']=_0x304086['detail'];throw _0x18f181;}return await _0x216b8e['json']();},async 'updateSkill'(_0x4bc4b2,_0x48c427){const _0x3dcdf8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4bc4b2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48c427)});if(!_0x3dcdf8['ok']){const _0x317560=await _0x3dcdf8['json']()['catch'](()=>({'error':_0x3dcdf8['statusText']})),_0x1fcfb0=new Error(_0x317560['error']||_0x317560['message']||_0x3dcdf8['statusText']);if(_0x317560['detail']!==undefined)_0x1fcfb0['detail']=_0x317560['detail'];throw _0x1fcfb0;}return await _0x3dcdf8['json']();},async 'deleteSkill'(_0x3850d4){const _0x37ba33=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3850d4),{'method':'DELETE'});if(!_0x37ba33['ok']){const _0x4f7684=await _0x37ba33['json']()['catch'](()=>({'error':_0x37ba33['statusText']})),_0x2f169b=new Error(_0x4f7684['error']||_0x4f7684['message']||_0x37ba33['statusText']);if(_0x4f7684['detail']!==undefined)_0x2f169b['detail']=_0x4f7684['detail'];throw _0x2f169b;}return await _0x37ba33['json']();},async 'getSkillFile'(_0x2d674d,_0x1a1d29){const _0x170e5c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2d674d)+'/files/'+_0x1a1d29);if(!_0x170e5c['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x170e5c['statusText']);return await _0x170e5c['json']();},async 'saveSkillFile'(_0x46c740,_0x1bc610,_0x4b0470){const _0x526ac8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x46c740)+'/files/'+_0x1bc610,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b0470})});if(!_0x526ac8['ok']){const _0x2ee5d8=await _0x526ac8['json']()['catch'](()=>({'error':_0x526ac8['statusText']})),_0x57c5ff=new Error(_0x2ee5d8['error']||_0x2ee5d8['message']||_0x526ac8['statusText']);if(_0x2ee5d8['detail']!==undefined)_0x57c5ff['detail']=_0x2ee5d8['detail'];throw _0x57c5ff;}return await _0x526ac8['json']();},async 'deleteSkillFile'(_0x2de1d4,_0x4e8f06){const _0x326c26=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2de1d4)+'/files/'+_0x4e8f06,{'method':'DELETE'});if(!_0x326c26['ok']){const _0x14e1f4=await _0x326c26['json']()['catch'](()=>({'error':_0x326c26['statusText']})),_0x4e1d8e=new Error(_0x14e1f4['error']||_0x14e1f4['message']||_0x326c26['statusText']);if(_0x14e1f4['detail']!==undefined)_0x4e1d8e['detail']=_0x14e1f4['detail'];throw _0x4e1d8e;}return await _0x326c26['json']();},async 'pullSkills'(){const _0x278b55=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x278b55['ok']){const _0x2101b8=await _0x278b55['json']()['catch'](()=>({'error':_0x278b55['statusText']})),_0x233cfe=new Error(_0x2101b8['error']||_0x2101b8['message']||_0x278b55['statusText']);if(_0x2101b8['detail']!==undefined)_0x233cfe['detail']=_0x2101b8['detail'];throw _0x233cfe;}return await _0x278b55['json']();},async 'commitSkills'(_0x369f32,_0x2eb57b={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x2eb57b,_0x501358=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x369f32,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x501358['ok']){const _0x519243=await _0x501358['json']()['catch'](()=>({'error':_0x501358['statusText']})),_0x4d032e=new Error(_0x519243['error']||_0x519243['message']||_0x501358['statusText']);if(_0x519243['detail']!==undefined)_0x4d032e['detail']=_0x519243['detail'];throw _0x4d032e;}return await _0x501358['json']();},async 'discardSkillsChanges'(){const _0x386211=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x386211['ok']){const _0x38269c=await _0x386211['json']()['catch'](()=>({'error':_0x386211['statusText']})),_0x4d8dba=new Error(_0x38269c['error']||_0x38269c['message']||_0x386211['statusText']);if(_0x38269c['detail']!==undefined)_0x4d8dba['detail']=_0x38269c['detail'];throw _0x4d8dba;}return await _0x386211['json']();},async 'getSkillCatalog'(){const _0x4cd066=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4cd066['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4cd066['statusText']);return await _0x4cd066['json']();},async 'getImportedSkillsRegistry'(){const _0x5d2ccf=await fetch(API_BASE+'/external-skills/registry');if(!_0x5d2ccf['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5d2ccf['statusText']);return await _0x5d2ccf['json']();},async 'importCatalogSkill'(_0x38c3da){const _0x4b4c80=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x38c3da})});if(!_0x4b4c80['ok']){const _0x352771=await _0x4b4c80['json']()['catch'](()=>({'error':_0x4b4c80['statusText']})),_0xadbc25=new Error(_0x352771['error']||_0x352771['message']||_0x4b4c80['statusText']);if(_0x352771['detail']!==undefined)_0xadbc25['detail']=_0x352771['detail'];throw _0xadbc25;}return await _0x4b4c80['json']();},async 'importSkillFromGit'(_0x2c1ed1,_0x4517c3,_0x2d179f='main',_0x16216c=null){const _0x827992=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2c1ed1,'skillPath':_0x4517c3,'branch':_0x2d179f,'skillId':_0x16216c})});if(!_0x827992['ok']){const _0x1a81df=await _0x827992['json']()['catch'](()=>({'error':_0x827992['statusText']})),_0x8ef7ae=new Error(_0x1a81df['error']||_0x1a81df['message']||_0x827992['statusText']);if(_0x1a81df['detail']!==undefined)_0x8ef7ae['detail']=_0x1a81df['detail'];throw _0x8ef7ae;}return await _0x827992['json']();},async 'probeMarketplace'(_0x43b308,_0x52379f='main'){const _0x9ae18b=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x43b308,'branch':_0x52379f})});if(!_0x9ae18b['ok']){const _0x16535f=await _0x9ae18b['json']()['catch'](()=>({'error':_0x9ae18b['statusText']})),_0x2a126d=new Error(_0x16535f['error']||_0x16535f['message']||_0x9ae18b['statusText']);if(_0x16535f['detail']!==undefined)_0x2a126d['detail']=_0x16535f['detail'];throw _0x2a126d;}return await _0x9ae18b['json']();},async 'importMarketplaceBundle'(_0x5925fc,_0x4b3157,_0x253924,_0x1396f2=null){const _0x5322c9=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5925fc,'branch':_0x4b3157,'bundleId':_0x253924,'selectedSkills':_0x1396f2})});if(!_0x5322c9['ok']){const _0x3a1ff7=await _0x5322c9['json']()['catch'](()=>({'error':_0x5322c9['statusText']})),_0x3e33e7=new Error(_0x3a1ff7['error']||_0x3a1ff7['message']||_0x5322c9['statusText']);if(_0x3a1ff7['detail']!==undefined)_0x3e33e7['detail']=_0x3a1ff7['detail'];throw _0x3e33e7;}return await _0x5322c9['json']();},async 'importSkillFromFolder'(_0x14360b,_0x4be6da=null){const _0x311815=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x14360b,'skillId':_0x4be6da})});if(!_0x311815['ok']){const _0x120302=await _0x311815['json']()['catch'](()=>({'error':_0x311815['statusText']})),_0x383bfb=new Error(_0x120302['error']||_0x120302['message']||_0x311815['statusText']);if(_0x120302['detail']!==undefined)_0x383bfb['detail']=_0x120302['detail'];throw _0x383bfb;}return await _0x311815['json']();},async 'importSkillFromNpm'(_0x37e28b,_0x2f99d1='latest',_0x34d819=null,_0x2d5138=null){const _0x1625e8=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x37e28b,'version':_0x2f99d1,'skillId':_0x34d819,'registry':_0x2d5138})});if(!_0x1625e8['ok']){const _0x55f81b=await _0x1625e8['json']()['catch'](()=>({'error':_0x1625e8['statusText']})),_0x352533=new Error(_0x55f81b['error']||_0x55f81b['message']||_0x1625e8['statusText']);if(_0x55f81b['detail']!==undefined)_0x352533['detail']=_0x55f81b['detail'];throw _0x352533;}return await _0x1625e8['json']();},async 'checkSkillUpdates'(_0x2efcdd){const _0x306459=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2efcdd)+'/check-updates',{'method':'POST'});if(!_0x306459['ok']){const _0x49576a=await _0x306459['json']()['catch'](()=>({'error':_0x306459['statusText']})),_0x394534=new Error(_0x49576a['error']||_0x49576a['message']||_0x306459['statusText']);if(_0x49576a['detail']!==undefined)_0x394534['detail']=_0x49576a['detail'];throw _0x394534;}return await _0x306459['json']();},async 'updateExternalSkill'(_0x5f4ada){const _0x36c0a0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5f4ada)+'/update',{'method':'POST'});if(!_0x36c0a0['ok']){const _0x1856a6=await _0x36c0a0['json']()['catch'](()=>({'error':_0x36c0a0['statusText']})),_0x2d6a6b=new Error(_0x1856a6['error']||_0x1856a6['message']||_0x36c0a0['statusText']);if(_0x1856a6['detail']!==undefined)_0x2d6a6b['detail']=_0x1856a6['detail'];throw _0x2d6a6b;}return await _0x36c0a0['json']();},async 'updateSkillFlags'(_0x645152,_0x24646e){const _0x2413be=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x645152)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x24646e})});if(!_0x2413be['ok']){const _0x4475ab=await _0x2413be['json']()['catch'](()=>({'error':_0x2413be['statusText']})),_0x78da1=new Error(_0x4475ab['error']||_0x4475ab['message']||_0x2413be['statusText']);if(_0x4475ab['detail']!==undefined)_0x78da1['detail']=_0x4475ab['detail'];throw _0x78da1;}return await _0x2413be['json']();},async 'removeFromImportedRegistry'(_0x6f0344){const _0x2d9c36=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x6f0344)+'/registry',{'method':'DELETE'});if(!_0x2d9c36['ok']){const _0x388d28=await _0x2d9c36['json']()['catch'](()=>({'error':_0x2d9c36['statusText']})),_0x3e32b4=new Error(_0x388d28['error']||_0x388d28['message']||_0x2d9c36['statusText']);if(_0x388d28['detail']!==undefined)_0x3e32b4['detail']=_0x388d28['detail'];throw _0x3e32b4;}return await _0x2d9c36['json']();},async 'getTeams'(){const _0x171d55=await fetch(API_BASE+'/teams');if(!_0x171d55['ok']){const _0x5001f2=await _0x171d55['json']()['catch'](()=>({'message':_0x171d55['statusText']}));throw new Error(_0x5001f2['message']||'Failed\x20to\x20get\x20teams');}return await _0x171d55['json']();},async 'getTeam'(_0xc7ae11){const _0xb6a8c1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xc7ae11));if(!_0xb6a8c1['ok']){const _0x2ed49f=await _0xb6a8c1['json']()['catch'](()=>({'message':_0xb6a8c1['statusText']}));throw new Error(_0x2ed49f['message']||'Failed\x20to\x20get\x20team');}return await _0xb6a8c1['json']();},async 'createTeam'(_0x57e80b){const _0x5512fa=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57e80b)});if(!_0x5512fa['ok']){const _0x4714fd=await _0x5512fa['json']()['catch'](()=>({'message':_0x5512fa['statusText']}));throw new Error(_0x4714fd['message']||'Failed\x20to\x20create\x20team');}return await _0x5512fa['json']();},async 'updateTeam'(_0x55aa60,_0x51e86f){const _0x5d9694=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55aa60),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51e86f)});if(!_0x5d9694['ok']){const _0x3735d0=await _0x5d9694['json']()['catch'](()=>({'message':_0x5d9694['statusText']}));throw new Error(_0x3735d0['message']||'Failed\x20to\x20update\x20team');}return await _0x5d9694['json']();},async 'deleteTeam'(_0x5ca5f9){const _0x4dbaf7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5ca5f9),{'method':'DELETE'});if(!_0x4dbaf7['ok']){const _0x567766=await _0x4dbaf7['json']()['catch'](()=>({'message':_0x4dbaf7['statusText']}));throw new Error(_0x567766['message']||'Failed\x20to\x20delete\x20team');}return await _0x4dbaf7['json']();},async 'addTeamMember'(_0x310992,_0x3da648){const _0x397681=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x310992)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3da648})});if(!_0x397681['ok']){const _0x20f2bf=await _0x397681['json']()['catch'](()=>({'message':_0x397681['statusText']}));throw new Error(_0x20f2bf['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x397681['json']();},async 'removeTeamMember'(_0x1df662,_0x2ff3b3){const _0x590790=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1df662)+'/members/'+encodeURIComponent(_0x2ff3b3),{'method':'DELETE'});if(!_0x590790['ok']){const _0x223403=await _0x590790['json']()['catch'](()=>({'message':_0x590790['statusText']}));throw new Error(_0x223403['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x590790['json']();},async 'getBindings'(_0x10d91c={}){const _0x4ebf13=new URLSearchParams();if(_0x10d91c['resource_type'])_0x4ebf13['set']('resource_type',_0x10d91c['resource_type']);if(_0x10d91c['resource_id'])_0x4ebf13['set']('resource_id',_0x10d91c['resource_id']);if(_0x10d91c['subject_type'])_0x4ebf13['set']('subject_type',_0x10d91c['subject_type']);if(_0x10d91c['subject_id'])_0x4ebf13['set']('subject_id',_0x10d91c['subject_id']);const _0x13d343=_0x4ebf13['toString'](),_0x168104=await fetch(API_BASE+'/bindings'+(_0x13d343?'?'+_0x13d343:''));if(!_0x168104['ok']){const _0x4aa910=await _0x168104['json']()['catch'](()=>({'message':_0x168104['statusText']}));throw new Error(_0x4aa910['message']||'Failed\x20to\x20get\x20bindings');}return await _0x168104['json']();},async 'createBinding'(_0xb3af06){const _0x13c5bf=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb3af06)});if(!_0x13c5bf['ok']){const _0x452d7c=await _0x13c5bf['json']()['catch'](()=>({'message':_0x13c5bf['statusText']}));throw new Error(_0x452d7c['message']||'Failed\x20to\x20create\x20binding');}return await _0x13c5bf['json']();},async 'updateBinding'(_0x1babc6,_0x4af65a){const _0x522a6d=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1babc6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4af65a)});if(!_0x522a6d['ok']){const _0x496e5b=await _0x522a6d['json']()['catch'](()=>({'message':_0x522a6d['statusText']}));throw new Error(_0x496e5b['message']||'Failed\x20to\x20update\x20binding');}return await _0x522a6d['json']();},async 'deleteBinding'(_0x101a8f){const _0x649a48=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x101a8f),{'method':'DELETE'});if(!_0x649a48['ok']){const _0x1e6825=await _0x649a48['json']()['catch'](()=>({'message':_0x649a48['statusText']}));throw new Error(_0x1e6825['message']||'Failed\x20to\x20delete\x20binding');}return await _0x649a48['json']();},async 'getRoleDefinitions'(){const _0x2a9a88=await fetch(API_BASE+'/roles');if(!_0x2a9a88['ok']){const _0x6480cd=await _0x2a9a88['json']()['catch'](()=>({'message':_0x2a9a88['statusText']}));throw new Error(_0x6480cd['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2a9a88['json']();},async 'getRoleDefinition'(_0x1c1265){const _0x55cc8c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1c1265));if(!_0x55cc8c['ok']){const _0xc32d4d=await _0x55cc8c['json']()['catch'](()=>({'message':_0x55cc8c['statusText']}));throw new Error(_0xc32d4d['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x55cc8c['json']();},async 'createRoleDefinition'(_0x125c93){const _0x3e98aa=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x125c93)});if(!_0x3e98aa['ok']){const _0x9a6103=await _0x3e98aa['json']()['catch'](()=>({'message':_0x3e98aa['statusText']}));throw new Error(_0x9a6103['message']||_0x9a6103['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3e98aa['json']();},async 'updateRoleDefinition'(_0x31bb29,_0x4822d4){const _0x543d12=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31bb29),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4822d4)});if(!_0x543d12['ok']){const _0x4d06dc=await _0x543d12['json']()['catch'](()=>({'message':_0x543d12['statusText']}));throw new Error(_0x4d06dc['message']||_0x4d06dc['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x543d12['json']();},async 'deleteRoleDefinition'(_0x2aaf4f){const _0x8f2823=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2aaf4f),{'method':'DELETE'});if(!_0x8f2823['ok']){const _0x549653=await _0x8f2823['json']()['catch'](()=>({'message':_0x8f2823['statusText']}));throw new Error(_0x549653['message']||_0x549653['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x8f2823['json']();},async 'getAvailablePermissions'(){const _0xe391b7=await fetch(API_BASE+'/roles/available-permissions');if(!_0xe391b7['ok']){const _0x18cbdf=await _0xe391b7['json']()['catch'](()=>({'message':_0xe391b7['statusText']}));throw new Error(_0x18cbdf['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xe391b7['json']();},async 'getGitProviderAllowedTeams'(_0x5b41ff){const _0x3e0878=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5b41ff)+'/allowed-teams');if(!_0x3e0878['ok']){const _0x3e6b38=await _0x3e0878['json']()['catch'](()=>({'message':_0x3e0878['statusText']}));throw new Error(_0x3e6b38['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3e0878['json']();},async 'setGitProviderAllowedTeams'(_0x185e36,_0x13e362){const _0x26f8b6=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x185e36)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x13e362})});if(!_0x26f8b6['ok']){const _0x4e3d99=await _0x26f8b6['json']()['catch'](()=>({'message':_0x26f8b6['statusText']}));throw new Error(_0x4e3d99['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x26f8b6['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 _0x134215=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4c6769=>{_0x4c6769['el']['style']['bottom']=_0x134215+'px';const _0x2bef16=_0x4c6769['el']['offsetHeight']||toastState['defaultHeight'];_0x134215+=_0x2bef16+toastState['gap'];});});}function removeToastById(_0x1ed399){const _0x264b25=toastState['toasts']['findIndex'](_0x46c427=>_0x46c427['id']===_0x1ed399);if(_0x264b25===-0x1)return;const _0x1bd5f9=toastState['toasts'][_0x264b25];if(_0x1bd5f9['timeoutId'])clearTimeout(_0x1bd5f9['timeoutId']);_0x1bd5f9['el']['classList']['remove']('show'),setTimeout(()=>_0x1bd5f9['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x264b25,0x1),repositionAllToasts();}function registerToast(_0x4ff534){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4ff534),repositionAllToasts(),_0x4ff534['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(_0x68d482){if(_0x68d482===null||_0x68d482===undefined)return'';return String(_0x68d482)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x155876,_0x1d8c3){if(_0x155876&&typeof _0x155876==='object'&&!Array['isArray'](_0x155876))return{'code':typeof _0x155876['text']==='string'?_0x155876['text']:'','language':typeof _0x155876['lang']==='string'?_0x155876['lang']:''};return{'code':typeof _0x155876==='string'?_0x155876:'','language':typeof _0x1d8c3==='string'?_0x1d8c3:''};}function buildMermaidBlock(_0x430bb7){const _0x2f8a2a=String(_0x430bb7||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x2f8a2a))+'\x22>'+escapeHtmlValue(_0x2f8a2a)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x319a02=new marked['Renderer'](),_0x275059=_0x319a02['code']['bind'](_0x319a02);return _0x319a02['code']=function(_0x31af25,_0x599359,..._0x16b6e6){const {code:_0x38836c,language:_0x45cbf2}=getMarkdownCodeBlockPayload(_0x31af25,_0x599359),_0x50acb6=String(_0x45cbf2||'')['trim']()['toLowerCase']();if(_0x50acb6==='mermaid')return buildMermaidBlock(_0x38836c);const _0x291704=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x291704&&_0x50acb6)try{const _0x1703cb=_0x291704['getLanguage'](_0x50acb6)?_0x50acb6:'plaintext',_0x43f5f4=_0x291704['highlight'](_0x38836c,{'language':_0x1703cb})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x50acb6)+'\x22>'+_0x43f5f4+'</code></pre>';}catch(_0x3b2eb3){console['error']('Syntax\x20highlighting\x20error:',_0x3b2eb3);}return _0x275059(_0x31af25,_0x599359,..._0x16b6e6);},sharedMarkedRenderer=_0x319a02,_0x319a02;}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 _0x237786=window['mermaid'];if(!_0x237786||typeof _0x237786['initialize']!=='function')return _0x237786||null;return _0x237786['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x237786;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x26e033,_0x27e551)=>{const _0x8c03ad=()=>_0x26e033(configureMermaidInstance()),_0x587279=()=>{mermaidLoadPromise=null,_0x27e551(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x3ce082=document['getElementById'](MERMAID_SCRIPT_ID);!_0x3ce082&&(_0x3ce082=document['createElement']('script'),_0x3ce082['id']=MERMAID_SCRIPT_ID,_0x3ce082['src']=MERMAID_SCRIPT_SRC,_0x3ce082['async']=!![],document['head']['appendChild'](_0x3ce082));if(window['mermaid']){_0x8c03ad();return;}_0x3ce082['addEventListener']('load',_0x8c03ad,{'once':!![]}),_0x3ce082['addEventListener']('error',_0x587279,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x2d7d01){const _0x29935f=_0x2d7d01['getAttribute']('data-mermaid-source');if(!_0x29935f)return null;let _0x5398a0=_0x29935f;try{_0x5398a0=decodeURIComponent(_0x29935f);}catch{}return _0x2d7d01['textContent']=_0x5398a0,_0x2d7d01['removeAttribute']('data-processed'),_0x2d7d01['removeAttribute']('aria-roledescription'),_0x2d7d01['removeAttribute']('role'),_0x2d7d01['removeAttribute']('aria-label'),_0x5398a0;}function collectMermaidNodes(_0x885b8d,_0x9c8bc9){if(!(_0x885b8d instanceof Element))return;_0x885b8d['matches']('.mermaid[data-mermaid-source]')&&_0x9c8bc9['add'](_0x885b8d),_0x885b8d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x44b250=>{_0x9c8bc9['add'](_0x44b250);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x113338=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x266a1d=>setTimeout(_0x266a1d,0x0);_0x113338(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x12ca9e=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x12ca9e);});});}function queueMermaidRender(_0x12a3fd){const _0x1c797a=new Set();_0x12a3fd instanceof Document||_0x12a3fd instanceof DocumentFragment?_0x12a3fd['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4ab498=>_0x1c797a['add'](_0x4ab498)):collectMermaidNodes(_0x12a3fd,_0x1c797a);if(_0x1c797a['size']===0x0)return;_0x1c797a['forEach'](_0x43fa30=>pendingMermaidNodes['add'](_0x43fa30)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xd81e6e=Array['from'](pendingMermaidNodes)['filter'](_0x433224=>_0x433224['isConnected']);pendingMermaidNodes['clear']();if(_0xd81e6e['length']===0x0)return;const _0xbd22c4=await loadMermaid();if(!_0xbd22c4)return;configureMermaidInstance();const _0x513012=getMermaidTheme();for(const _0x32bb8f of _0xd81e6e){const _0x7e1815=_0x32bb8f['getAttribute']('data-mermaid-source');if(!_0x7e1815)continue;const _0x34645c=_0x32bb8f['getAttribute']('data-processed')==='true';if(_0x34645c&&_0x32bb8f['dataset']['mermaidTheme']===_0x513012)continue;restoreMermaidSource(_0x32bb8f);try{if(typeof _0xbd22c4['run']==='function')await _0xbd22c4['run']({'nodes':[_0x32bb8f]});else typeof _0xbd22c4['init']==='function'&&_0xbd22c4['init'](undefined,[_0x32bb8f]);_0x32bb8f['dataset']['mermaidTheme']=_0x513012,delete _0x32bb8f['dataset']['mermaidError'];}catch(_0x5a996a){console['error']('Mermaid\x20render\x20failed:',_0x5a996a),restoreMermaidSource(_0x32bb8f),_0x32bb8f['dataset']['mermaidError']='true',delete _0x32bb8f['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3e291=>{_0x3e291['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3e291);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x44f170=>{_0x44f170['forEach'](_0x29a66b=>{_0x29a66b['addedNodes']['forEach'](_0x3412f=>{_0x3412f['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x3412f);});});}),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'(_0x39b2ba){const _0x2eaaca=new Date(_0x39b2ba),_0x2bb7e1=new Date(),_0x298a6d=_0x2bb7e1-_0x2eaaca,_0x1e6c3c=Math['floor'](_0x298a6d/0x3e8),_0x558772=Math['floor'](_0x1e6c3c/0x3c),_0x20747f=Math['floor'](_0x558772/0x3c),_0x215117=Math['floor'](_0x20747f/0x18);if(_0x1e6c3c<0x3c)return'now';if(_0x558772<0x3c)return _0x558772+'m\x20ago';if(_0x20747f<0x18)return _0x20747f+'h\x20ago';return _0x215117+'d\x20ago';},'getStatusIcon'(_0xca8ae9){switch(_0xca8ae9){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x9abe22){switch(_0x9abe22){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'(_0x47c1b1,_0x28daa4=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2b482e={};_0x2b482e['text/plain']=new Blob([_0x47c1b1],{'type':'text/plain'});_0x28daa4&&(_0x2b482e['text/html']=new Blob([_0x28daa4],{'type':'text/html'}));const _0x5ee33c=new ClipboardItem(_0x2b482e);return await navigator['clipboard']['write']([_0x5ee33c]),!![];}catch(_0x5b83e3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5b83e3);}try{const _0xe53a78=_0x38ac2e=>{_0x38ac2e['preventDefault'](),_0x38ac2e['clipboardData']['setData']('text/plain',_0x47c1b1),_0x28daa4&&_0x38ac2e['clipboardData']['setData']('text/html',_0x28daa4);};document['addEventListener']('copy',_0xe53a78);const _0x33ee5d=document['execCommand']('copy');document['removeEventListener']('copy',_0xe53a78);if(_0x33ee5d)return!![];}catch(_0x403e54){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x403e54);}try{const _0x464cee=document['createElement']('textarea');_0x464cee['value']=_0x47c1b1,_0x464cee['style']['position']='fixed',_0x464cee['style']['opacity']='0',_0x464cee['style']['pointerEvents']='none',document['body']['appendChild'](_0x464cee),_0x464cee['select']();const _0x57526c=document['execCommand']('copy');return document['body']['removeChild'](_0x464cee),_0x57526c;}catch(_0x3e15ed){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3e15ed),![];}},'showToast'(_0x5bdb0d,_0x46f26c='info'){const _0x5a2476=getNextToastId(),_0x11ec0e=document['createElement']('div');_0x11ec0e['className']='toast\x20toast-'+_0x46f26c,_0x11ec0e['textContent']=_0x5bdb0d,_0x11ec0e['dataset']['toastId']=_0x5a2476,document['body']['appendChild'](_0x11ec0e);const _0x5ba37e=_0x46f26c==='error'?0x2710:0xbb8,_0x4f2ea1=setTimeout(()=>{removeToastById(_0x5a2476);},_0x5ba37e),_0x5cf4a8={'id':_0x5a2476,'el':_0x11ec0e,'timeoutId':_0x4f2ea1};return registerToast(_0x5cf4a8),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x11ec0e['classList']['add']('show');});}),_0x5a2476;},'showError'(_0x126d21){console['error'](_0x126d21);const _0x44a60f=typeof _0x126d21==='string'?_0x126d21:_0x126d21['message']||'An\x20error\x20occurred';this['showToast'](_0x44a60f,'error');},'showSuccess'(_0x3b872f){this['showToast'](_0x3b872f,'success');},'capitalize'(_0x104433){if(!_0x104433)return'';return _0x104433['charAt'](0x0)['toUpperCase']()+_0x104433['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5aacb7){return escapeHtmlValue(_0x5aacb7);},'ansiToHtml'(_0x11f786){if(_0x11f786===null||_0x11f786===undefined)return'';let _0x1047ac=this['escapeHtml'](_0x11f786);const _0x360986={'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'},_0x23b4df={'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 _0x1182a6=0x0;return _0x1047ac=_0x1047ac['replace'](/\x1b\[([0-9;]*)m/g,(_0x26dde6,_0x3861bc)=>{if(!_0x3861bc||_0x3861bc==='0'){const _0x536af9='</span>'['repeat'](_0x1182a6);return _0x1182a6=0x0,_0x536af9;}const _0x25bc2d=_0x3861bc['split'](';'),_0x4f83e2=[];for(const _0x4b1728 of _0x25bc2d){if(_0x4b1728==='1')_0x4f83e2['push']('font-weight:bold');else{if(_0x4b1728==='2')_0x4f83e2['push']('opacity:0.7');else{if(_0x4b1728==='3')_0x4f83e2['push']('font-style:italic');else{if(_0x4b1728==='4')_0x4f83e2['push']('text-decoration:underline');else{if(_0x4b1728==='9')_0x4f83e2['push']('text-decoration:line-through');else{if(_0x360986[_0x4b1728])_0x4f83e2['push']('color:'+_0x360986[_0x4b1728]);else{if(_0x23b4df[_0x4b1728])_0x4f83e2['push']('background-color:'+_0x23b4df[_0x4b1728]);}}}}}}}if(_0x4f83e2['length']>0x0)return _0x1182a6++,'<span\x20style=\x22'+_0x4f83e2['join'](';')+'\x22>';return'';}),_0x1047ac+='</span>'['repeat'](_0x1182a6),_0x1047ac=_0x1047ac['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1b25ee,_0x1aa331)=>{if(!_0x1aa331||_0x1aa331==='0')return'';const _0x4125ac=_0x1aa331['split'](';'),_0x592f05=[];for(const _0x2dd464 of _0x4125ac){if(_0x2dd464==='1')_0x592f05['push']('font-weight:bold');else{if(_0x360986[_0x2dd464])_0x592f05['push']('color:'+_0x360986[_0x2dd464]);else{if(_0x23b4df[_0x2dd464])_0x592f05['push']('background-color:'+_0x23b4df[_0x2dd464]);}}}if(_0x592f05['length']>0x0)return'<span\x20style=\x22'+_0x592f05['join'](';')+'\x22>';return'';}),_0x1047ac;},'showModal'({title:_0x2a3bb3,content:_0x518a18,buttons:buttons=[]}){const _0x54e1e6='\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'](_0x2a3bb3)+'</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'+_0x518a18+'\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']((_0x10a809,_0x3ca0da)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x10a809['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x3ca0da+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x10a809['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',_0x1696c2=document['createElement']('div');_0x1696c2['id']='utils-modal',_0x1696c2['className']='modal',_0x1696c2['innerHTML']=_0x54e1e6,document['body']['appendChild'](_0x1696c2);const _0x160f7d=document['getElementById']('utils-modal-close');_0x160f7d&&_0x160f7d['addEventListener']('click',()=>this['hideModal']());const _0x573c21=_0x1696c2['querySelectorAll']('[data-btn-index]');_0x573c21['forEach'](_0x15f6fc=>{const _0xc01008=parseInt(_0x15f6fc['dataset']['btnIndex']);buttons[_0xc01008]?.['onClick']&&_0x15f6fc['addEventListener']('click',buttons[_0xc01008]['onClick']);});const _0x7c7b4a=document['getElementById']('utils-modal-overlay');_0x7c7b4a&&_0x7c7b4a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x3072ad=document['getElementById']('utils-modal');_0x3072ad&&_0x3072ad['remove']();},'parseKeyValuePairs'(_0x1de37b){const _0x2c61c7={};if(!_0x1de37b)return _0x2c61c7;return _0x1de37b['split'](/\r?\n/)['map'](_0x32eee1=>_0x32eee1['trim']())['filter'](Boolean)['forEach'](_0x8571f6=>{const _0x43f5ca=_0x8571f6['indexOf']('=');if(_0x43f5ca>0x0){const _0x37a1b8=_0x8571f6['slice'](0x0,_0x43f5ca)['trim'](),_0x17e933=_0x8571f6['slice'](_0x43f5ca+0x1)['trim']();if(_0x37a1b8)_0x2c61c7[_0x37a1b8]=_0x17e933;}}),_0x2c61c7;},'debounce'(_0x20f77f,_0x3acc10=0xfa){let _0x498f7b=null;return(..._0x470d64)=>{clearTimeout(_0x498f7b),_0x498f7b=setTimeout(()=>_0x20f77f['apply'](this,_0x470d64),_0x3acc10);};},'formatTimestamp'(_0x123cde){if(!_0x123cde)return'N/A';const _0x26a2ab=new Date(_0x123cde);return _0x26a2ab['toLocaleDateString']()+'\x20'+_0x26a2ab['toLocaleTimeString']();},'getQueryParams'(){const _0xa4902d=new URLSearchParams(window['location']['search']),_0x4b8949={};for(const [_0x348280,_0x1d296a]of _0xa4902d){_0x4b8949[_0x348280]=_0x1d296a;}return _0x4b8949;},'formatDuration'(_0x4a492f,_0x461fc1){if(!_0x4a492f)return'N/A';const _0x392b34=new Date(_0x4a492f),_0x17a266=_0x461fc1?new Date(_0x461fc1):new Date(),_0x4064c5=_0x17a266-_0x392b34;if(_0x4064c5<0x0)return'0s';const _0x56330e=Math['floor'](_0x4064c5/0x3e8),_0x4e6913=Math['floor'](_0x56330e/0x3c),_0xf6076=Math['floor'](_0x4e6913/0x3c),_0x5166da=Math['floor'](_0xf6076/0x18);if(_0x56330e<0x3c)return _0x56330e+'s';if(_0x4e6913<0x3c)return _0x4e6913+'m\x20'+_0x56330e%0x3c+'s';if(_0xf6076<0x18)return _0xf6076+'h\x20'+_0x4e6913%0x3c+'m\x20'+_0x56330e%0x3c+'s';return _0x5166da+'d\x20'+_0xf6076%0x18+'h\x20'+_0x4e6913%0x3c+'m';},'renderMarkdown'(_0x553a6e,_0x406c36={}){if(!_0x553a6e)return'';_0x553a6e=this['rewriteAttachmentLinks'](_0x553a6e,_0x406c36),_0x553a6e=this['rewriteColorSyntax'](_0x553a6e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x553a6e,_0x406c36);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x553a6e);}catch(_0x306e9c){return console['error']('Markdown\x20parsing\x20error:',_0x306e9c),this['renderMarkdownFallback'](_0x553a6e,_0x406c36);}},'rewriteAttachmentLinks'(_0x451a6f,_0x5aa48d={}){const _0x4c362a=typeof _0x5aa48d['resolveAttachmentUrl']==='function'?_0x5aa48d['resolveAttachmentUrl']:_0x5aa48d['taskId']?_0xff3825=>API_BASE+'/tasks/'+_0x5aa48d['taskId']+'/attachments/'+encodeURIComponent(_0xff3825):null;if(!_0x4c362a)return _0x451a6f;return String(_0x451a6f)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x156de5,_0x42b45c)=>{const _0x95112e=String(_0x42b45c||'')['trim']();if(!_0x95112e)return _0x156de5;let _0x475db9=_0x95112e;try{_0x475db9=decodeURIComponent(_0x95112e);}catch{}const _0x398033=_0x4c362a(_0x475db9);if(!_0x398033)return _0x156de5;return']('+_0x398033+')';});},'rewriteColorSyntax'(_0x5c2dbd){if(!_0x5c2dbd)return _0x5c2dbd;return String(_0x5c2dbd)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x247113,_0x4d7fad,_0x1b8572)=>{const _0x4370fe=this['rewriteColorSyntax'](_0x1b8572);return'<span\x20style=\x22color:\x20'+_0x4d7fad+'\x22>'+_0x4370fe+'</span>';});},'renderMarkdownFallback'(_0x3efb63,_0x3b908d={}){if(!_0x3efb63)return'';_0x3efb63=_0x3efb63['replace'](/\r\n/g,'\x0a'),_0x3efb63=_0x3efb63['replace'](/\r/g,'\x0a'),_0x3efb63=this['rewriteAttachmentLinks'](_0x3efb63,_0x3b908d);let _0x55db8f=this['escapeHtml'](_0x3efb63);return _0x55db8f=_0x55db8f['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x55db8f=_0x55db8f['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x55db8f=_0x55db8f['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x55db8f=_0x55db8f['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x55db8f=_0x55db8f['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x55db8f=_0x55db8f['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x55db8f=_0x55db8f['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x55db8f=_0x55db8f['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x55db8f=_0x55db8f['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x55db8f=_0x55db8f['replace'](/\n\n/g,'</p><p>'),_0x55db8f=_0x55db8f['replace'](/\n/g,'<br>'),'<p>'+_0x55db8f+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x4f786d=new Uint8Array(0x10);crypto['getRandomValues'](_0x4f786d),_0x4f786d[0x6]=_0x4f786d[0x6]&0xf|0x40,_0x4f786d[0x8]=_0x4f786d[0x8]&0x3f|0x80;const _0xb0a9a1=Array['from'](_0x4f786d,_0x2dd69d=>_0x2dd69d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0xb0a9a1['slice'](0x0,0x8)+'-'+_0xb0a9a1['slice'](0x8,0xc)+'-'+_0xb0a9a1['slice'](0xc,0x10)+'-'+_0xb0a9a1['slice'](0x10,0x14)+'-'+_0xb0a9a1['slice'](0x14);}};export class CustomSelect{constructor(_0x56361d,_0x334ab5={}){this['nativeSelect']=_0x56361d,this['options']=_0x334ab5,this['isOpen']=![],this['selectedValue']=_0x56361d['value']||'',this['searchable']=_0x334ab5['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x15e720=document['createElement']('div');_0x15e720['className']='custom-select';const _0x26e6e0=document['createElement']('div');_0x26e6e0['className']='custom-select-trigger',_0x26e6e0['setAttribute']('tabindex','0'),_0x26e6e0['setAttribute']('role','button'),_0x26e6e0['setAttribute']('aria-haspopup','listbox');const _0x42b989=document['createElement']('span');_0x42b989['className']='custom-select-trigger-text';const _0x4b2f09=document['createElement']('span');_0x4b2f09['className']='custom-select-arrow',_0x4b2f09['textContent']='▼',_0x26e6e0['appendChild'](_0x42b989),_0x26e6e0['appendChild'](_0x4b2f09);const _0x635d95=document['createElement']('div');_0x635d95['className']='custom-select-dropdown',_0x635d95['setAttribute']('role','listbox');if(this['searchable']){const _0x3adbff=document['createElement']('div');_0x3adbff['className']='custom-select-search';const _0x3e58e8=document['createElement']('input');_0x3e58e8['type']='text',_0x3e58e8['className']='custom-select-search-input',_0x3e58e8['placeholder']='Type\x20to\x20search...',_0x3e58e8['setAttribute']('aria-label','Search\x20options'),_0x3e58e8['addEventListener']('input',_0x31ac0a=>{this['searchQuery']=_0x31ac0a['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x3e58e8['addEventListener']('keydown',_0x3e31be=>{if(_0x3e31be['key']==='Escape')_0x3e31be['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3e31be['key']==='Enter'){_0x3e31be['preventDefault'](),_0x3e31be['stopPropagation']();const _0x5925ee=_0x635d95['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x5925ee){const _0x4def0c=_0x5925ee['getAttribute']('data-value');this['select'](_0x4def0c);}}}}),_0x3adbff['appendChild'](_0x3e58e8),_0x635d95['appendChild'](_0x3adbff),this['searchInput']=_0x3e58e8;}const _0x33a568=document['createElement']('div');_0x33a568['className']='custom-select-options',_0x635d95['appendChild'](_0x33a568),_0x15e720['appendChild'](_0x26e6e0),_0x15e720['appendChild'](_0x635d95),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x15e720,this['nativeSelect']),this['wrapper']=_0x15e720,this['trigger']=_0x26e6e0,this['triggerText']=_0x42b989,this['dropdown']=_0x635d95,this['optionsContainer']=_0x33a568,_0x26e6e0['addEventListener']('click',()=>this['toggle']()),_0x26e6e0['addEventListener']('keydown',_0x5dde74=>this['handleKeydown'](_0x5dde74)),document['addEventListener']('click',_0xf58f8c=>{!_0x15e720['contains'](_0xf58f8c['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x302a91=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x302a91['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x4c9594=new MutationObserver(()=>{this['updateDisabledState']();});_0x4c9594['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x12da78=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x12da78['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x755040=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x755040),this['trigger']['setAttribute']('aria-disabled',_0x755040?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x755040?'-1':'0'),_0x755040&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xe4043f=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x2c60f7=_0xe4043f['filter'](_0x49356f=>!_0x49356f['disabled']&&!_0x49356f['hidden']);_0xe4043f['forEach']((_0x312069,_0x11c55)=>{const _0x4ab254=document['createElement']('div');_0x4ab254['className']='custom-select-option',_0x4ab254['textContent']=_0x312069['textContent'],_0x4ab254['setAttribute']('data-value',_0x312069['value']),_0x4ab254['setAttribute']('data-index',_0x11c55),_0x4ab254['setAttribute']('role','option'),_0x312069['disabled']?_0x4ab254['classList']['add']('disabled'):_0x4ab254['addEventListener']('click',()=>this['select'](_0x312069['value'])),_0x312069['value']===this['selectedValue']&&_0x4ab254['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4ab254),this['allOptions']['push']({'element':_0x4ab254,'text':_0x312069['textContent']['toLowerCase'](),'value':_0x312069['value'],'disabled':_0x312069['disabled']});});if(this['searchable']&&this['searchInput']){const _0x32da5e=this['searchInput']['parentElement'];_0x2c60f7['length']>0x3?_0x32da5e['style']['display']='':_0x32da5e['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x5cc7f1=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x82ec5b=>{if(!_0x5cc7f1||_0x82ec5b['disabled'])_0x82ec5b['element']['style']['display']='';else{const _0x13e116=_0x82ec5b['text']['includes'](_0x5cc7f1);_0x82ec5b['element']['style']['display']=_0x13e116?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3405cf){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3405cf,this['nativeSelect']['value']=_0x3405cf;const _0x232ea3=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x232ea3),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3c2673=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3c2673&&(this['triggerText']['textContent']=_0x3c2673['textContent'],_0x3c2673['disabled']||_0x3c2673['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x123649=>{_0x123649['getAttribute']('data-value')===this['selectedValue']?_0x123649['classList']['add']('selected'):_0x123649['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 _0x1402cd=window['getComputedStyle'](this['dropdown']);if(_0x1402cd['position']==='fixed'){const _0x374204=this['trigger']['getBoundingClientRect'](),_0x56bcfc=parseInt(_0x1402cd['maxHeight'])||0xc8,_0x4e9353=window['innerHeight'],_0x33265f=_0x4e9353-_0x374204['bottom'],_0x1405ea=_0x374204['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x14a848;_0x33265f<_0x56bcfc&&_0x1405ea>_0x33265f?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4e9353-_0x374204['top']+'px',_0x14a848=Math['min'](_0x56bcfc,_0x1405ea-0xa),this['dropdown']['style']['maxHeight']=_0x14a848+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x374204['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x14a848=Math['min'](_0x56bcfc,_0x33265f-0xa),this['dropdown']['style']['maxHeight']=_0x14a848+'px');if(this['optionsContainer']){let _0x5e2d28=_0x14a848;if(this['searchInput']){const _0xd8ce3d=this['searchInput']['parentElement'];_0xd8ce3d&&(_0x5e2d28-=_0xd8ce3d['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5e2d28)+'px';}this['dropdown']['style']['left']=_0x374204['left']+'px',this['dropdown']['style']['width']=_0x374204['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x29b84a=this['searchInput']['parentElement'];_0x29b84a&&_0x29b84a['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'](_0x1f47a0){if(this['nativeSelect']['disabled'])return;if(_0x1f47a0['key']==='Enter'||_0x1f47a0['key']==='\x20')_0x1f47a0['preventDefault'](),this['toggle']();else _0x1f47a0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1c9ee8='\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',_0x1c9ee8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x254613=document['getElementById']('confirm-dialog-close'),_0x18b8f9=document['getElementById']('confirm-dialog-cancel'),_0x528189=document['getElementById']('confirm-dialog-confirm'),_0x442a52=this['_modal']['querySelector']('.modal-overlay');_0x254613['addEventListener']('click',()=>this['_resolve'](![])),_0x18b8f9['addEventListener']('click',()=>this['_resolve'](![])),_0x528189['addEventListener']('click',()=>this['_resolve'](!![])),_0x442a52['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x498d23=>{if(_0x498d23['key']==='Escape')_0x498d23['preventDefault'](),this['_resolve'](![]);else _0x498d23['key']==='Enter'&&(_0x498d23['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1d2b5b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x436039=>{this['_resolvePromise']=_0x436039,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1d2b5b;const _0x36b20a=document['getElementById']('confirm-dialog-cancel'),_0x130a33=document['getElementById']('confirm-dialog-confirm');_0x36b20a['textContent']=cancelText,_0x130a33['textContent']=confirmText,_0x130a33['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x130a33['focus']();});},'_resolve'(_0x50654e){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x50654e),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x29b9ae,_0x1a678b={}){this['container']=_0x29b9ae,this['options']={'placeholder':_0x1a678b['placeholder']||'Type\x20to\x20search...','maxItems':_0x1a678b['maxItems']||0x64,'loadItems':_0x1a678b['loadItems']||(async()=>[]),'renderItem':_0x1a678b['renderItem']||(_0x5a19e7=>({'primary':String(_0x5a19e7),'secondary':''})),'onSelect':_0x1a678b['onSelect']||(()=>{}),'filterItems':_0x1a678b['filterItems']||null,'getItemValue':_0x1a678b['getItemValue']||(_0x4b4c9a=>_0x4b4c9a),'sortItems':_0x1a678b['sortItems']||null,'debounceMs':_0x1a678b['debounceMs']||0xc8,'minCharsForSearch':_0x1a678b['minCharsForSearch']||0x0,'emptyMessage':_0x1a678b['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1a678b['loadingMessage']||'Loading...','preload':_0x1a678b['preload']!==![],'searchMode':_0x1a678b['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',_0x2dc94c=>this['onBlur'](_0x2dc94c)),this['input']['addEventListener']('input',_0x402bcf=>this['onInput'](_0x402bcf)),this['input']['addEventListener']('keydown',_0x34e17f=>this['onKeydown'](_0x34e17f)),this['clearBtn']['addEventListener']('mousedown',_0x228246=>{_0x228246['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x1642bf=>{_0x1642bf['preventDefault']();}),document['addEventListener']('click',_0xb10e57=>{!this['wrapper']['contains'](_0xb10e57['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(_0x1feea7){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1feea7);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x232efb){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x448109){const _0x5de2d7=_0x448109['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5de2d7);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5de2d7):this['loadAndShow'](_0x5de2d7);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x7625e9){switch(_0x7625e9['key']){case'ArrowDown':_0x7625e9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x7625e9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x7625e9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x7625e9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5d34a6){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x3787c3=this['selectedIndex']+_0x5d34a6;if(_0x3787c3>=0x0&&_0x3787c3<this['filteredItems']['length']){this['selectedIndex']=_0x3787c3,this['updateSelectionHighlight']();const _0x5223a6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5223a6[this['selectedIndex']]&&_0x5223a6[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x958048=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x958048['forEach']((_0x5252fd,_0x2b42f1)=>{_0x5252fd['classList']['toggle']('keyboard-selected',_0x2b42f1===this['selectedIndex']);});}async['loadAndShow'](_0x2081ef){this['showLoading']();try{const _0x55354d=await this['options']['loadItems'](_0x2081ef);if(this['options']['searchMode']==='server'){let _0x1ccd76=_0x55354d;this['options']['sortItems']&&(_0x1ccd76=this['options']['sortItems']([..._0x55354d]));this['filteredItems']=_0x1ccd76;const _0x14f0e0=this['filteredItems']['length']>=this['options']['maxItems'];_0x14f0e0&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x14f0e0),this['open']();}else this['allItems']=_0x55354d,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2081ef);}catch(_0x50de8e){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x50de8e),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x269825){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x269825):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x3dcfb1=this['filteredItems']['length']>=this['options']['maxItems'];_0x3dcfb1&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3dcfb1),this['open']();}['renderItems'](_0x68e085){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']((_0x4ec396,_0x1b9803)=>{const _0x25c094=document['createElement']('div');_0x25c094['className']='autocomplete-select-item',_0x25c094['setAttribute']('role','option'),_0x25c094['setAttribute']('data-index',_0x1b9803);const _0x151d4c=this['options']['renderItem'](_0x4ec396);let _0x1c8af3='';_0x151d4c['icon']&&(_0x1c8af3='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x151d4c['iconClass']||'')+'\x22>'+_0x151d4c['icon']+'</span>'),_0x25c094['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1c8af3+'\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'](_0x151d4c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x151d4c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x151d4c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x25c094['addEventListener']('click',()=>{this['selectItem'](_0x4ec396);}),_0x25c094['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1b9803,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x25c094);}),_0x68e085?(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'](_0x109c54){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x109c54)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x3249ab){this['selectedItem']=_0x3249ab;const _0x4ba656=this['options']['renderItem'](_0x3249ab);this['input']['value']=_0x4ba656['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x3249ab);}['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'](_0x417fc6){if(_0x417fc6){this['selectedItem']=_0x417fc6;const _0x34afc=this['options']['renderItem'](_0x417fc6);this['input']['value']=_0x34afc['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x274337){this['allItems']=_0x274337,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'](_0x21859e){this['input']['placeholder']=_0x21859e;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x568946=null){const _0x5b860f=document['getElementById']('admin-menu-container'),_0x347e62=document['getElementById']('admin-menu-btn'),_0xdbed08=document['getElementById']('admin-menu');if(!_0x5b860f||!_0x347e62||!_0xdbed08)return;try{!_0x568946&&(_0x568946=await API['getCurrentUser']());if(_0x568946){const _0x27050c=window['Permissions'],_0x588bcd=_0x27050c['hasServerPermission'](_0x568946,'*')||_0x27050c['hasEnvPermission'](_0x568946,'environments:manage')||_0x27050c['hasServerPermission'](_0x568946,'users:create')||_0x27050c['hasTeamPermission'](_0x568946,'teams:manage')||_0x27050c['hasEnvPermission'](_0x568946,'environments:view_details');if(!_0x588bcd)return;_0x5b860f['hidden']=![];if(!_0x27050c['hasServerPermission'](_0x568946,'*')){const _0x8f290b=_0xdbed08['querySelectorAll']('.admin-menu-item');_0x8f290b['forEach'](_0x44d1a1=>{const _0x29135d=_0x44d1a1['querySelector']('.option-text')?.['textContent']?.['trim']();_0x29135d==='Users'&&!_0x27050c['hasServerPermission'](_0x568946,'users:create')&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Skills'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Server\x20Settings'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Server\x20Health'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Git\x20History'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Roles'&&(_0x44d1a1['hidden']=!![]);});}_0x347e62['addEventListener']('click',_0x5bc390=>{_0x5bc390['stopPropagation']();const _0x14d691=document['getElementById']('actions-menu');if(_0x14d691)_0x14d691['hidden']=!![];_0xdbed08['hidden']=!_0xdbed08['hidden'];}),document['addEventListener']('click',_0x5ed598=>{!_0xdbed08['hidden']&&!_0x347e62['contains'](_0x5ed598['target'])&&!_0xdbed08['contains'](_0x5ed598['target'])&&(_0xdbed08['hidden']=!![]);}),document['addEventListener']('keydown',_0x4e0fe2=>{_0x4e0fe2['key']==='Escape'&&!_0xdbed08['hidden']&&(_0xdbed08['hidden']=!![]);});const _0x47ca3d=document['getElementById']('server-health-btn');_0x47ca3d&&_0x47ca3d['addEventListener']('click',async()=>{_0xdbed08['hidden']=!![];const {openServerHealthModal:_0x3de4ad}=await import('./server-health.js');_0x3de4ad();});}}catch(_0x2c9149){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x2c9149['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};