@profoundlogic/coderflow-server 0.7.2 → 0.7.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 (183) hide show
  1. package/dist/base-image/entrypoint.sh +7 -0
  2. package/dist/base-image/standard-instructions/memory-instructions.md +7 -0
  3. package/dist/coder-server.js +1 -1
  4. package/dist/config.js +1 -1
  5. package/dist/lib/agent-keepalive.js +1 -1
  6. package/dist/lib/agent-models.js +1 -1
  7. package/dist/lib/api-keys.js +1 -1
  8. package/dist/lib/apiKeys.js +1 -1
  9. package/dist/lib/app-server-ports.js +1 -1
  10. package/dist/lib/auto-judge.js +1 -1
  11. package/dist/lib/automation-service.js +1 -1
  12. package/dist/lib/basic-auth.js +1 -1
  13. package/dist/lib/bindings.js +1 -1
  14. package/dist/lib/build-history.js +1 -1
  15. package/dist/lib/build-output-service.js +1 -1
  16. package/dist/lib/build-scheduler.js +1 -1
  17. package/dist/lib/build-service.js +1 -1
  18. package/dist/lib/ca-certificates.js +1 -1
  19. package/dist/lib/claude-oauth-refresh.js +1 -1
  20. package/dist/lib/cli/build.js +1 -1
  21. package/dist/lib/cli/cleanup-users.js +1 -1
  22. package/dist/lib/cli/config-command.js +1 -1
  23. package/dist/lib/cli/config.js +1 -1
  24. package/dist/lib/cli/create-user.js +1 -1
  25. package/dist/lib/cli/grant-admin.js +1 -1
  26. package/dist/lib/cli/init.js +1 -1
  27. package/dist/lib/cli/jira.js +1 -1
  28. package/dist/lib/cli/license.js +1 -1
  29. package/dist/lib/cli/list-roles.js +1 -1
  30. package/dist/lib/cli/list-users.js +1 -1
  31. package/dist/lib/cli/server-manager.js +1 -1
  32. package/dist/lib/cli/set-password.js +1 -1
  33. package/dist/lib/config-migration.js +1 -1
  34. package/dist/lib/container-credential-sync.js +1 -1
  35. package/dist/lib/container-tokens.js +1 -1
  36. package/dist/lib/data-dir.js +1 -1
  37. package/dist/lib/deployment-history.js +1 -1
  38. package/dist/lib/deployment-service.js +1 -1
  39. package/dist/lib/docker-utils.js +1 -1
  40. package/dist/lib/email.js +1 -1
  41. package/dist/lib/emailTemplates.js +1 -1
  42. package/dist/lib/entitlement.js +1 -1
  43. package/dist/lib/external-connections.js +1 -1
  44. package/dist/lib/fetch-utils.js +1 -1
  45. package/dist/lib/git-commit-details-route.js +1 -1
  46. package/dist/lib/git-history-diff-guardrails.js +1 -1
  47. package/dist/lib/git-provider-service.js +1 -1
  48. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  49. package/dist/lib/git-provider-setup/index.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  51. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  52. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  53. package/dist/lib/git-providers/github-app-provider.js +1 -1
  54. package/dist/lib/git-providers/index.js +1 -1
  55. package/dist/lib/git-providers/provider-factory.js +1 -1
  56. package/dist/lib/git-providers/provider-interface.js +1 -1
  57. package/dist/lib/github-urls.js +1 -1
  58. package/dist/lib/group-objective-linking.js +1 -1
  59. package/dist/lib/ibmi-sync.js +1 -1
  60. package/dist/lib/jira-client.js +1 -1
  61. package/dist/lib/judge-blinding.js +1 -1
  62. package/dist/lib/logger.js +1 -1
  63. package/dist/lib/memory-utils.js +1 -0
  64. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  65. package/dist/lib/model-fetcher.js +1 -1
  66. package/dist/lib/notifications.js +1 -1
  67. package/dist/lib/objective-context.js +1 -1
  68. package/dist/lib/oidc-auth.js +1 -1
  69. package/dist/lib/oidc-device-flow.js +1 -1
  70. package/dist/lib/passwordTokens.js +1 -1
  71. package/dist/lib/permission-resolver.js +1 -1
  72. package/dist/lib/pin-cascade.js +1 -1
  73. package/dist/lib/provider-accounts.js +1 -1
  74. package/dist/lib/provider-oauth.js +1 -1
  75. package/dist/lib/provider-profile.js +1 -1
  76. package/dist/lib/provider-token-refresh.js +1 -1
  77. package/dist/lib/rbac-user-state.js +1 -1
  78. package/dist/lib/request-url.js +1 -1
  79. package/dist/lib/rewind.js +1 -1
  80. package/dist/lib/role-definitions.js +1 -1
  81. package/dist/lib/roles.js +1 -1
  82. package/dist/lib/secrets.js +1 -1
  83. package/dist/lib/setup-repo-git-auth.js +1 -1
  84. package/dist/lib/state-capture.js +1 -1
  85. package/dist/lib/static-files.js +1 -1
  86. package/dist/lib/task-aliases.js +1 -1
  87. package/dist/lib/task-name-format.js +1 -1
  88. package/dist/lib/task-name-generator.js +1 -1
  89. package/dist/lib/task-source-metadata.js +1 -1
  90. package/dist/lib/teams.js +1 -1
  91. package/dist/lib/user-git-oauth.js +1 -1
  92. package/dist/lib/user-git-tokens.js +1 -1
  93. package/dist/lib/users.js +1 -1
  94. package/dist/middleware/requireAuth.js +1 -1
  95. package/dist/middleware/requireInit.js +1 -1
  96. package/dist/middleware/requirePermission.js +1 -1
  97. package/dist/package.json +1 -1
  98. package/dist/playwright.config.js +1 -1
  99. package/dist/playwright.task-terminal.config.js +1 -1
  100. package/dist/routes/apiKeys.js +1 -1
  101. package/dist/routes/auth-oidc.js +1 -1
  102. package/dist/routes/auth.js +1 -1
  103. package/dist/routes/automations.js +1 -1
  104. package/dist/routes/bindings.js +1 -1
  105. package/dist/routes/build.js +1 -1
  106. package/dist/routes/containers.js +1 -1
  107. package/dist/routes/deploy-task.js +1 -1
  108. package/dist/routes/environment-management.js +1 -1
  109. package/dist/routes/environments.js +1 -1
  110. package/dist/routes/external-skills.js +1 -1
  111. package/dist/routes/git-credentials.js +1 -1
  112. package/dist/routes/git-oauth.js +1 -1
  113. package/dist/routes/git-provider-setup.js +1 -1
  114. package/dist/routes/health.js +1 -1
  115. package/dist/routes/jira.js +1 -1
  116. package/dist/routes/objective-management.js +1 -1
  117. package/dist/routes/password.js +1 -1
  118. package/dist/routes/prompt.js +1 -1
  119. package/dist/routes/provider-auth.js +1 -1
  120. package/dist/routes/qa.js +1 -1
  121. package/dist/routes/roles.js +1 -1
  122. package/dist/routes/settings.js +1 -1
  123. package/dist/routes/skill-management.js +1 -1
  124. package/dist/routes/skills.js +1 -1
  125. package/dist/routes/tasks.js +1 -1
  126. package/dist/routes/teams.js +1 -1
  127. package/dist/routes/templates.js +1 -1
  128. package/dist/routes/test-task.js +1 -1
  129. package/dist/routes/test.js +1 -1
  130. package/dist/routes/users.js +1 -1
  131. package/dist/routes/visualizations.js +1 -1
  132. package/dist/scripts/create-user.js +1 -1
  133. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  134. package/dist/shipped-skills/memory-management/SKILL.md +103 -0
  135. package/dist/start.js +1 -1
  136. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  137. package/dist/web-ui/public/activity-feed.js +1 -1
  138. package/dist/web-ui/public/activity-formatters.js +1 -1
  139. package/dist/web-ui/public/agent-event-parser.js +1 -1
  140. package/dist/web-ui/public/app.js +1 -1
  141. package/dist/web-ui/public/approve-dialog.js +1 -1
  142. package/dist/web-ui/public/automation-links.js +1 -1
  143. package/dist/web-ui/public/automation-schedule.js +1 -1
  144. package/dist/web-ui/public/comments-widget.js +1 -1
  145. package/dist/web-ui/public/diff-utils.js +1 -1
  146. package/dist/web-ui/public/docs/admin/ai-providers.md +5 -5
  147. package/dist/web-ui/public/environments.css +61 -0
  148. package/dist/web-ui/public/environments.html +114 -0
  149. package/dist/web-ui/public/environments.js +1 -1
  150. package/dist/web-ui/public/feedback-widget.css +15 -5
  151. package/dist/web-ui/public/feedback-widget.js +1 -1
  152. package/dist/web-ui/public/file-selection-tree.js +1 -1
  153. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  154. package/dist/web-ui/public/git-history.js +1 -1
  155. package/dist/web-ui/public/git-status.js +1 -1
  156. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  157. package/dist/web-ui/public/index.html +20 -0
  158. package/dist/web-ui/public/index.js +1 -1
  159. package/dist/web-ui/public/login.js +1 -1
  160. package/dist/web-ui/public/markdown-editor.js +1 -1
  161. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  162. package/dist/web-ui/public/modal-maximize.js +1 -1
  163. package/dist/web-ui/public/notifications.js +1 -1
  164. package/dist/web-ui/public/permissions.js +1 -1
  165. package/dist/web-ui/public/pr-dialog.js +1 -1
  166. package/dist/web-ui/public/roles.js +1 -1
  167. package/dist/web-ui/public/server-health.js +1 -1
  168. package/dist/web-ui/public/settings.html +1 -1
  169. package/dist/web-ui/public/settings.js +1 -1
  170. package/dist/web-ui/public/setup-password.js +1 -1
  171. package/dist/web-ui/public/skills.js +1 -1
  172. package/dist/web-ui/public/sse-client.js +1 -1
  173. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  174. package/dist/web-ui/public/styles.css +25 -0
  175. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  176. package/dist/web-ui/public/task.html +15 -1
  177. package/dist/web-ui/public/task.js +1 -1
  178. package/dist/web-ui/public/teams.js +1 -1
  179. package/dist/web-ui/public/terminal.js +1 -1
  180. package/dist/web-ui/public/theme.js +1 -1
  181. package/dist/web-ui/public/users.js +1 -1
  182. package/dist/web-ui/public/variant-grouping.js +1 -1
  183. package/package.json +2 -2
@@ -1 +1 @@
1
- function detectApiBase(){const _0x2022db=window['location']['pathname'],_0x5db3e9=_0x2022db['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5db3e9)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5db3e9[0x1]),_0x5db3e9[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x15493f={}){const _0x51e233=new URLSearchParams();_0x15493f['userId']&&_0x51e233['set']('userId',String(_0x15493f['userId']));_0x15493f['automation']&&_0x51e233['set']('automation',String(_0x15493f['automation']));const _0x741c2a=API_BASE+'/tasks/stats'+(_0x51e233['toString']()?'?'+_0x51e233['toString']():''),_0x44fbff=await fetch(_0x741c2a);if(!_0x44fbff['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44fbff['statusText']);return await _0x44fbff['json']();},async 'getTasks'(_0xe2ae97={}){const _0x1397a3=new URLSearchParams();_0xe2ae97['status']&&_0x1397a3['set']('status',String(_0xe2ae97['status']));_0xe2ae97['environment']&&_0x1397a3['set']('environment',String(_0xe2ae97['environment']));_0xe2ae97['automation']&&_0x1397a3['set']('automation',String(_0xe2ae97['automation']));if(_0xe2ae97['include']){const _0x500b2b=Array['isArray'](_0xe2ae97['include'])?_0xe2ae97['include']['join'](','):String(_0xe2ae97['include']);_0x500b2b&&_0x1397a3['set']('include',_0x500b2b);}_0xe2ae97['filter']&&_0x1397a3['set']('filter',String(_0xe2ae97['filter']));_0xe2ae97['page']&&_0x1397a3['set']('page',String(_0xe2ae97['page']));_0xe2ae97['limit']&&_0x1397a3['set']('limit',String(_0xe2ae97['limit']));_0xe2ae97['userId']&&_0x1397a3['set']('userId',String(_0xe2ae97['userId']));_0xe2ae97['search']&&_0x1397a3['set']('search',String(_0xe2ae97['search']));_0xe2ae97['includeChildTasks']&&_0x1397a3['set']('includeChildTasks','true');const _0x44c6b4=API_BASE+'/tasks'+(_0x1397a3['toString']()?'?'+_0x1397a3['toString']():''),_0x1e113a=await fetch(_0x44c6b4);if(!_0x1e113a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x1e113a['statusText']);return await _0x1e113a['json']();},async 'getAutomations'(_0x1b7394={}){const _0x3346b6=new URLSearchParams();_0x1b7394['environment']&&_0x3346b6['set']('environment',String(_0x1b7394['environment']));const _0x2ead9c=await fetch(API_BASE+'/api/automations'+(_0x3346b6['toString']()?'?'+_0x3346b6['toString']():''));if(!_0x2ead9c['ok']){const _0x324d5c=await _0x2ead9c['json']()['catch'](()=>({}));throw new Error(_0x324d5c['message']||_0x324d5c['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ead9c['statusText']);}return await _0x2ead9c['json']();},async 'getAutomation'(_0x16ead3){const _0x2e5a5f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x16ead3));if(!_0x2e5a5f['ok']){const _0x1abeae=await _0x2e5a5f['json']()['catch'](()=>({}));throw new Error(_0x1abeae['message']||_0x1abeae['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x2e5a5f['statusText']);}return await _0x2e5a5f['json']();},async 'createAutomation'(_0x4574aa){const _0x3d7ab0=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4574aa||{})});if(!_0x3d7ab0['ok']){const _0x2d7c5f=await _0x3d7ab0['json']()['catch'](()=>({}));throw new Error(_0x2d7c5f['message']||_0x2d7c5f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3d7ab0['statusText']);}return await _0x3d7ab0['json']();},async 'updateAutomation'(_0x196eae,_0x6a840a){const _0x265c8a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x196eae),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6a840a||{})});if(!_0x265c8a['ok']){const _0x28e61f=await _0x265c8a['json']()['catch'](()=>({}));throw new Error(_0x28e61f['message']||_0x28e61f['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x265c8a['statusText']);}return await _0x265c8a['json']();},async 'deleteAutomation'(_0x20ae26){const _0x179ad7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x20ae26),{'method':'DELETE'});if(!_0x179ad7['ok']){const _0x46c920=await _0x179ad7['json']()['catch'](()=>({}));throw new Error(_0x46c920['message']||_0x46c920['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x179ad7['statusText']);}return await _0x179ad7['json']();},async 'triggerAutomation'(_0x516cb5){const _0x4bbc35=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x516cb5)+'/trigger',{'method':'POST'});if(!_0x4bbc35['ok']){const _0x268fea=await _0x4bbc35['json']()['catch'](()=>({}));throw new Error(_0x268fea['message']||_0x268fea['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4bbc35['statusText']);}return await _0x4bbc35['json']();},async 'setAutomationEnabled'(_0x5a25d1,_0x17cdf5){const _0x25971a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5a25d1)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x17cdf5})});if(!_0x25971a['ok']){const _0x5691d0=await _0x25971a['json']()['catch'](()=>({}));throw new Error(_0x5691d0['message']||_0x5691d0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x25971a['statusText']);}return await _0x25971a['json']();},async 'getAutomationHistory'(_0x26f6e1,_0x269c2b=0x32){const _0x40d3f1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x26f6e1)+'/history?limit='+encodeURIComponent(String(_0x269c2b)));if(!_0x40d3f1['ok']){const _0x59a96f=await _0x40d3f1['json']()['catch'](()=>({}));throw new Error(_0x59a96f['message']||_0x59a96f['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x40d3f1['statusText']);}return await _0x40d3f1['json']();},async 'getTask'(_0x4b8a88,_0x1ca105={}){const _0x6b1a30=new URLSearchParams();if(_0x1ca105['include']){const _0x44719d=Array['isArray'](_0x1ca105['include'])?_0x1ca105['include']['join'](','):String(_0x1ca105['include']);if(_0x44719d)_0x6b1a30['set']('include',_0x44719d);}const _0x4b3e6d=await fetch(API_BASE+'/tasks/'+_0x4b8a88+(_0x6b1a30['toString']()?'?'+_0x6b1a30['toString']():''));if(!_0x4b3e6d['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x4b3e6d['statusText']);return await _0x4b3e6d['json']();},async 'getTaskResults'(_0x93250){const _0x3eb995=await fetch(API_BASE+'/tasks/'+_0x93250+'/results');if(!_0x3eb995['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x3eb995['statusText']);return await _0x3eb995['json']();},async 'getTaskPatches'(_0x2b0e6f){const _0x55af03=await fetch(API_BASE+'/tasks/'+_0x2b0e6f+'/patches');if(!_0x55af03['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x55af03['statusText']);return await _0x55af03['json']();},async 'getTaskAttachments'(_0x3df4a7){const _0x4e6ddb=await fetch(API_BASE+'/tasks/'+_0x3df4a7+'/attachments');if(!_0x4e6ddb['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x4e6ddb['statusText']);return await _0x4e6ddb['json']();},async 'uploadAttachments'(_0x52bb2d,_0x139239){const _0x42f1b2=new FormData();for(const _0x57837a of _0x139239){_0x42f1b2['append']('attachments',_0x57837a);}const _0x226b36=await fetch(API_BASE+'/tasks/'+_0x52bb2d+'/attachments',{'method':'POST','body':_0x42f1b2});if(!_0x226b36['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x226b36['statusText']);return await _0x226b36['json']();},async 'isAINameGenerationAvailable'(){try{const _0x106408=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x106408['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x106408['json']();}catch(_0x57d6ba){return{'available':![],'reason':_0x57d6ba['message']};}},async 'generateTaskName'(_0x2fb0f6){try{const _0x28b645=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2fb0f6})});return await _0x28b645['json']();}catch(_0x2a05ec){return{'success':![],'error':_0x2a05ec['message']};}},async 'createTask'(_0x33b8df){let _0x5e3bd5,_0x514ec9={};if(_0x33b8df['files']&&_0x33b8df['files']['length']>0x0){const _0x2a1942=new FormData();for(const [_0x30d59c,_0x3416a3]of Object['entries'](_0x33b8df)){if(_0x30d59c!=='files'){if(_0x3416a3==null)continue;typeof _0x3416a3==='object'?_0x2a1942['append'](_0x30d59c,JSON['stringify'](_0x3416a3)):_0x2a1942['append'](_0x30d59c,String(_0x3416a3));}}for(const _0x7a068d of _0x33b8df['files']){_0x2a1942['append']('attachments',_0x7a068d);}_0x5e3bd5=_0x2a1942;}else _0x514ec9['Content-Type']='application/json',_0x5e3bd5=JSON['stringify'](_0x33b8df);const _0x1d0a86=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x514ec9,'body':_0x5e3bd5});if(!_0x1d0a86['ok']){const _0x4262cf=await _0x1d0a86['json'](),_0x390685=new Error(_0x4262cf['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1d0a86['statusText']),{message:_0x6c71fb,..._0x1e6d12}=_0x4262cf;Object['assign'](_0x390685,_0x1e6d12);throw _0x390685;}return await _0x1d0a86['json']();},async 'createTestTask'(_0x127764){const _0x1adc41=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x127764)});if(!_0x1adc41['ok']){const _0x2cae4a=await _0x1adc41['json']();throw new Error(_0x2cae4a['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x1adc41['statusText']);}return await _0x1adc41['json']();},async 'createEphemeralTest'(_0x393b96){const _0xdb93b9=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x393b96)});if(!_0xdb93b9['ok']){const _0x1dc3d5=await _0xdb93b9['json']();throw new Error(_0x1dc3d5['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0xdb93b9['statusText']);}return await _0xdb93b9['json']();},async 'createDeployTask'(_0x207f7d){const _0x4fc632=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x207f7d)});if(!_0x4fc632['ok']){const _0x4f4bbb=await _0x4fc632['json']();throw new Error(_0x4f4bbb['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4fc632['statusText']);}return await _0x4fc632['json']();},async 'getEnvironments'(){const _0x16f2a4=await fetch(API_BASE+'/environments');if(!_0x16f2a4['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x16f2a4['statusText']);return await _0x16f2a4['json']();},async 'getEnvironment'(_0x59eb28){const _0x29e6b3=await fetch(API_BASE+'/environments/'+_0x59eb28);if(!_0x29e6b3['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x29e6b3['statusText']);return await _0x29e6b3['json']();},async 'getEnvironmentRepoHistory'(_0x5e02c0,_0x7d8ce0,_0x5dc880={}){if(!_0x5e02c0||!_0x7d8ce0)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2b138d=new URLSearchParams();if(_0x5dc880['limit'])_0x2b138d['set']('limit',String(_0x5dc880['limit']));if(_0x5dc880['offset'])_0x2b138d['set']('offset',String(_0x5dc880['offset']));if(_0x5dc880['search'])_0x2b138d['set']('search',String(_0x5dc880['search']));if(_0x5dc880['branch'])_0x2b138d['set']('branch',String(_0x5dc880['branch']));const _0x5af68c=API_BASE+'/environments/'+encodeURIComponent(_0x5e02c0)+'/repos/'+encodeURIComponent(_0x7d8ce0)+'/git/history',_0x32d889=await fetch(''+_0x5af68c+(_0x2b138d['toString']()?'?'+_0x2b138d['toString']():''));if(!_0x32d889['ok']){const _0x306749=await _0x32d889['json']()['catch'](()=>({}));throw new Error(_0x306749['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x32d889['statusText']);}return await _0x32d889['json']();},async 'getEnvironmentRepoCommit'(_0x14c5d9,_0x43a691,_0x5e730b){if(!_0x14c5d9||!_0x43a691||!_0x5e730b)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x36ce04=API_BASE+'/environments/'+encodeURIComponent(_0x14c5d9)+'/repos/'+encodeURIComponent(_0x43a691)+'/git/commits/'+encodeURIComponent(_0x5e730b),_0x2f8407=await fetch(_0x36ce04);if(!_0x2f8407['ok']){const _0x587e93=await _0x2f8407['json']()['catch'](()=>({}));throw new Error(_0x587e93['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2f8407['statusText']);}return await _0x2f8407['json']();},async 'getEnvironmentRepoBranches'(_0x2b350a,_0x57c9a8){if(!_0x2b350a||!_0x57c9a8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3db766=API_BASE+'/environments/'+encodeURIComponent(_0x2b350a)+'/repos/'+encodeURIComponent(_0x57c9a8)+'/git/branches',_0x3a197c=await fetch(_0x3db766);if(!_0x3a197c['ok']){const _0x129142=await _0x3a197c['json']()['catch'](()=>({}));throw new Error(_0x129142['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3a197c['statusText']);}return await _0x3a197c['json']();},async 'revertEnvironmentRepoCommit'(_0x21915b,_0x40482f,_0x4841cf,_0x3ec37e={}){if(!_0x21915b||!_0x40482f||!_0x4841cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x951a11=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x21915b)+'/repos/'+encodeURIComponent(_0x40482f)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4841cf,..._0x3ec37e})});if(!_0x951a11['ok']){const _0x53461a=await _0x951a11['json']()['catch'](()=>({}));throw new Error(_0x53461a['message']||_0x53461a['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x951a11['statusText']);}return await _0x951a11['json']();},async 'getTemplates'(_0x2bb59e={}){const _0x46873d=new URLSearchParams();if(_0x2bb59e['include']){const _0x1ad516=Array['isArray'](_0x2bb59e['include'])?_0x2bb59e['include']['join'](','):String(_0x2bb59e['include']);if(_0x1ad516)_0x46873d['set']('include',_0x1ad516);}const _0x2012fc=await fetch(API_BASE+'/templates'+(_0x46873d['toString']()?'?'+_0x46873d['toString']():''));if(!_0x2012fc['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2012fc['statusText']);return await _0x2012fc['json']();},async 'getTemplatesForEnvironment'(_0x3bed55,_0x4527ee={}){if(!_0x3bed55)throw new Error('Environment\x20name\x20is\x20required');const _0x346a54=new URLSearchParams();if(_0x4527ee['include']){const _0x39e9b4=Array['isArray'](_0x4527ee['include'])?_0x4527ee['include']['join'](','):String(_0x4527ee['include']);if(_0x39e9b4)_0x346a54['set']('include',_0x39e9b4);}const _0x4a12e0=await fetch(API_BASE+'/templates/'+_0x3bed55+(_0x346a54['toString']()?'?'+_0x346a54['toString']():''));if(!_0x4a12e0['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3bed55+':\x20'+_0x4a12e0['statusText']);return await _0x4a12e0['json']();},async 'getTemplate'(_0x26340d,_0x43111e,_0x4866ff={}){if(!_0x26340d||!_0x43111e)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x3b7d87=new URLSearchParams();if(_0x4866ff['include']){const _0x415de1=Array['isArray'](_0x4866ff['include'])?_0x4866ff['include']['join'](','):String(_0x4866ff['include']);if(_0x415de1)_0x3b7d87['set']('include',_0x415de1);}const _0x258283=await fetch(API_BASE+'/templates/'+_0x26340d+'/'+_0x43111e+(_0x3b7d87['toString']()?'?'+_0x3b7d87['toString']():''));if(!_0x258283['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x258283['statusText']);return await _0x258283['json']();},async 'getTaskLogs'(_0x4b84d9,_0x31944f={}){if(!_0x4b84d9)throw new Error('Task\x20ID\x20is\x20required');const _0x568e95=new URLSearchParams();_0x31944f['tail']&&_0x568e95['set']('tail',String(_0x31944f['tail']));const _0x3ae5fd=await fetch(API_BASE+'/tasks/'+_0x4b84d9+'/logs'+(_0x568e95['toString']()?'?'+_0x568e95['toString']():''));if(!_0x3ae5fd['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3ae5fd['statusText']);return await _0x3ae5fd['text']();},async 'getContainers'(){const _0x1fb940=await fetch(API_BASE+'/containers');if(!_0x1fb940['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1fb940['statusText']);return await _0x1fb940['json']();},async 'getContainer'(_0x5d20f3){const _0x33ab01=await fetch(API_BASE+'/containers/'+_0x5d20f3);if(!_0x33ab01['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33ab01['statusText']);return await _0x33ab01['json']();},async 'startInteractiveContainer'(_0x21b7d8){const _0x55f7c8=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21b7d8)});if(!_0x55f7c8['ok']){const _0x2aec8=await _0x55f7c8['json']()['catch'](()=>({}));throw new Error(_0x2aec8['message']||'Failed\x20to\x20start\x20container:\x20'+_0x55f7c8['statusText']);}return await _0x55f7c8['json']();},async 'stopContainer'(_0x18a5f3){const _0x5ec322=await fetch(API_BASE+'/containers/'+_0x18a5f3,{'method':'DELETE'});if(!_0x5ec322['ok']){const _0xfff1fd=await _0x5ec322['json']()['catch'](()=>({}));throw new Error(_0xfff1fd['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x5ec322['statusText']);}return await _0x5ec322['json']();},async 'stopTask'(_0x3bf6f3){if(!_0x3bf6f3)throw new Error('Task\x20ID\x20is\x20required');const _0xa97a91=await fetch(API_BASE+'/tasks/'+_0x3bf6f3+'/stop',{'method':'POST'});if(!_0xa97a91['ok']){const _0x469951=await _0xa97a91['json']()['catch'](()=>({}));throw new Error(_0x469951['error']||'Failed\x20to\x20stop\x20task:\x20'+_0xa97a91['statusText']);}return await _0xa97a91['json']();},async 'interruptTask'(_0x324d39){if(!_0x324d39)throw new Error('Task\x20ID\x20is\x20required');const _0x17587e=await fetch(API_BASE+'/tasks/'+_0x324d39+'/interrupt',{'method':'POST'});if(!_0x17587e['ok']){const _0x100478=await _0x17587e['json']()['catch'](()=>({}));throw new Error(_0x100478['error']||_0x100478['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x17587e['statusText']);}return await _0x17587e['json']();},async 'startTask'(_0x5baa4b){if(!_0x5baa4b)throw new Error('Task\x20ID\x20is\x20required');const _0x397a7e=await fetch(API_BASE+'/tasks/'+_0x5baa4b+'/start',{'method':'POST'});if(!_0x397a7e['ok']){const _0x4b6fa3=await _0x397a7e['json']()['catch'](()=>({}));throw new Error(_0x4b6fa3['error']||'Failed\x20to\x20start\x20task:\x20'+_0x397a7e['statusText']);}return await _0x397a7e['json']();},async 'deleteTask'(_0x117c8d){if(!_0x117c8d)throw new Error('Task\x20ID\x20is\x20required');const _0x23b2dc=await fetch(API_BASE+'/tasks/'+_0x117c8d,{'method':'DELETE'});if(!_0x23b2dc['ok']){const _0x4ebde5=await _0x23b2dc['json']()['catch'](()=>({}));throw new Error(_0x4ebde5['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x23b2dc['statusText']);}return await _0x23b2dc['json']();},async 'refreshTasksFromDisk'(){const _0xf2fd23=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0xf2fd23['ok']){const _0x51ad18=await _0xf2fd23['json']()['catch'](()=>({}));throw new Error(_0x51ad18['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0xf2fd23['statusText']);}return await _0xf2fd23['json']();},async 'approveTask'(_0x407aef,_0xc0d64c={}){if(!_0x407aef)throw new Error('Task\x20ID\x20is\x20required');const _0x2367ac={'commit_message':_0xc0d64c['commit_message']||'','pull':_0xc0d64c['pull']??![],'push':_0xc0d64c['push']??![]};_0xc0d64c['new_branch']&&(_0x2367ac['new_branch']=_0xc0d64c['new_branch']);const _0x1539b8=await fetch(API_BASE+'/tasks/'+_0x407aef+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2367ac)});if(!_0x1539b8['ok']){const _0x2b2bfb=await _0x1539b8['json']()['catch'](()=>({}));let _0x1812fa=_0x2b2bfb['error']||_0x2b2bfb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1539b8['statusText'];if(_0x2b2bfb['results']&&Array['isArray'](_0x2b2bfb['results'])){const _0x3d2d01=_0x2b2bfb['results']['filter'](_0x489291=>!_0x489291['success']&&_0x489291['error']);_0x3d2d01['length']>0x0&&(_0x1812fa=_0x3d2d01[0x0]['error']);}throw new Error(_0x1812fa);}return await _0x1539b8['json']();},async 'getPullRequestInfo'(_0xe1e57c){if(!_0xe1e57c)throw new Error('Task\x20ID\x20is\x20required');const _0x8e6aa8=await fetch(API_BASE+'/tasks/'+_0xe1e57c+'/pull-request-info');if(!_0x8e6aa8['ok']){const _0x55e42d=await _0x8e6aa8['json']()['catch'](()=>({}));throw new Error(_0x55e42d['error']||_0x55e42d['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x8e6aa8['statusText']);}return await _0x8e6aa8['json']();},async 'createPullRequests'(_0x7d4388,_0x2d502c){if(!_0x7d4388)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d502c||!Array['isArray'](_0x2d502c))throw new Error('repos\x20array\x20is\x20required');const _0x4297b3=await fetch(API_BASE+'/tasks/'+_0x7d4388+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2d502c})});if(!_0x4297b3['ok']){const _0x734691=await _0x4297b3['json']()['catch'](()=>({}));let _0x137aa9=_0x734691['error']||_0x734691['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4297b3['statusText'];if(_0x734691['results']&&Array['isArray'](_0x734691['results'])){const _0x314658=_0x734691['results']['filter'](_0x445612=>!_0x445612['success']&&_0x445612['error']);_0x314658['length']>0x0&&(_0x137aa9=_0x314658[0x0]['error']);}throw new Error(_0x137aa9);}return await _0x4297b3['json']();},async 'syncRepos'(_0x4c9103){if(!_0x4c9103)throw new Error('Task\x20ID\x20is\x20required');const _0xd1832c=await fetch(API_BASE+'/tasks/'+_0x4c9103+'/sync-repos',{'method':'POST'});if(!_0xd1832c['ok']){const _0x151984=await _0xd1832c['json']()['catch'](()=>({}));throw new Error(_0x151984['error']||_0x151984['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xd1832c['statusText']);}return await _0xd1832c['json']();},async 'getIbmiSyncInfo'(_0x1913e5){if(!_0x1913e5)throw new Error('Task\x20ID\x20is\x20required');const _0x855d7a=await fetch(API_BASE+'/tasks/'+_0x1913e5+'/ibmi-sync-info');if(!_0x855d7a['ok']){const _0xbc6375=await _0x855d7a['json']()['catch'](()=>({}));throw new Error(_0xbc6375['error']||_0xbc6375['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x855d7a['json']();},async 'getSyncFiles'(_0x407aff){if(!_0x407aff)throw new Error('Task\x20ID\x20is\x20required');const _0x88394f=await fetch(API_BASE+'/tasks/'+_0x407aff+'/sync-to-ibmi/files');if(!_0x88394f['ok']){const _0x2e7b1e=await _0x88394f['json']()['catch'](()=>({}));throw new Error(_0x2e7b1e['error']||_0x2e7b1e['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x88394f['json']();},async 'syncToIbmi'(_0x2987f5,_0x14dd7a,_0x1e9ffe=null,_0x6587ab=null,_0x38f5a4=null){if(!_0x2987f5)throw new Error('Task\x20ID\x20is\x20required');const _0x5decf5={'library':_0x14dd7a};if(_0x1e9ffe)_0x5decf5['user']=_0x1e9ffe;if(_0x6587ab)_0x5decf5['password']=_0x6587ab;if(_0x38f5a4)_0x5decf5['files']=_0x38f5a4;const _0x58ea32=await fetch(API_BASE+'/tasks/'+_0x2987f5+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5decf5)});if(!_0x58ea32['ok']){const _0x57d058=await _0x58ea32['json']()['catch'](()=>({}));throw new Error(_0x57d058['error']||_0x57d058['message']||'Sync\x20failed');}return await _0x58ea32['json']();},async 'getIbmiSyncLog'(_0x2cdbc5){if(!_0x2cdbc5)throw new Error('Task\x20ID\x20is\x20required');const _0x289578=await fetch(API_BASE+'/tasks/'+_0x2cdbc5+'/ibmi-sync-log');if(!_0x289578['ok']){const _0x35e696=await _0x289578['json']()['catch'](()=>({}));throw new Error(_0x35e696['error']||_0x35e696['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x289578['json']();},async 'pullChanges'(_0x24b4fe){if(!_0x24b4fe)throw new Error('Task\x20ID\x20is\x20required');const _0x1cfbc8=await fetch(API_BASE+'/tasks/'+_0x24b4fe+'/pull-changes',{'method':'POST'});if(!_0x1cfbc8['ok']){const _0x5c9e1a=await _0x1cfbc8['json']()['catch'](()=>({}));throw new Error(_0x5c9e1a['error']||_0x5c9e1a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x1cfbc8['statusText']);}return await _0x1cfbc8['json']();},async 'readFile'(_0x3c4e3d,_0x380552){if(!_0x3c4e3d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x380552)throw new Error('File\x20path\x20is\x20required');const _0x23dea3=await fetch(API_BASE+'/tasks/'+_0x3c4e3d+'/files?path='+encodeURIComponent(_0x380552));if(!_0x23dea3['ok']){const _0x35b0ae=await _0x23dea3['json']()['catch'](()=>({}));throw new Error(_0x35b0ae['error']||_0x35b0ae['message']||'Failed\x20to\x20read\x20file:\x20'+_0x23dea3['statusText']);}return await _0x23dea3['json']();},'getTaskFileDownloadUrl'(_0x41d56b,_0x39f85a){if(!_0x41d56b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x39f85a)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x41d56b+'/files/download?path='+encodeURIComponent(_0x39f85a);},async 'writeFile'(_0x3e495b,_0x20f8ad,_0x208684){if(!_0x3e495b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20f8ad)throw new Error('File\x20path\x20is\x20required');if(_0x208684===undefined)throw new Error('Content\x20is\x20required');const _0x4c3c77=await fetch(API_BASE+'/tasks/'+_0x3e495b+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x20f8ad,'content':_0x208684})});if(!_0x4c3c77['ok']){const _0x2e51fb=await _0x4c3c77['json']()['catch'](()=>({}));throw new Error(_0x2e51fb['error']||_0x2e51fb['message']||'Failed\x20to\x20write\x20file:\x20'+_0x4c3c77['statusText']);}return await _0x4c3c77['json']();},async 'uploadTaskFiles'(_0x296efd,_0x575cf8,_0x3a165d){if(!_0x296efd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x575cf8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3a165d||_0x3a165d['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x30c7fc=new FormData();_0x30c7fc['append']('targetDir',_0x575cf8);for(const _0x3983f8 of _0x3a165d){_0x30c7fc['append']('files',_0x3983f8,_0x3983f8['name']);}const _0x4bdbe5=await fetch(API_BASE+'/tasks/'+_0x296efd+'/files/upload',{'method':'POST','body':_0x30c7fc});if(!_0x4bdbe5['ok']){const _0x156b81=await _0x4bdbe5['json']()['catch'](()=>({}));throw new Error(_0x156b81['error']||_0x156b81['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x4bdbe5['statusText']);}return await _0x4bdbe5['json']();},async 'createDirectory'(_0x96e07c,_0x1d4aad){if(!_0x96e07c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1d4aad)throw new Error('Directory\x20path\x20is\x20required');const _0x5887ab=await fetch(API_BASE+'/tasks/'+_0x96e07c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1d4aad})});if(!_0x5887ab['ok']){const _0x485e71=await _0x5887ab['json']()['catch'](()=>({}));throw new Error(_0x485e71['error']||_0x485e71['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x5887ab['statusText']);}return await _0x5887ab['json']();},async 'renamePath'(_0x4ccb58,_0x2cfbea,_0x44e47c){if(!_0x4ccb58)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2cfbea)throw new Error('Source\x20path\x20is\x20required');if(!_0x44e47c)throw new Error('Destination\x20path\x20is\x20required');const _0x2cee47=await fetch(API_BASE+'/tasks/'+_0x4ccb58+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x2cfbea,'newPath':_0x44e47c})});if(!_0x2cee47['ok']){const _0x5bf031=await _0x2cee47['json']()['catch'](()=>({}));throw new Error(_0x5bf031['error']||_0x5bf031['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x2cee47['statusText']);}return await _0x2cee47['json']();},async 'deleteFile'(_0x222951,_0x2c3956){if(!_0x222951)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c3956)throw new Error('File\x20path\x20is\x20required');const _0x554cd2=await fetch(API_BASE+'/tasks/'+_0x222951+'/files?path='+encodeURIComponent(_0x2c3956),{'method':'DELETE'});if(!_0x554cd2['ok']){const _0x644e7d=await _0x554cd2['json']()['catch'](()=>({}));throw new Error(_0x644e7d['error']||_0x644e7d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x554cd2['statusText']);}return await _0x554cd2['json']();},async 'deleteDirectory'(_0xe6a67d,_0x433037){if(!_0xe6a67d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x433037)throw new Error('Directory\x20path\x20is\x20required');const _0x4075d2=await fetch(API_BASE+'/tasks/'+_0xe6a67d+'/files/directory?path='+encodeURIComponent(_0x433037),{'method':'DELETE'});if(!_0x4075d2['ok']){const _0x2e22ce=await _0x4075d2['json']()['catch'](()=>({}));throw new Error(_0x2e22ce['error']||_0x2e22ce['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4075d2['statusText']);}return await _0x4075d2['json']();},async 'discardFile'(_0x84ceb0,_0x547857,_0x58d94d){if(!_0x84ceb0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x547857)throw new Error('File\x20path\x20is\x20required');if(!_0x58d94d)throw new Error('Repository\x20path\x20is\x20required');const _0x3ed396=await fetch(API_BASE+'/tasks/'+_0x84ceb0+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x547857,'repoPath':_0x58d94d})});if(!_0x3ed396['ok']){const _0x3fe2ef=await _0x3ed396['json']()['catch'](()=>({}));throw new Error(_0x3fe2ef['error']||_0x3fe2ef['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3ed396['statusText']);}return await _0x3ed396['json']();},async 'followUpTask'(_0x1136d7,_0x22958e={}){if(!_0x1136d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22958e['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x24b461,_0x501da6={};if(_0x22958e['files']&&_0x22958e['files']['length']>0x0){const _0x334d26=new FormData();_0x334d26['append']('instructions',_0x22958e['instructions']);for(const _0x5c5911 of _0x22958e['files']){_0x334d26['append']('attachments',_0x5c5911);}_0x24b461=_0x334d26;}else _0x501da6['Content-Type']='application/json',_0x24b461=JSON['stringify']({'instructions':_0x22958e['instructions']});const _0x5d3a2b=await fetch(API_BASE+'/tasks/'+_0x1136d7+'/follow-up',{'method':'POST','headers':_0x501da6,'body':_0x24b461});if(!_0x5d3a2b['ok']){const _0x3b6c78=await _0x5d3a2b['json']()['catch'](()=>({}));throw new Error(_0x3b6c78['error']||_0x3b6c78['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x5d3a2b['statusText']);}return await _0x5d3a2b['json']();},async 'getTaskRewindPoints'(_0x4f1a0a){if(!_0x4f1a0a)throw new Error('Task\x20ID\x20is\x20required');const _0x1f9a4b=await fetch(API_BASE+'/tasks/'+_0x4f1a0a+'/rewind-points');if(!_0x1f9a4b['ok']){const _0x30bdc3=await _0x1f9a4b['json']()['catch'](()=>({}));throw new Error(_0x30bdc3['error']||_0x30bdc3['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1f9a4b['statusText']);}return await _0x1f9a4b['json']();},async 'rewindTask'(_0x1b8cb9,_0x1e200f={}){if(!_0x1b8cb9)throw new Error('Task\x20ID\x20is\x20required');const _0x192883=Number['isInteger'](_0x1e200f['targetFollowUpCount'])?_0x1e200f['targetFollowUpCount']:0x0,_0xf3dc1d={'targetFollowUpCount':_0x192883};typeof _0x1e200f['instructions']==='string'&&_0x1e200f['instructions']['trim']()&&(_0xf3dc1d['instructions']=_0x1e200f['instructions']['trim']());typeof _0x1e200f['rewindFiles']==='boolean'&&(_0xf3dc1d['rewindFiles']=_0x1e200f['rewindFiles']);const _0x9d6e42=await fetch(API_BASE+'/tasks/'+_0x1b8cb9+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf3dc1d)});if(!_0x9d6e42['ok']){const _0x597b45=await _0x9d6e42['json']()['catch'](()=>({}));throw new Error(_0x597b45['error']||_0x597b45['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x9d6e42['statusText']);}return await _0x9d6e42['json']();},async 'login'(_0x3edc29,_0x565fc9){const _0x3cefc6=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x3edc29,'password':_0x565fc9})});if(!_0x3cefc6['ok']){const _0x2e9bd3=await _0x3cefc6['json']();throw new Error(_0x2e9bd3['message']||'Login\x20failed');}return await _0x3cefc6['json']();},async 'logout'(){const _0x4f7978=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4f7978['ok']){const _0x4f6e9b=await _0x4f7978['json']();throw new Error(_0x4f6e9b['message']||'Logout\x20failed');}return await _0x4f7978['json']();},async 'getCurrentUser'(){const _0x5df60b=await fetch(API_BASE+'/auth/me');if(!_0x5df60b['ok'])throw new Error('Not\x20authenticated');const _0x340eae=await _0x5df60b['json']();return _0x340eae['user'];},async 'getRolesInfo'(){const _0x1f9631=await fetch(API_BASE+'/users/roles');if(!_0x1f9631['ok']){const _0x218b4d=await _0x1f9631['json']();throw new Error(_0x218b4d['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1f9631['json']();},async 'getUsers'(){const _0xf7497d=await fetch(API_BASE+'/users');if(!_0xf7497d['ok']){const _0x43464c=await _0xf7497d['json']();throw new Error(_0x43464c['message']||'Failed\x20to\x20get\x20users');}return await _0xf7497d['json']();},async 'getUser'(_0x5add01){const _0x49ef04=await fetch(API_BASE+'/users/'+_0x5add01);if(!_0x49ef04['ok']){const _0x9fba0d=await _0x49ef04['json']();throw new Error(_0x9fba0d['message']||'Failed\x20to\x20get\x20user');}return await _0x49ef04['json']();},async 'createUser'(_0x4e3b5a){const _0x223b43=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e3b5a)});if(!_0x223b43['ok']){const _0x4233be=await _0x223b43['json']();throw new Error(_0x4233be['message']||'Failed\x20to\x20create\x20user');}return await _0x223b43['json']();},async 'updateUser'(_0x42be33,_0x23d1d0){const _0x39942d=await fetch(API_BASE+'/users/'+_0x42be33,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23d1d0)});if(!_0x39942d['ok']){const _0x331be5=await _0x39942d['json']();throw new Error(_0x331be5['message']||'Failed\x20to\x20update\x20user');}return await _0x39942d['json']();},async 'deleteUser'(_0x9e6019){const _0x448400=await fetch(API_BASE+'/users/'+_0x9e6019,{'method':'DELETE'});if(!_0x448400['ok']){const _0x584266=await _0x448400['json']();throw new Error(_0x584266['message']||'Failed\x20to\x20delete\x20user');}return await _0x448400['json']();},async 'stopAllContainers'(){const _0x8b6e3f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0xa6f530=await _0x8b6e3f['json']()['catch'](()=>({}));if(!_0x8b6e3f['ok'])throw new Error(_0xa6f530['message']||_0xa6f530['error']||'Failed\x20to\x20stop\x20containers');return _0xa6f530;},async 'removeStoppedContainers'(){const _0x5e4891=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x3ba002=await _0x5e4891['json']()['catch'](()=>({}));if(!_0x5e4891['ok'])throw new Error(_0x3ba002['message']||_0x3ba002['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x3ba002;},async 'pruneDockerResources'(){const _0x38265a=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x59ccf7=await _0x38265a['json']()['catch'](()=>({}));if(!_0x38265a['ok'])throw new Error(_0x59ccf7['message']||_0x59ccf7['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x59ccf7;},async 'createPasswordToken'(_0x52b428,_0x23ea30='setup',_0x16c789=![]){const _0x2a69b4=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x52b428,'type':_0x23ea30,'sendEmail':_0x16c789})});if(!_0x2a69b4['ok']){const _0x2eafd9=await _0x2a69b4['json']();throw new Error(_0x2eafd9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2a69b4['json']();},async 'getEmailConfig'(){const _0x65dceb=await fetch(API_BASE+'/password/email-config');if(!_0x65dceb['ok']){const _0x4c0621=await _0x65dceb['json']();throw new Error(_0x4c0621['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x65dceb['json']();},async 'updateTaskName'(_0x3bb867,_0x5a9492){const _0x1e6e20=await fetch(API_BASE+'/tasks/'+_0x3bb867,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5a9492})});if(!_0x1e6e20['ok']){const _0x32bb44=await _0x1e6e20['json']();throw new Error(_0x32bb44['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1e6e20['json']();},async 'pinTask'(_0x5d7df7,_0x3fee0e,_0x2d1316=null){if(!_0x5d7df7)throw new Error('Task\x20ID\x20is\x20required');const _0x2ca8fd={'pinned':_0x3fee0e};_0x2d1316&&_0x2d1316['length']>0x0&&(_0x2ca8fd['additionalTaskIds']=_0x2d1316);const _0x1c73b1=await fetch(API_BASE+'/tasks/'+_0x5d7df7+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ca8fd)});if(!_0x1c73b1['ok']){const _0x43b1e5=await _0x1c73b1['json']();throw new Error(_0x43b1e5['error']||'Failed\x20to\x20pin\x20task');}return await _0x1c73b1['json']();},async 'setTaskWinner'(_0x1a21c5,_0x4aba08,_0x44a9da=[]){if(!_0x1a21c5)throw new Error('Task\x20ID\x20is\x20required');const _0x49d21a=await fetch(API_BASE+'/tasks/'+_0x1a21c5+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4aba08,'siblings':_0x44a9da})});if(!_0x49d21a['ok']){const _0x9cf7b8=await _0x49d21a['json']();throw new Error(_0x9cf7b8['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x49d21a['json']();},async 'setTaskLoser'(_0x498bc2,_0x51fdbb){if(!_0x498bc2)throw new Error('Task\x20ID\x20is\x20required');const _0x542cd3=await fetch(API_BASE+'/tasks/'+_0x498bc2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x51fdbb})});if(!_0x542cd3['ok']){const _0x31a7ea=await _0x542cd3['json']();throw new Error(_0x31a7ea['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x542cd3['json']();},async 'createTaskGroup'(_0x162a3c){const _0x2b3910=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x162a3c)});if(!_0x2b3910['ok']){const _0x1266bc=await _0x2b3910['json']();throw new Error(_0x1266bc['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x2b3910['json']();},async 'getTaskGroups'(_0x3dc670={}){const _0x4fe512=new URLSearchParams();if(_0x3dc670['userId'])_0x4fe512['set']('userId',String(_0x3dc670['userId']));if(_0x3dc670['status'])_0x4fe512['set']('status',String(_0x3dc670['status']));if(_0x3dc670['limit'])_0x4fe512['set']('limit',String(_0x3dc670['limit']));const _0x70204f=API_BASE+'/tasks/groups'+(_0x4fe512['toString']()?'?'+_0x4fe512['toString']():''),_0x45ca6c=await fetch(_0x70204f);if(!_0x45ca6c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x45ca6c['json']();},async 'getTaskGroup'(_0x429f59){const _0x4d5507=await fetch(API_BASE+'/tasks/groups/'+_0x429f59);if(!_0x4d5507['ok']){const _0x5abe9b=await _0x4d5507['json']();throw new Error(_0x5abe9b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4d5507['json']();},async 'updateTaskGroup'(_0x56cce8,_0x47b7f5,_0x25eea5){const _0x2498c2=await fetch(API_BASE+'/tasks/'+_0x56cce8+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x47b7f5,'groupIndex':_0x25eea5})});if(!_0x2498c2['ok']){const _0x836d38=await _0x2498c2['json']();throw new Error(_0x836d38['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2498c2['json']();},async 'removeTaskFromGroup'(_0x13ae3f){return this['updateTaskGroup'](_0x13ae3f,null,null);},async 'deleteTaskGroup'(_0x301653,_0x495b4a=![]){const _0x399c28=_0x495b4a?'?deleteTasks=true':'',_0x282e19=await fetch(API_BASE+'/tasks/groups/'+_0x301653+_0x399c28,{'method':'DELETE'});if(!_0x282e19['ok']){const _0xcfbc99=await _0x282e19['json']();throw new Error(_0xcfbc99['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x57d592,_0x2fc9a2){const _0x1bd14b=await fetch(API_BASE+'/tasks/groups/'+_0x57d592+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2fc9a2})});if(!_0x1bd14b['ok']){const _0x276064=await _0x1bd14b['json']();throw new Error(_0x276064['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1bd14b['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x35f2d7){if(!_0x35f2d7)throw new Error('Task\x20ID\x20is\x20required');const _0x40b9bc=await fetch(API_BASE+'/tasks/'+_0x35f2d7+'/comments');if(!_0x40b9bc['ok']){const _0x2b8905=await _0x40b9bc['json']()['catch'](()=>({}));throw new Error(_0x2b8905['error']||'Failed\x20to\x20get\x20comments');}return await _0x40b9bc['json']();},async 'addComment'(_0x4e2c1d,_0xb67962){if(!_0x4e2c1d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb67962)throw new Error('Comment\x20content\x20is\x20required');const _0x29fb0d=await fetch(API_BASE+'/tasks/'+_0x4e2c1d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xb67962})});if(!_0x29fb0d['ok']){const _0x5afb47=await _0x29fb0d['json']()['catch'](()=>({}));throw new Error(_0x5afb47['error']||'Failed\x20to\x20add\x20comment');}return await _0x29fb0d['json']();},async 'updateComment'(_0x98deba,_0x441d67,_0x2273ae){if(!_0x98deba)throw new Error('Task\x20ID\x20is\x20required');if(!_0x441d67)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x2273ae)throw new Error('Comment\x20content\x20is\x20required');const _0x1d892e=await fetch(API_BASE+'/tasks/'+_0x98deba+'/comments/'+_0x441d67,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2273ae})});if(!_0x1d892e['ok']){const _0x4cd2a9=await _0x1d892e['json']()['catch'](()=>({}));throw new Error(_0x4cd2a9['error']||'Failed\x20to\x20update\x20comment');}return await _0x1d892e['json']();},async 'deleteComment'(_0x3a1c42,_0x5ecde4){if(!_0x3a1c42)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ecde4)throw new Error('Comment\x20ID\x20is\x20required');const _0x3a4277=await fetch(API_BASE+'/tasks/'+_0x3a1c42+'/comments/'+_0x5ecde4,{'method':'DELETE'});if(!_0x3a4277['ok']){const _0x2cc968=await _0x3a4277['json']()['catch'](()=>({}));throw new Error(_0x2cc968['error']||'Failed\x20to\x20delete\x20comment');}return await _0x3a4277['json']();},async 'createObjective'(_0x27cff4){const _0x5bf398={'objective':!![],'name':_0x27cff4['name']||'','environment':_0x27cff4['environment']||null,'agents':_0x27cff4['agents']||[],'branches':_0x27cff4['branches']||{},'isPinned':_0x27cff4['isPinned']||![],'parentObjectiveId':_0x27cff4['parentObjectiveId']||null,'env_vars':_0x27cff4['envVars']||{},'parameters':{'instructions':_0x27cff4['instructions']||''},'files':_0x27cff4['files']||[],'jira':_0x27cff4['jira']||null};return this['createTask'](_0x5bf398);},async 'updateObjective'(_0x36a690,_0x4c6ab1,_0x2a2713=[],_0x23b1a2=[]){let _0x59579b,_0x2683bc={};const _0x2187a4={..._0x4c6ab1};_0x23b1a2&&_0x23b1a2['length']>0x0&&(_0x2187a4['removeAttachments']=_0x23b1a2);if(_0x2a2713&&_0x2a2713['length']>0x0){const _0x3fac32=new FormData();for(const [_0x2d0391,_0x14f2ba]of Object['entries'](_0x2187a4)){if(_0x14f2ba==null)continue;typeof _0x14f2ba==='object'?_0x3fac32['append'](_0x2d0391,JSON['stringify'](_0x14f2ba)):_0x3fac32['append'](_0x2d0391,String(_0x14f2ba));}for(const _0x5f568a of _0x2a2713){_0x3fac32['append']('attachments',_0x5f568a);}_0x59579b=_0x3fac32;}else _0x2683bc['Content-Type']='application/json',_0x59579b=JSON['stringify'](_0x2187a4);const _0x4d474d=await fetch(API_BASE+'/tasks/'+_0x36a690,{'method':'PATCH','headers':_0x2683bc,'body':_0x59579b});if(!_0x4d474d['ok']){const _0x858bba=await _0x4d474d['json']();throw new Error(_0x858bba['error']||'Failed\x20to\x20update\x20objective');}return await _0x4d474d['json']();},async 'deleteObjective'(_0x5b05bd){return this['deleteTask'](_0x5b05bd);},async 'launchObjective'(_0x4faae2,_0x213139={}){const _0x1d7040=await fetch(API_BASE+'/tasks/'+_0x4faae2+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x213139)});if(!_0x1d7040['ok']){const _0xb3aa89=await _0x1d7040['json']();throw new Error(_0xb3aa89['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1d7040['json']();},async 'getObjectiveAttachments'(_0x19359b){return this['getTaskAttachments'](_0x19359b);},async 'createJudgeTask'({environment:_0x302472,judgeAgent:_0x10e343,groupId:_0x418b1c,taskIds:_0x142b67,judgeCustomInstructions:_0x5b63ef,isPinned:_0x47aa5b}){const _0x4c58c1=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x302472,'judgeAgent':_0x10e343,'groupId':_0x418b1c,'taskIds':_0x142b67,'judgeCustomInstructions':_0x5b63ef,'isPinned':_0x47aa5b})});if(!_0x4c58c1['ok']){const _0x7c09e1=await _0x4c58c1['json']();throw new Error(_0x7c09e1['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x4c58c1['json']();},async 'getJudgeTasks'(_0x3f0f35){const _0x4774ff=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3f0f35));if(!_0x4774ff['ok']){const _0x4c05de=await _0x4774ff['json']();throw new Error(_0x4c05de['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4774ff['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x2841cb,_0x2e06bb,_0x183ca6=''){const _0x254bb6=await fetch(API_BASE+'/tasks/'+_0x2841cb+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2e06bb,'customPreamble':_0x183ca6})});if(!_0x254bb6['ok']){const _0x3f7117=await _0x254bb6['json']();throw new Error(_0x3f7117['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x254bb6['json']();},async 'getJiraConfig'(){const _0x531aef=await fetch(API_BASE+'/jira/config');if(!_0x531aef['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x531aef['json']();},async 'getJiraIssue'(_0x4d07ce){const _0x1c5ed3=await fetch(API_BASE+'/jira/issues/'+_0x4d07ce);if(!_0x1c5ed3['ok']){const _0x498643=await _0x1c5ed3['json']()['catch'](()=>({}));throw new Error(_0x498643['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1c5ed3['statusText']);}return await _0x1c5ed3['json']();},async 'searchJiraIssues'(_0x48b873,_0x5234ad=0x14){const _0x4acc1e=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x48b873,'maxResults':_0x5234ad})});if(!_0x4acc1e['ok']){const _0x5ac6af=await _0x4acc1e['json']()['catch'](()=>({}));throw new Error(_0x5ac6af['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x4acc1e['statusText']);}return await _0x4acc1e['json']();},async 'postJiraComment'(_0x311a47,_0x30f330){const _0x371365=await fetch(API_BASE+'/jira/issues/'+_0x311a47+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x30f330})});if(!_0x371365['ok']){const _0x4d69d8=await _0x371365['json']()['catch'](()=>({}));throw new Error(_0x4d69d8['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x371365['statusText']);}return await _0x371365['json']();},async 'getJiraComments'(_0x295bce){const _0x2415db=await fetch(API_BASE+'/jira/issues/'+_0x295bce+'/comments');if(!_0x2415db['ok']){const _0x5ea678=await _0x2415db['json']()['catch'](()=>({}));throw new Error(_0x5ea678['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2415db['statusText']);}return await _0x2415db['json']();},async 'promptParameter'({environment:_0x228656,command:_0x512fbb,parser:parser='json'}){const _0x681078=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x228656,'command':_0x512fbb,'parser':parser})});if(!_0x681078['ok']){const _0x3e9d5e=await _0x681078['json']()['catch'](()=>({}));throw new Error(_0x3e9d5e['message']||_0x3e9d5e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x681078['statusText']);}return await _0x681078['json']();},async 'promptParameterStream'(_0x13eb2d,_0x4cb0ec){const _0x59301a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13eb2d)});if(!_0x59301a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x59301a['statusText']);const _0x281ae2=_0x59301a['body']['getReader'](),_0x24c8fa=new TextDecoder();let _0x448425='';return new Promise((_0x18e116,_0x2813d6)=>{const _0x23243f=async()=>{try{const {done:_0x181b37,value:_0x5747bf}=await _0x281ae2['read']();if(_0x181b37)return;_0x448425+=_0x24c8fa['decode'](_0x5747bf,{'stream':!![]});const _0x1d5746=_0x448425['split']('\x0a\x0a');_0x448425=_0x1d5746['pop']()||'';for(const _0x4562ad of _0x1d5746){if(!_0x4562ad['trim']())continue;const _0x2391c1=_0x4562ad['split']('\x0a');let _0xd99147='message',_0xd18977='';for(const _0x30b990 of _0x2391c1){if(_0x30b990['startsWith']('event:'))_0xd99147=_0x30b990['substring'](0x6)['trim']();else _0x30b990['startsWith']('data:')&&(_0xd18977=_0x30b990['substring'](0x5)['trim']());}if(!_0xd18977)continue;try{const _0xc90548=JSON['parse'](_0xd18977);if(_0xd99147==='progress'&&_0x4cb0ec)_0x4cb0ec(_0xc90548['stage'],_0xc90548['message']);else{if(_0xd99147==='result'){_0x18e116(_0xc90548);return;}else{if(_0xd99147==='error'){let _0x172aa0=_0xc90548['message']||_0xc90548['error']||'Prompt\x20command\x20failed';_0xc90548['rawOutput']&&(_0x172aa0+='\x0a\x0aRaw\x20output:\x0a'+_0xc90548['rawOutput']);_0x2813d6(new Error(_0x172aa0));return;}}}}catch(_0x582232){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x582232),console['error']('Event\x20type:',_0xd99147),console['error']('Event\x20data:',_0xd18977),console['error']('First\x20200\x20chars:',_0xd18977['substring'](0x0,0xc8)),_0x2813d6(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x582232['message']+'\x0a\x0aData:\x20'+_0xd18977['substring'](0x0,0x1f4)));return;}}_0x23243f();}catch(_0x1bf04f){_0x2813d6(_0x1bf04f);}};_0x23243f();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x33e7a7){const _0x67832=await fetch(''+API_BASE+_0x33e7a7);if(!_0x67832['ok']){const _0x55ddee=await _0x67832['json']()['catch'](()=>({'error':_0x67832['statusText']})),_0xd59556=new Error(_0x55ddee['error']||_0x55ddee['message']||_0x67832['statusText']);if(_0x55ddee['detail']!==undefined)_0xd59556['detail']=_0x55ddee['detail'];throw _0xd59556;}return await _0x67832['json']();},async 'post'(_0x3afda6,_0xbc1797){const _0x473ba7=await fetch(''+API_BASE+_0x3afda6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbc1797)});if(!_0x473ba7['ok']){const _0x4d33aa=await _0x473ba7['json']()['catch'](()=>({'error':_0x473ba7['statusText']})),_0x563148=new Error(_0x4d33aa['error']||_0x4d33aa['message']||_0x473ba7['statusText']);if(_0x4d33aa['detail']!==undefined)_0x563148['detail']=_0x4d33aa['detail'];throw _0x563148;}return await _0x473ba7['json']();},async 'put'(_0x4b07b1,_0x740cb5){const _0x260e00=await fetch(''+API_BASE+_0x4b07b1,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x740cb5)});if(!_0x260e00['ok']){const _0x548708=await _0x260e00['json']()['catch'](()=>({'error':_0x260e00['statusText']})),_0x14b075=new Error(_0x548708['error']||_0x548708['message']||_0x260e00['statusText']);if(_0x548708['detail']!==undefined)_0x14b075['detail']=_0x548708['detail'];throw _0x14b075;}return await _0x260e00['json']();},async 'delete'(_0x5f075e,_0x5aae92){const _0x5eb781={'method':'DELETE'};_0x5aae92&&(_0x5eb781['headers']={'Content-Type':'application/json'},_0x5eb781['body']=JSON['stringify'](_0x5aae92));const _0xa9bf49=await fetch(''+API_BASE+_0x5f075e,_0x5eb781);if(!_0xa9bf49['ok']){const _0xd1e509=await _0xa9bf49['json']()['catch'](()=>({'error':_0xa9bf49['statusText']})),_0x3e745c=new Error(_0xd1e509['error']||_0xd1e509['message']||_0xa9bf49['statusText']);if(_0xd1e509['detail']!==undefined)_0x3e745c['detail']=_0xd1e509['detail'];throw _0x3e745c;}return await _0xa9bf49['json']();},async 'getSkills'(){const _0x938983=await fetch(API_BASE+'/skills');if(!_0x938983['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x938983['statusText']);return await _0x938983['json']();},async 'getSkill'(_0x1b232d){const _0x2dae9b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b232d));if(!_0x2dae9b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x2dae9b['statusText']);return await _0x2dae9b['json']();},async 'createSkill'(_0x276c1d){const _0x1a189b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x276c1d)});if(!_0x1a189b['ok']){const _0x5b4792=await _0x1a189b['json']()['catch'](()=>({'error':_0x1a189b['statusText']})),_0x4e5e33=new Error(_0x5b4792['error']||_0x5b4792['message']||_0x1a189b['statusText']);if(_0x5b4792['detail']!==undefined)_0x4e5e33['detail']=_0x5b4792['detail'];throw _0x4e5e33;}return await _0x1a189b['json']();},async 'updateSkill'(_0x57ddec,_0x246a1a){const _0x4a3630=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x57ddec),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x246a1a)});if(!_0x4a3630['ok']){const _0xfb87ba=await _0x4a3630['json']()['catch'](()=>({'error':_0x4a3630['statusText']})),_0x4ffe04=new Error(_0xfb87ba['error']||_0xfb87ba['message']||_0x4a3630['statusText']);if(_0xfb87ba['detail']!==undefined)_0x4ffe04['detail']=_0xfb87ba['detail'];throw _0x4ffe04;}return await _0x4a3630['json']();},async 'deleteSkill'(_0xbfa485){const _0x30300d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xbfa485),{'method':'DELETE'});if(!_0x30300d['ok']){const _0x259a20=await _0x30300d['json']()['catch'](()=>({'error':_0x30300d['statusText']})),_0xce8951=new Error(_0x259a20['error']||_0x259a20['message']||_0x30300d['statusText']);if(_0x259a20['detail']!==undefined)_0xce8951['detail']=_0x259a20['detail'];throw _0xce8951;}return await _0x30300d['json']();},async 'getSkillFile'(_0x4f5857,_0x582897){const _0x381b81=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4f5857)+'/files/'+_0x582897);if(!_0x381b81['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x381b81['statusText']);return await _0x381b81['json']();},async 'saveSkillFile'(_0x1f736f,_0x5d8281,_0x434630){const _0x2dbf72=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1f736f)+'/files/'+_0x5d8281,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x434630})});if(!_0x2dbf72['ok']){const _0x4db9ed=await _0x2dbf72['json']()['catch'](()=>({'error':_0x2dbf72['statusText']})),_0x170dd1=new Error(_0x4db9ed['error']||_0x4db9ed['message']||_0x2dbf72['statusText']);if(_0x4db9ed['detail']!==undefined)_0x170dd1['detail']=_0x4db9ed['detail'];throw _0x170dd1;}return await _0x2dbf72['json']();},async 'deleteSkillFile'(_0x5f2acb,_0x2ebbd7){const _0x1f5201=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f2acb)+'/files/'+_0x2ebbd7,{'method':'DELETE'});if(!_0x1f5201['ok']){const _0xc03948=await _0x1f5201['json']()['catch'](()=>({'error':_0x1f5201['statusText']})),_0x46c6ec=new Error(_0xc03948['error']||_0xc03948['message']||_0x1f5201['statusText']);if(_0xc03948['detail']!==undefined)_0x46c6ec['detail']=_0xc03948['detail'];throw _0x46c6ec;}return await _0x1f5201['json']();},async 'pullSkills'(){const _0x4aecd0=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x4aecd0['ok']){const _0x4298bf=await _0x4aecd0['json']()['catch'](()=>({'error':_0x4aecd0['statusText']})),_0x598b70=new Error(_0x4298bf['error']||_0x4298bf['message']||_0x4aecd0['statusText']);if(_0x4298bf['detail']!==undefined)_0x598b70['detail']=_0x4298bf['detail'];throw _0x598b70;}return await _0x4aecd0['json']();},async 'commitSkills'(_0x17ac62,_0x105aa7={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x105aa7,_0x2f1dc4=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x17ac62,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2f1dc4['ok']){const _0x41a62d=await _0x2f1dc4['json']()['catch'](()=>({'error':_0x2f1dc4['statusText']})),_0x525059=new Error(_0x41a62d['error']||_0x41a62d['message']||_0x2f1dc4['statusText']);if(_0x41a62d['detail']!==undefined)_0x525059['detail']=_0x41a62d['detail'];throw _0x525059;}return await _0x2f1dc4['json']();},async 'discardSkillsChanges'(){const _0x107552=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x107552['ok']){const _0x1ca7c9=await _0x107552['json']()['catch'](()=>({'error':_0x107552['statusText']})),_0x4c8756=new Error(_0x1ca7c9['error']||_0x1ca7c9['message']||_0x107552['statusText']);if(_0x1ca7c9['detail']!==undefined)_0x4c8756['detail']=_0x1ca7c9['detail'];throw _0x4c8756;}return await _0x107552['json']();},async 'getSkillCatalog'(){const _0x243248=await fetch(API_BASE+'/external-skills/catalog');if(!_0x243248['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x243248['statusText']);return await _0x243248['json']();},async 'getImportedSkillsRegistry'(){const _0x36087d=await fetch(API_BASE+'/external-skills/registry');if(!_0x36087d['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x36087d['statusText']);return await _0x36087d['json']();},async 'importCatalogSkill'(_0x2a743a){const _0x1d7251=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2a743a})});if(!_0x1d7251['ok']){const _0x577bda=await _0x1d7251['json']()['catch'](()=>({'error':_0x1d7251['statusText']})),_0x4f2785=new Error(_0x577bda['error']||_0x577bda['message']||_0x1d7251['statusText']);if(_0x577bda['detail']!==undefined)_0x4f2785['detail']=_0x577bda['detail'];throw _0x4f2785;}return await _0x1d7251['json']();},async 'importSkillFromGit'(_0x4c3389,_0x9fdfae,_0x3399b6='main',_0x1b7416=null){const _0x1f7b59=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4c3389,'skillPath':_0x9fdfae,'branch':_0x3399b6,'skillId':_0x1b7416})});if(!_0x1f7b59['ok']){const _0x17a00f=await _0x1f7b59['json']()['catch'](()=>({'error':_0x1f7b59['statusText']})),_0x1fe6cd=new Error(_0x17a00f['error']||_0x17a00f['message']||_0x1f7b59['statusText']);if(_0x17a00f['detail']!==undefined)_0x1fe6cd['detail']=_0x17a00f['detail'];throw _0x1fe6cd;}return await _0x1f7b59['json']();},async 'probeMarketplace'(_0x5a89c8,_0x45726c='main'){const _0x192f56=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5a89c8,'branch':_0x45726c})});if(!_0x192f56['ok']){const _0x4fcfbe=await _0x192f56['json']()['catch'](()=>({'error':_0x192f56['statusText']})),_0x5028d0=new Error(_0x4fcfbe['error']||_0x4fcfbe['message']||_0x192f56['statusText']);if(_0x4fcfbe['detail']!==undefined)_0x5028d0['detail']=_0x4fcfbe['detail'];throw _0x5028d0;}return await _0x192f56['json']();},async 'importMarketplaceBundle'(_0x14f744,_0x2feb4d,_0x3d3068,_0x24e9b9=null){const _0x57e06c=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14f744,'branch':_0x2feb4d,'bundleId':_0x3d3068,'selectedSkills':_0x24e9b9})});if(!_0x57e06c['ok']){const _0x502b02=await _0x57e06c['json']()['catch'](()=>({'error':_0x57e06c['statusText']})),_0x1cb7b1=new Error(_0x502b02['error']||_0x502b02['message']||_0x57e06c['statusText']);if(_0x502b02['detail']!==undefined)_0x1cb7b1['detail']=_0x502b02['detail'];throw _0x1cb7b1;}return await _0x57e06c['json']();},async 'importSkillFromFolder'(_0xda63a2,_0x3300d6=null){const _0x5639f7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xda63a2,'skillId':_0x3300d6})});if(!_0x5639f7['ok']){const _0x7dc0dd=await _0x5639f7['json']()['catch'](()=>({'error':_0x5639f7['statusText']})),_0x4f7d46=new Error(_0x7dc0dd['error']||_0x7dc0dd['message']||_0x5639f7['statusText']);if(_0x7dc0dd['detail']!==undefined)_0x4f7d46['detail']=_0x7dc0dd['detail'];throw _0x4f7d46;}return await _0x5639f7['json']();},async 'importSkillFromNpm'(_0x3d963d,_0xcc98ba='latest',_0x58e403=null,_0x35af46=null){const _0x3e2d24=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3d963d,'version':_0xcc98ba,'skillId':_0x58e403,'registry':_0x35af46})});if(!_0x3e2d24['ok']){const _0x55c88e=await _0x3e2d24['json']()['catch'](()=>({'error':_0x3e2d24['statusText']})),_0x40b0a8=new Error(_0x55c88e['error']||_0x55c88e['message']||_0x3e2d24['statusText']);if(_0x55c88e['detail']!==undefined)_0x40b0a8['detail']=_0x55c88e['detail'];throw _0x40b0a8;}return await _0x3e2d24['json']();},async 'checkSkillUpdates'(_0x3a32dd){const _0x52f482=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3a32dd)+'/check-updates',{'method':'POST'});if(!_0x52f482['ok']){const _0x2cf308=await _0x52f482['json']()['catch'](()=>({'error':_0x52f482['statusText']})),_0x2d3d36=new Error(_0x2cf308['error']||_0x2cf308['message']||_0x52f482['statusText']);if(_0x2cf308['detail']!==undefined)_0x2d3d36['detail']=_0x2cf308['detail'];throw _0x2d3d36;}return await _0x52f482['json']();},async 'updateExternalSkill'(_0xafc721){const _0x44209d=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xafc721)+'/update',{'method':'POST'});if(!_0x44209d['ok']){const _0x2a3a0d=await _0x44209d['json']()['catch'](()=>({'error':_0x44209d['statusText']})),_0x5243a9=new Error(_0x2a3a0d['error']||_0x2a3a0d['message']||_0x44209d['statusText']);if(_0x2a3a0d['detail']!==undefined)_0x5243a9['detail']=_0x2a3a0d['detail'];throw _0x5243a9;}return await _0x44209d['json']();},async 'updateSkillFlags'(_0x6c5183,_0x4b9199){const _0x19a72f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x6c5183)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4b9199})});if(!_0x19a72f['ok']){const _0x3f2937=await _0x19a72f['json']()['catch'](()=>({'error':_0x19a72f['statusText']})),_0x1ddf5e=new Error(_0x3f2937['error']||_0x3f2937['message']||_0x19a72f['statusText']);if(_0x3f2937['detail']!==undefined)_0x1ddf5e['detail']=_0x3f2937['detail'];throw _0x1ddf5e;}return await _0x19a72f['json']();},async 'removeFromImportedRegistry'(_0x17f781){const _0x2eb0e3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x17f781)+'/registry',{'method':'DELETE'});if(!_0x2eb0e3['ok']){const _0x1f953f=await _0x2eb0e3['json']()['catch'](()=>({'error':_0x2eb0e3['statusText']})),_0x47f809=new Error(_0x1f953f['error']||_0x1f953f['message']||_0x2eb0e3['statusText']);if(_0x1f953f['detail']!==undefined)_0x47f809['detail']=_0x1f953f['detail'];throw _0x47f809;}return await _0x2eb0e3['json']();},async 'getTeams'(){const _0x22cd45=await fetch(API_BASE+'/teams');if(!_0x22cd45['ok']){const _0x4545ab=await _0x22cd45['json']()['catch'](()=>({'message':_0x22cd45['statusText']}));throw new Error(_0x4545ab['message']||'Failed\x20to\x20get\x20teams');}return await _0x22cd45['json']();},async 'getTeam'(_0x2c3ce3){const _0x167c78=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2c3ce3));if(!_0x167c78['ok']){const _0x3fc8c5=await _0x167c78['json']()['catch'](()=>({'message':_0x167c78['statusText']}));throw new Error(_0x3fc8c5['message']||'Failed\x20to\x20get\x20team');}return await _0x167c78['json']();},async 'createTeam'(_0x24ed46){const _0x489c79=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24ed46)});if(!_0x489c79['ok']){const _0x5d09f3=await _0x489c79['json']()['catch'](()=>({'message':_0x489c79['statusText']}));throw new Error(_0x5d09f3['message']||'Failed\x20to\x20create\x20team');}return await _0x489c79['json']();},async 'updateTeam'(_0x36c4f3,_0x163fa9){const _0x38ade7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x36c4f3),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x163fa9)});if(!_0x38ade7['ok']){const _0x168902=await _0x38ade7['json']()['catch'](()=>({'message':_0x38ade7['statusText']}));throw new Error(_0x168902['message']||'Failed\x20to\x20update\x20team');}return await _0x38ade7['json']();},async 'deleteTeam'(_0x5bf272){const _0xdbe280=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5bf272),{'method':'DELETE'});if(!_0xdbe280['ok']){const _0x56f7cf=await _0xdbe280['json']()['catch'](()=>({'message':_0xdbe280['statusText']}));throw new Error(_0x56f7cf['message']||'Failed\x20to\x20delete\x20team');}return await _0xdbe280['json']();},async 'addTeamMember'(_0x26db57,_0x3f7c80){const _0x42a88e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x26db57)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3f7c80})});if(!_0x42a88e['ok']){const _0x487db4=await _0x42a88e['json']()['catch'](()=>({'message':_0x42a88e['statusText']}));throw new Error(_0x487db4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x42a88e['json']();},async 'removeTeamMember'(_0x226747,_0x85fec1){const _0x2c854f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x226747)+'/members/'+encodeURIComponent(_0x85fec1),{'method':'DELETE'});if(!_0x2c854f['ok']){const _0x36d4d2=await _0x2c854f['json']()['catch'](()=>({'message':_0x2c854f['statusText']}));throw new Error(_0x36d4d2['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x2c854f['json']();},async 'getBindings'(_0x483a01={}){const _0x50e384=new URLSearchParams();if(_0x483a01['resource_type'])_0x50e384['set']('resource_type',_0x483a01['resource_type']);if(_0x483a01['resource_id'])_0x50e384['set']('resource_id',_0x483a01['resource_id']);if(_0x483a01['subject_type'])_0x50e384['set']('subject_type',_0x483a01['subject_type']);if(_0x483a01['subject_id'])_0x50e384['set']('subject_id',_0x483a01['subject_id']);const _0xb48a16=_0x50e384['toString'](),_0x8fa2f8=await fetch(API_BASE+'/bindings'+(_0xb48a16?'?'+_0xb48a16:''));if(!_0x8fa2f8['ok']){const _0x55f404=await _0x8fa2f8['json']()['catch'](()=>({'message':_0x8fa2f8['statusText']}));throw new Error(_0x55f404['message']||'Failed\x20to\x20get\x20bindings');}return await _0x8fa2f8['json']();},async 'createBinding'(_0x4a625b){const _0x50304b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a625b)});if(!_0x50304b['ok']){const _0x58b335=await _0x50304b['json']()['catch'](()=>({'message':_0x50304b['statusText']}));throw new Error(_0x58b335['message']||'Failed\x20to\x20create\x20binding');}return await _0x50304b['json']();},async 'updateBinding'(_0x33305b,_0x59a9e4){const _0x3cf0cd=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x33305b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59a9e4)});if(!_0x3cf0cd['ok']){const _0x2d8426=await _0x3cf0cd['json']()['catch'](()=>({'message':_0x3cf0cd['statusText']}));throw new Error(_0x2d8426['message']||'Failed\x20to\x20update\x20binding');}return await _0x3cf0cd['json']();},async 'deleteBinding'(_0x465ee2){const _0x3086ac=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x465ee2),{'method':'DELETE'});if(!_0x3086ac['ok']){const _0x1da9c1=await _0x3086ac['json']()['catch'](()=>({'message':_0x3086ac['statusText']}));throw new Error(_0x1da9c1['message']||'Failed\x20to\x20delete\x20binding');}return await _0x3086ac['json']();},async 'getRoleDefinitions'(){const _0x1254d6=await fetch(API_BASE+'/roles');if(!_0x1254d6['ok']){const _0x37311a=await _0x1254d6['json']()['catch'](()=>({'message':_0x1254d6['statusText']}));throw new Error(_0x37311a['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1254d6['json']();},async 'getRoleDefinition'(_0x15cb64){const _0x3e1962=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x15cb64));if(!_0x3e1962['ok']){const _0x4499f8=await _0x3e1962['json']()['catch'](()=>({'message':_0x3e1962['statusText']}));throw new Error(_0x4499f8['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3e1962['json']();},async 'createRoleDefinition'(_0xd1bfce){const _0x3754ce=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd1bfce)});if(!_0x3754ce['ok']){const _0x527db2=await _0x3754ce['json']()['catch'](()=>({'message':_0x3754ce['statusText']}));throw new Error(_0x527db2['message']||_0x527db2['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3754ce['json']();},async 'updateRoleDefinition'(_0x10e5ca,_0x177dd5){const _0x355242=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x10e5ca),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x177dd5)});if(!_0x355242['ok']){const _0x511225=await _0x355242['json']()['catch'](()=>({'message':_0x355242['statusText']}));throw new Error(_0x511225['message']||_0x511225['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x355242['json']();},async 'deleteRoleDefinition'(_0x63e646){const _0x533281=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x63e646),{'method':'DELETE'});if(!_0x533281['ok']){const _0x5bdc9f=await _0x533281['json']()['catch'](()=>({'message':_0x533281['statusText']}));throw new Error(_0x5bdc9f['message']||_0x5bdc9f['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x533281['json']();},async 'getAvailablePermissions'(){const _0x2e0841=await fetch(API_BASE+'/roles/available-permissions');if(!_0x2e0841['ok']){const _0x35854b=await _0x2e0841['json']()['catch'](()=>({'message':_0x2e0841['statusText']}));throw new Error(_0x35854b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x2e0841['json']();},async 'getGitProviderAllowedTeams'(_0x264db8){const _0x27d8f0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x264db8)+'/allowed-teams');if(!_0x27d8f0['ok']){const _0x1bf7c8=await _0x27d8f0['json']()['catch'](()=>({'message':_0x27d8f0['statusText']}));throw new Error(_0x1bf7c8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x27d8f0['json']();},async 'setGitProviderAllowedTeams'(_0x4998f3,_0x52bae5){const _0x244732=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4998f3)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x52bae5})});if(!_0x244732['ok']){const _0x57da88=await _0x244732['json']()['catch'](()=>({'message':_0x244732['statusText']}));throw new Error(_0x57da88['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x244732['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 _0x4c2902=toastState['baseBottom'];toastState['toasts']['forEach'](_0xe35c97=>{_0xe35c97['el']['style']['bottom']=_0x4c2902+'px';const _0x4c0110=_0xe35c97['el']['offsetHeight']||toastState['defaultHeight'];_0x4c2902+=_0x4c0110+toastState['gap'];});});}function removeToastById(_0x365ae5){const _0xb4b21b=toastState['toasts']['findIndex'](_0x54515d=>_0x54515d['id']===_0x365ae5);if(_0xb4b21b===-0x1)return;const _0xa9b087=toastState['toasts'][_0xb4b21b];if(_0xa9b087['timeoutId'])clearTimeout(_0xa9b087['timeoutId']);_0xa9b087['el']['classList']['remove']('show'),setTimeout(()=>_0xa9b087['el']['remove'](),0x12c),toastState['toasts']['splice'](_0xb4b21b,0x1),repositionAllToasts();}function registerToast(_0x1cd0b4){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1cd0b4),repositionAllToasts(),_0x1cd0b4['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(_0x1b824e){if(_0x1b824e===null||_0x1b824e===undefined)return'';return String(_0x1b824e)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x2985b2,_0x1d7728){if(_0x2985b2&&typeof _0x2985b2==='object'&&!Array['isArray'](_0x2985b2))return{'code':typeof _0x2985b2['text']==='string'?_0x2985b2['text']:'','language':typeof _0x2985b2['lang']==='string'?_0x2985b2['lang']:''};return{'code':typeof _0x2985b2==='string'?_0x2985b2:'','language':typeof _0x1d7728==='string'?_0x1d7728:''};}function buildMermaidBlock(_0x1ceffc){const _0x31e826=String(_0x1ceffc||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x31e826))+'\x22>'+escapeHtmlValue(_0x31e826)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x46c478=new marked['Renderer'](),_0x1e6556=_0x46c478['code']['bind'](_0x46c478);return _0x46c478['code']=function(_0x351a50,_0x3328a3,..._0x3034ee){const {code:_0x5ecec5,language:_0x449464}=getMarkdownCodeBlockPayload(_0x351a50,_0x3328a3),_0x16508c=String(_0x449464||'')['trim']()['toLowerCase']();if(_0x16508c==='mermaid')return buildMermaidBlock(_0x5ecec5);const _0x3c08db=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x3c08db&&_0x16508c)try{const _0x1fc544=_0x3c08db['getLanguage'](_0x16508c)?_0x16508c:'plaintext',_0x3dc6b2=_0x3c08db['highlight'](_0x5ecec5,{'language':_0x1fc544})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x16508c)+'\x22>'+_0x3dc6b2+'</code></pre>';}catch(_0x1dc94a){console['error']('Syntax\x20highlighting\x20error:',_0x1dc94a);}return _0x1e6556(_0x351a50,_0x3328a3,..._0x3034ee);},sharedMarkedRenderer=_0x46c478,_0x46c478;}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 _0x4a6c92=window['mermaid'];if(!_0x4a6c92||typeof _0x4a6c92['initialize']!=='function')return _0x4a6c92||null;return _0x4a6c92['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4a6c92;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x119e12,_0x39469f)=>{const _0x3ce292=()=>_0x119e12(configureMermaidInstance()),_0x3f6524=()=>{mermaidLoadPromise=null,_0x39469f(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x1b92cd=document['getElementById'](MERMAID_SCRIPT_ID);!_0x1b92cd&&(_0x1b92cd=document['createElement']('script'),_0x1b92cd['id']=MERMAID_SCRIPT_ID,_0x1b92cd['src']=MERMAID_SCRIPT_SRC,_0x1b92cd['async']=!![],document['head']['appendChild'](_0x1b92cd));if(window['mermaid']){_0x3ce292();return;}_0x1b92cd['addEventListener']('load',_0x3ce292,{'once':!![]}),_0x1b92cd['addEventListener']('error',_0x3f6524,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x11df7a){const _0x4ed22f=_0x11df7a['getAttribute']('data-mermaid-source');if(!_0x4ed22f)return null;let _0xad0cd3=_0x4ed22f;try{_0xad0cd3=decodeURIComponent(_0x4ed22f);}catch{}return _0x11df7a['textContent']=_0xad0cd3,_0x11df7a['removeAttribute']('data-processed'),_0x11df7a['removeAttribute']('aria-roledescription'),_0x11df7a['removeAttribute']('role'),_0x11df7a['removeAttribute']('aria-label'),_0xad0cd3;}function collectMermaidNodes(_0x404ce5,_0x45460a){if(!(_0x404ce5 instanceof Element))return;_0x404ce5['matches']('.mermaid[data-mermaid-source]')&&_0x45460a['add'](_0x404ce5),_0x404ce5['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x272954=>{_0x45460a['add'](_0x272954);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x54bb95=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x170cfe=>setTimeout(_0x170cfe,0x0);_0x54bb95(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0xd07517=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0xd07517);});});}function queueMermaidRender(_0x14dfad){const _0x9c4461=new Set();_0x14dfad instanceof Document||_0x14dfad instanceof DocumentFragment?_0x14dfad['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x207cae=>_0x9c4461['add'](_0x207cae)):collectMermaidNodes(_0x14dfad,_0x9c4461);if(_0x9c4461['size']===0x0)return;_0x9c4461['forEach'](_0x47085d=>pendingMermaidNodes['add'](_0x47085d)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5290a9=Array['from'](pendingMermaidNodes)['filter'](_0x3653a0=>_0x3653a0['isConnected']);pendingMermaidNodes['clear']();if(_0x5290a9['length']===0x0)return;const _0x4c83ba=await loadMermaid();if(!_0x4c83ba)return;configureMermaidInstance();const _0x18124f=getMermaidTheme();for(const _0x1075ac of _0x5290a9){const _0x386d42=_0x1075ac['getAttribute']('data-mermaid-source');if(!_0x386d42)continue;const _0x3b9a7d=_0x1075ac['getAttribute']('data-processed')==='true';if(_0x3b9a7d&&_0x1075ac['dataset']['mermaidTheme']===_0x18124f)continue;restoreMermaidSource(_0x1075ac);try{if(typeof _0x4c83ba['run']==='function')await _0x4c83ba['run']({'nodes':[_0x1075ac]});else typeof _0x4c83ba['init']==='function'&&_0x4c83ba['init'](undefined,[_0x1075ac]);_0x1075ac['dataset']['mermaidTheme']=_0x18124f,delete _0x1075ac['dataset']['mermaidError'];}catch(_0x3e8334){console['error']('Mermaid\x20render\x20failed:',_0x3e8334),restoreMermaidSource(_0x1075ac),_0x1075ac['dataset']['mermaidError']='true',delete _0x1075ac['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x13f2a3=>{_0x13f2a3['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x13f2a3);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x51676f=>{_0x51676f['forEach'](_0x255a9d=>{_0x255a9d['addedNodes']['forEach'](_0x43be1e=>{_0x43be1e['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x43be1e);});});}),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'(_0x16336a){const _0x28c4e6=new Date(_0x16336a),_0x41d454=new Date(),_0x6a2b68=_0x41d454-_0x28c4e6,_0x4d2cd2=Math['floor'](_0x6a2b68/0x3e8),_0x3f2c63=Math['floor'](_0x4d2cd2/0x3c),_0x3da884=Math['floor'](_0x3f2c63/0x3c),_0xa2990f=Math['floor'](_0x3da884/0x18);if(_0x4d2cd2<0x3c)return'now';if(_0x3f2c63<0x3c)return _0x3f2c63+'m\x20ago';if(_0x3da884<0x18)return _0x3da884+'h\x20ago';return _0xa2990f+'d\x20ago';},'getStatusIcon'(_0x163a84){switch(_0x163a84){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x14e172){switch(_0x14e172){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'(_0x5becba,_0x1ebce1=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x59353b={};_0x59353b['text/plain']=new Blob([_0x5becba],{'type':'text/plain'});_0x1ebce1&&(_0x59353b['text/html']=new Blob([_0x1ebce1],{'type':'text/html'}));const _0x4b4806=new ClipboardItem(_0x59353b);return await navigator['clipboard']['write']([_0x4b4806]),!![];}catch(_0x1ecb97){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1ecb97);}try{const _0x35fc34=_0x3e6de0=>{_0x3e6de0['preventDefault'](),_0x3e6de0['clipboardData']['setData']('text/plain',_0x5becba),_0x1ebce1&&_0x3e6de0['clipboardData']['setData']('text/html',_0x1ebce1);};document['addEventListener']('copy',_0x35fc34);const _0x228e81=document['execCommand']('copy');document['removeEventListener']('copy',_0x35fc34);if(_0x228e81)return!![];}catch(_0x493166){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x493166);}try{const _0x55578b=document['createElement']('textarea');_0x55578b['value']=_0x5becba,_0x55578b['style']['position']='fixed',_0x55578b['style']['opacity']='0',_0x55578b['style']['pointerEvents']='none',document['body']['appendChild'](_0x55578b),_0x55578b['select']();const _0x1ee14e=document['execCommand']('copy');return document['body']['removeChild'](_0x55578b),_0x1ee14e;}catch(_0x426342){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x426342),![];}},'showToast'(_0xce16fb,_0x47b95c='info'){const _0x5a27e5=getNextToastId(),_0x5688df=document['createElement']('div');_0x5688df['className']='toast\x20toast-'+_0x47b95c,_0x5688df['textContent']=_0xce16fb,_0x5688df['dataset']['toastId']=_0x5a27e5,document['body']['appendChild'](_0x5688df);const _0x41ff8b=_0x47b95c==='error'?0x2710:0xbb8,_0x126bb3=setTimeout(()=>{removeToastById(_0x5a27e5);},_0x41ff8b),_0x337ce0={'id':_0x5a27e5,'el':_0x5688df,'timeoutId':_0x126bb3};return registerToast(_0x337ce0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5688df['classList']['add']('show');});}),_0x5a27e5;},'showError'(_0x38fb8c){console['error'](_0x38fb8c);const _0x49cfa7=typeof _0x38fb8c==='string'?_0x38fb8c:_0x38fb8c['message']||'An\x20error\x20occurred';this['showToast'](_0x49cfa7,'error');},'showSuccess'(_0x45287d){this['showToast'](_0x45287d,'success');},'capitalize'(_0x4a9345){if(!_0x4a9345)return'';return _0x4a9345['charAt'](0x0)['toUpperCase']()+_0x4a9345['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x9ebc86){return escapeHtmlValue(_0x9ebc86);},'ansiToHtml'(_0x39f09b){if(_0x39f09b===null||_0x39f09b===undefined)return'';let _0x1a9063=this['escapeHtml'](_0x39f09b);const _0x35a5fe={'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'},_0x465707={'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 _0x349b19=0x0;return _0x1a9063=_0x1a9063['replace'](/\x1b\[([0-9;]*)m/g,(_0x16bd4f,_0x5c0c24)=>{if(!_0x5c0c24||_0x5c0c24==='0'){const _0x489f53='</span>'['repeat'](_0x349b19);return _0x349b19=0x0,_0x489f53;}const _0x5a2900=_0x5c0c24['split'](';'),_0x425f48=[];for(const _0x2c4b53 of _0x5a2900){if(_0x2c4b53==='1')_0x425f48['push']('font-weight:bold');else{if(_0x2c4b53==='2')_0x425f48['push']('opacity:0.7');else{if(_0x2c4b53==='3')_0x425f48['push']('font-style:italic');else{if(_0x2c4b53==='4')_0x425f48['push']('text-decoration:underline');else{if(_0x2c4b53==='9')_0x425f48['push']('text-decoration:line-through');else{if(_0x35a5fe[_0x2c4b53])_0x425f48['push']('color:'+_0x35a5fe[_0x2c4b53]);else{if(_0x465707[_0x2c4b53])_0x425f48['push']('background-color:'+_0x465707[_0x2c4b53]);}}}}}}}if(_0x425f48['length']>0x0)return _0x349b19++,'<span\x20style=\x22'+_0x425f48['join'](';')+'\x22>';return'';}),_0x1a9063+='</span>'['repeat'](_0x349b19),_0x1a9063=_0x1a9063['replace'](/\\u001b\[([0-9;]*)m/g,(_0x29d009,_0x1321a1)=>{if(!_0x1321a1||_0x1321a1==='0')return'';const _0x517131=_0x1321a1['split'](';'),_0x4c752c=[];for(const _0x481e49 of _0x517131){if(_0x481e49==='1')_0x4c752c['push']('font-weight:bold');else{if(_0x35a5fe[_0x481e49])_0x4c752c['push']('color:'+_0x35a5fe[_0x481e49]);else{if(_0x465707[_0x481e49])_0x4c752c['push']('background-color:'+_0x465707[_0x481e49]);}}}if(_0x4c752c['length']>0x0)return'<span\x20style=\x22'+_0x4c752c['join'](';')+'\x22>';return'';}),_0x1a9063;},'showModal'({title:_0x4199ad,content:_0x15f00e,buttons:buttons=[]}){const _0x3738f9='\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'](_0x4199ad)+'</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'+_0x15f00e+'\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']((_0x19ce4d,_0xd02056)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x19ce4d['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xd02056+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x19ce4d['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',_0x6fc013=document['createElement']('div');_0x6fc013['id']='utils-modal',_0x6fc013['className']='modal',_0x6fc013['innerHTML']=_0x3738f9,document['body']['appendChild'](_0x6fc013);const _0x353689=document['getElementById']('utils-modal-close');_0x353689&&_0x353689['addEventListener']('click',()=>this['hideModal']());const _0x35dd73=_0x6fc013['querySelectorAll']('[data-btn-index]');_0x35dd73['forEach'](_0x5a80f3=>{const _0x4be12b=parseInt(_0x5a80f3['dataset']['btnIndex']);buttons[_0x4be12b]?.['onClick']&&_0x5a80f3['addEventListener']('click',buttons[_0x4be12b]['onClick']);});const _0x445e26=document['getElementById']('utils-modal-overlay');_0x445e26&&_0x445e26['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x333619=document['getElementById']('utils-modal');_0x333619&&_0x333619['remove']();},'parseKeyValuePairs'(_0x1b1de3){const _0x17454d={};if(!_0x1b1de3)return _0x17454d;return _0x1b1de3['split'](/\r?\n/)['map'](_0x54316b=>_0x54316b['trim']())['filter'](Boolean)['forEach'](_0x3d2731=>{const _0x4f31dc=_0x3d2731['indexOf']('=');if(_0x4f31dc>0x0){const _0x3082c1=_0x3d2731['slice'](0x0,_0x4f31dc)['trim'](),_0x37d149=_0x3d2731['slice'](_0x4f31dc+0x1)['trim']();if(_0x3082c1)_0x17454d[_0x3082c1]=_0x37d149;}}),_0x17454d;},'debounce'(_0x3cf860,_0x25fe1a=0xfa){let _0x531729=null;return(..._0x2605d0)=>{clearTimeout(_0x531729),_0x531729=setTimeout(()=>_0x3cf860['apply'](this,_0x2605d0),_0x25fe1a);};},'formatTimestamp'(_0x2f13ea){if(!_0x2f13ea)return'N/A';const _0x28c8c1=new Date(_0x2f13ea);return _0x28c8c1['toLocaleDateString']()+'\x20'+_0x28c8c1['toLocaleTimeString']();},'getQueryParams'(){const _0x191862=new URLSearchParams(window['location']['search']),_0x40f05c={};for(const [_0x510b13,_0x24e2d0]of _0x191862){_0x40f05c[_0x510b13]=_0x24e2d0;}return _0x40f05c;},'formatDuration'(_0x5a08aa,_0x1d7be8){if(!_0x5a08aa)return'N/A';const _0x31d62f=new Date(_0x5a08aa),_0x50aabe=_0x1d7be8?new Date(_0x1d7be8):new Date(),_0x216bea=_0x50aabe-_0x31d62f;if(_0x216bea<0x0)return'0s';const _0x560328=Math['floor'](_0x216bea/0x3e8),_0x5553ab=Math['floor'](_0x560328/0x3c),_0x5572ac=Math['floor'](_0x5553ab/0x3c),_0x581fa4=Math['floor'](_0x5572ac/0x18);if(_0x560328<0x3c)return _0x560328+'s';if(_0x5553ab<0x3c)return _0x5553ab+'m\x20'+_0x560328%0x3c+'s';if(_0x5572ac<0x18)return _0x5572ac+'h\x20'+_0x5553ab%0x3c+'m\x20'+_0x560328%0x3c+'s';return _0x581fa4+'d\x20'+_0x5572ac%0x18+'h\x20'+_0x5553ab%0x3c+'m';},'renderMarkdown'(_0x5a0d07,_0x236ad7={}){if(!_0x5a0d07)return'';_0x5a0d07=this['rewriteAttachmentLinks'](_0x5a0d07,_0x236ad7),_0x5a0d07=this['rewriteColorSyntax'](_0x5a0d07);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5a0d07,_0x236ad7);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5a0d07);}catch(_0x153d30){return console['error']('Markdown\x20parsing\x20error:',_0x153d30),this['renderMarkdownFallback'](_0x5a0d07,_0x236ad7);}},'rewriteAttachmentLinks'(_0x450913,_0x3f9f99={}){const _0x9159e2=typeof _0x3f9f99['resolveAttachmentUrl']==='function'?_0x3f9f99['resolveAttachmentUrl']:_0x3f9f99['taskId']?_0x31fde8=>API_BASE+'/tasks/'+_0x3f9f99['taskId']+'/attachments/'+encodeURIComponent(_0x31fde8):null;if(!_0x9159e2)return _0x450913;return String(_0x450913)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x1c2d94,_0x2e06a9)=>{const _0x11dedf=String(_0x2e06a9||'')['trim']();if(!_0x11dedf)return _0x1c2d94;let _0x1c6b7f=_0x11dedf;try{_0x1c6b7f=decodeURIComponent(_0x11dedf);}catch{}const _0x10cb90=_0x9159e2(_0x1c6b7f);if(!_0x10cb90)return _0x1c2d94;return']('+_0x10cb90+')';});},'rewriteColorSyntax'(_0x42e86a){if(!_0x42e86a)return _0x42e86a;return String(_0x42e86a)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x166b6a,_0x353b06,_0x566358)=>{const _0x424434=this['rewriteColorSyntax'](_0x566358);return'<span\x20style=\x22color:\x20'+_0x353b06+'\x22>'+_0x424434+'</span>';});},'renderMarkdownFallback'(_0x3b1c15,_0x53e05c={}){if(!_0x3b1c15)return'';_0x3b1c15=_0x3b1c15['replace'](/\r\n/g,'\x0a'),_0x3b1c15=_0x3b1c15['replace'](/\r/g,'\x0a'),_0x3b1c15=this['rewriteAttachmentLinks'](_0x3b1c15,_0x53e05c);let _0x4075ff=this['escapeHtml'](_0x3b1c15);return _0x4075ff=_0x4075ff['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x4075ff=_0x4075ff['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x4075ff=_0x4075ff['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x4075ff=_0x4075ff['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x4075ff=_0x4075ff['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x4075ff=_0x4075ff['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x4075ff=_0x4075ff['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x4075ff=_0x4075ff['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x4075ff=_0x4075ff['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x4075ff=_0x4075ff['replace'](/\n\n/g,'</p><p>'),_0x4075ff=_0x4075ff['replace'](/\n/g,'<br>'),'<p>'+_0x4075ff+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x305bbc=new Uint8Array(0x10);crypto['getRandomValues'](_0x305bbc),_0x305bbc[0x6]=_0x305bbc[0x6]&0xf|0x40,_0x305bbc[0x8]=_0x305bbc[0x8]&0x3f|0x80;const _0x210ab6=Array['from'](_0x305bbc,_0x4ed157=>_0x4ed157['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x210ab6['slice'](0x0,0x8)+'-'+_0x210ab6['slice'](0x8,0xc)+'-'+_0x210ab6['slice'](0xc,0x10)+'-'+_0x210ab6['slice'](0x10,0x14)+'-'+_0x210ab6['slice'](0x14);}};export class CustomSelect{constructor(_0x59d31d,_0x4f81f3={}){this['nativeSelect']=_0x59d31d,this['options']=_0x4f81f3,this['isOpen']=![],this['selectedValue']=_0x59d31d['value']||'',this['searchable']=_0x4f81f3['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4604f9=document['createElement']('div');_0x4604f9['className']='custom-select';const _0x5198fd=document['createElement']('div');_0x5198fd['className']='custom-select-trigger',_0x5198fd['setAttribute']('tabindex','0'),_0x5198fd['setAttribute']('role','button'),_0x5198fd['setAttribute']('aria-haspopup','listbox');const _0x1805e1=document['createElement']('span');_0x1805e1['className']='custom-select-trigger-text';const _0x74180c=document['createElement']('span');_0x74180c['className']='custom-select-arrow',_0x74180c['textContent']='▼',_0x5198fd['appendChild'](_0x1805e1),_0x5198fd['appendChild'](_0x74180c);const _0x1b8c53=document['createElement']('div');_0x1b8c53['className']='custom-select-dropdown',_0x1b8c53['setAttribute']('role','listbox');if(this['searchable']){const _0x129bf2=document['createElement']('div');_0x129bf2['className']='custom-select-search';const _0x2ef2f0=document['createElement']('input');_0x2ef2f0['type']='text',_0x2ef2f0['className']='custom-select-search-input',_0x2ef2f0['placeholder']='Type\x20to\x20search...',_0x2ef2f0['setAttribute']('aria-label','Search\x20options'),_0x2ef2f0['addEventListener']('input',_0x328b7b=>{this['searchQuery']=_0x328b7b['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2ef2f0['addEventListener']('keydown',_0x18150a=>{if(_0x18150a['key']==='Escape')_0x18150a['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x18150a['key']==='Enter'){_0x18150a['preventDefault'](),_0x18150a['stopPropagation']();const _0x2d9640=_0x1b8c53['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2d9640){const _0x2ae8c7=_0x2d9640['getAttribute']('data-value');this['select'](_0x2ae8c7);}}}}),_0x129bf2['appendChild'](_0x2ef2f0),_0x1b8c53['appendChild'](_0x129bf2),this['searchInput']=_0x2ef2f0;}const _0x1ef40b=document['createElement']('div');_0x1ef40b['className']='custom-select-options',_0x1b8c53['appendChild'](_0x1ef40b),_0x4604f9['appendChild'](_0x5198fd),_0x4604f9['appendChild'](_0x1b8c53),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4604f9,this['nativeSelect']),this['wrapper']=_0x4604f9,this['trigger']=_0x5198fd,this['triggerText']=_0x1805e1,this['dropdown']=_0x1b8c53,this['optionsContainer']=_0x1ef40b,_0x5198fd['addEventListener']('click',()=>this['toggle']()),_0x5198fd['addEventListener']('keydown',_0x259e87=>this['handleKeydown'](_0x259e87)),document['addEventListener']('click',_0x72a8d8=>{!_0x4604f9['contains'](_0x72a8d8['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x27a59e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x27a59e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2b9eea=new MutationObserver(()=>{this['updateDisabledState']();});_0x2b9eea['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x3d6805=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x3d6805['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x395704=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x395704),this['trigger']['setAttribute']('aria-disabled',_0x395704?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x395704?'-1':'0'),_0x395704&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x4b1c6a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5bc821=_0x4b1c6a['filter'](_0x42bae6=>!_0x42bae6['disabled']&&!_0x42bae6['hidden']);_0x4b1c6a['forEach']((_0x334362,_0x8cb48)=>{const _0x599e04=document['createElement']('div');_0x599e04['className']='custom-select-option',_0x599e04['textContent']=_0x334362['textContent'],_0x599e04['setAttribute']('data-value',_0x334362['value']),_0x599e04['setAttribute']('data-index',_0x8cb48),_0x599e04['setAttribute']('role','option'),_0x334362['disabled']?_0x599e04['classList']['add']('disabled'):_0x599e04['addEventListener']('click',()=>this['select'](_0x334362['value'])),_0x334362['value']===this['selectedValue']&&_0x599e04['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x599e04),this['allOptions']['push']({'element':_0x599e04,'text':_0x334362['textContent']['toLowerCase'](),'value':_0x334362['value'],'disabled':_0x334362['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3a04bb=this['searchInput']['parentElement'];_0x5bc821['length']>0x3?_0x3a04bb['style']['display']='':_0x3a04bb['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2b78c6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x193f4d=>{if(!_0x2b78c6||_0x193f4d['disabled'])_0x193f4d['element']['style']['display']='';else{const _0x264d74=_0x193f4d['text']['includes'](_0x2b78c6);_0x193f4d['element']['style']['display']=_0x264d74?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2ea686){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2ea686,this['nativeSelect']['value']=_0x2ea686;const _0x1ee825=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1ee825),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3e4dbb=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3e4dbb&&(this['triggerText']['textContent']=_0x3e4dbb['textContent'],_0x3e4dbb['disabled']||_0x3e4dbb['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x355746=>{_0x355746['getAttribute']('data-value')===this['selectedValue']?_0x355746['classList']['add']('selected'):_0x355746['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 _0x433eb7=window['getComputedStyle'](this['dropdown']);if(_0x433eb7['position']==='fixed'){const _0x17ff82=this['trigger']['getBoundingClientRect'](),_0x17d78e=parseInt(_0x433eb7['maxHeight'])||0xc8,_0xecd5b8=window['innerHeight'],_0x52ad33=_0xecd5b8-_0x17ff82['bottom'],_0xb40a2a=_0x17ff82['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x373d41;_0x52ad33<_0x17d78e&&_0xb40a2a>_0x52ad33?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xecd5b8-_0x17ff82['top']+'px',_0x373d41=Math['min'](_0x17d78e,_0xb40a2a-0xa),this['dropdown']['style']['maxHeight']=_0x373d41+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x17ff82['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x373d41=Math['min'](_0x17d78e,_0x52ad33-0xa),this['dropdown']['style']['maxHeight']=_0x373d41+'px');if(this['optionsContainer']){let _0x1b685d=_0x373d41;if(this['searchInput']){const _0x5a56cc=this['searchInput']['parentElement'];_0x5a56cc&&(_0x1b685d-=_0x5a56cc['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1b685d)+'px';}this['dropdown']['style']['left']=_0x17ff82['left']+'px',this['dropdown']['style']['width']=_0x17ff82['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xc11c6a=this['searchInput']['parentElement'];_0xc11c6a&&_0xc11c6a['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'](_0x3e7033){if(this['nativeSelect']['disabled'])return;if(_0x3e7033['key']==='Enter'||_0x3e7033['key']==='\x20')_0x3e7033['preventDefault'](),this['toggle']();else _0x3e7033['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x105cff='\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',_0x105cff),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xbab33c=document['getElementById']('confirm-dialog-close'),_0x100286=document['getElementById']('confirm-dialog-cancel'),_0x2df082=document['getElementById']('confirm-dialog-confirm'),_0x3d7b1a=this['_modal']['querySelector']('.modal-overlay');_0xbab33c['addEventListener']('click',()=>this['_resolve'](![])),_0x100286['addEventListener']('click',()=>this['_resolve'](![])),_0x2df082['addEventListener']('click',()=>this['_resolve'](!![])),_0x3d7b1a['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x4efbdc=>{if(_0x4efbdc['key']==='Escape')_0x4efbdc['preventDefault'](),this['_resolve'](![]);else _0x4efbdc['key']==='Enter'&&(_0x4efbdc['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4f7642,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2cc41f=>{this['_resolvePromise']=_0x2cc41f,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4f7642;const _0x35f81f=document['getElementById']('confirm-dialog-cancel'),_0x39216f=document['getElementById']('confirm-dialog-confirm');_0x35f81f['textContent']=cancelText,_0x39216f['textContent']=confirmText,_0x39216f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x39216f['focus']();});},'_resolve'(_0x60ddd1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x60ddd1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2e6abc,_0x59efdb={}){this['container']=_0x2e6abc,this['options']={'placeholder':_0x59efdb['placeholder']||'Type\x20to\x20search...','maxItems':_0x59efdb['maxItems']||0x64,'loadItems':_0x59efdb['loadItems']||(async()=>[]),'renderItem':_0x59efdb['renderItem']||(_0xaaa199=>({'primary':String(_0xaaa199),'secondary':''})),'onSelect':_0x59efdb['onSelect']||(()=>{}),'filterItems':_0x59efdb['filterItems']||null,'getItemValue':_0x59efdb['getItemValue']||(_0x5d4076=>_0x5d4076),'sortItems':_0x59efdb['sortItems']||null,'debounceMs':_0x59efdb['debounceMs']||0xc8,'minCharsForSearch':_0x59efdb['minCharsForSearch']||0x0,'emptyMessage':_0x59efdb['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x59efdb['loadingMessage']||'Loading...','preload':_0x59efdb['preload']!==![],'searchMode':_0x59efdb['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',_0x3db129=>this['onBlur'](_0x3db129)),this['input']['addEventListener']('input',_0x277092=>this['onInput'](_0x277092)),this['input']['addEventListener']('keydown',_0x35f4c9=>this['onKeydown'](_0x35f4c9)),this['clearBtn']['addEventListener']('mousedown',_0x26d703=>{_0x26d703['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x2cbbbd=>{_0x2cbbbd['preventDefault']();}),document['addEventListener']('click',_0x3b26bb=>{!this['wrapper']['contains'](_0x3b26bb['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(_0x36a937){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x36a937);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x36fef0){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x513189){const _0x1f8034=_0x513189['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1f8034);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1f8034):this['loadAndShow'](_0x1f8034);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1baeed){switch(_0x1baeed['key']){case'ArrowDown':_0x1baeed['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1baeed['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1baeed['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1baeed['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x399d26){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x1cab46=this['selectedIndex']+_0x399d26;if(_0x1cab46>=0x0&&_0x1cab46<this['filteredItems']['length']){this['selectedIndex']=_0x1cab46,this['updateSelectionHighlight']();const _0x5bebbe=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5bebbe[this['selectedIndex']]&&_0x5bebbe[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x5a2350=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5a2350['forEach']((_0x2972c8,_0x2e71bd)=>{_0x2972c8['classList']['toggle']('keyboard-selected',_0x2e71bd===this['selectedIndex']);});}async['loadAndShow'](_0x158f37){this['showLoading']();try{const _0x1151fc=await this['options']['loadItems'](_0x158f37);if(this['options']['searchMode']==='server'){let _0x5f3ce6=_0x1151fc;this['options']['sortItems']&&(_0x5f3ce6=this['options']['sortItems']([..._0x1151fc]));this['filteredItems']=_0x5f3ce6;const _0x2dc858=this['filteredItems']['length']>=this['options']['maxItems'];_0x2dc858&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2dc858),this['open']();}else this['allItems']=_0x1151fc,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x158f37);}catch(_0x4c9210){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x4c9210),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x57807e){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x57807e):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x283afd=this['filteredItems']['length']>=this['options']['maxItems'];_0x283afd&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x283afd),this['open']();}['renderItems'](_0x2cf239){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']((_0x2e3af5,_0x5cf34e)=>{const _0x104ff1=document['createElement']('div');_0x104ff1['className']='autocomplete-select-item',_0x104ff1['setAttribute']('role','option'),_0x104ff1['setAttribute']('data-index',_0x5cf34e);const _0x20afd5=this['options']['renderItem'](_0x2e3af5);let _0x1f3144='';_0x20afd5['icon']&&(_0x1f3144='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x20afd5['iconClass']||'')+'\x22>'+_0x20afd5['icon']+'</span>'),_0x104ff1['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1f3144+'\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'](_0x20afd5['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x20afd5['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x20afd5['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x104ff1['addEventListener']('click',()=>{this['selectItem'](_0x2e3af5);}),_0x104ff1['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x5cf34e,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x104ff1);}),_0x2cf239?(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'](_0x5cee98){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5cee98)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1484f4){this['selectedItem']=_0x1484f4;const _0x1c1a56=this['options']['renderItem'](_0x1484f4);this['input']['value']=_0x1c1a56['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1484f4);}['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'](_0x519307){if(_0x519307){this['selectedItem']=_0x519307;const _0x40795f=this['options']['renderItem'](_0x519307);this['input']['value']=_0x40795f['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1cff3c){this['allItems']=_0x1cff3c,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'](_0x31f8c2){this['input']['placeholder']=_0x31f8c2;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3a1d08=null){const _0x236bf1=document['getElementById']('admin-menu-container'),_0x593927=document['getElementById']('admin-menu-btn'),_0x44812e=document['getElementById']('admin-menu');if(!_0x236bf1||!_0x593927||!_0x44812e)return;try{!_0x3a1d08&&(_0x3a1d08=await API['getCurrentUser']());if(_0x3a1d08){const _0x15566a=window['Permissions'],_0x1188fb=_0x15566a['hasServerPermission'](_0x3a1d08,'*')||_0x15566a['hasEnvPermission'](_0x3a1d08,'environments:manage')||_0x15566a['hasServerPermission'](_0x3a1d08,'users:create')||_0x15566a['hasTeamPermission'](_0x3a1d08,'teams:manage')||_0x15566a['hasEnvPermission'](_0x3a1d08,'environments:view_details');if(!_0x1188fb)return;_0x236bf1['hidden']=![];if(!_0x15566a['hasServerPermission'](_0x3a1d08,'*')){const _0x4c97a2=_0x44812e['querySelectorAll']('.admin-menu-item');_0x4c97a2['forEach'](_0x7215ae=>{const _0x22a248=_0x7215ae['querySelector']('.option-text')?.['textContent']?.['trim']();_0x22a248==='Users'&&!_0x15566a['hasServerPermission'](_0x3a1d08,'users:create')&&(_0x7215ae['hidden']=!![]),_0x22a248==='Skills'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Server\x20Settings'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Server\x20Health'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Git\x20History'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Roles'&&(_0x7215ae['hidden']=!![]);});}_0x593927['addEventListener']('click',_0x3a943a=>{_0x3a943a['stopPropagation']();const _0x595990=document['getElementById']('actions-menu');if(_0x595990)_0x595990['hidden']=!![];_0x44812e['hidden']=!_0x44812e['hidden'];}),document['addEventListener']('click',_0x5ba54c=>{!_0x44812e['hidden']&&!_0x593927['contains'](_0x5ba54c['target'])&&!_0x44812e['contains'](_0x5ba54c['target'])&&(_0x44812e['hidden']=!![]);}),document['addEventListener']('keydown',_0x458c93=>{_0x458c93['key']==='Escape'&&!_0x44812e['hidden']&&(_0x44812e['hidden']=!![]);});const _0xbed42b=document['getElementById']('server-health-btn');_0xbed42b&&_0xbed42b['addEventListener']('click',async()=>{_0x44812e['hidden']=!![];const {openServerHealthModal:_0x5427d3}=await import('./server-health.js');_0x5427d3();});}}catch(_0x52fcf3){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x52fcf3['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 _0xf77772=window['location']['pathname'],_0x14c53a=_0xf77772['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x14c53a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x14c53a[0x1]),_0x14c53a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4743b1={}){const _0x4c724d=new URLSearchParams();_0x4743b1['userId']&&_0x4c724d['set']('userId',String(_0x4743b1['userId']));_0x4743b1['automation']&&_0x4c724d['set']('automation',String(_0x4743b1['automation']));const _0x4eeab1=API_BASE+'/tasks/stats'+(_0x4c724d['toString']()?'?'+_0x4c724d['toString']():''),_0x514be8=await fetch(_0x4eeab1);if(!_0x514be8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x514be8['statusText']);return await _0x514be8['json']();},async 'getTasks'(_0x9e405a={}){const _0x4a5d30=new URLSearchParams();_0x9e405a['status']&&_0x4a5d30['set']('status',String(_0x9e405a['status']));_0x9e405a['environment']&&_0x4a5d30['set']('environment',String(_0x9e405a['environment']));_0x9e405a['automation']&&_0x4a5d30['set']('automation',String(_0x9e405a['automation']));if(_0x9e405a['include']){const _0x60338d=Array['isArray'](_0x9e405a['include'])?_0x9e405a['include']['join'](','):String(_0x9e405a['include']);_0x60338d&&_0x4a5d30['set']('include',_0x60338d);}_0x9e405a['filter']&&_0x4a5d30['set']('filter',String(_0x9e405a['filter']));_0x9e405a['page']&&_0x4a5d30['set']('page',String(_0x9e405a['page']));_0x9e405a['limit']&&_0x4a5d30['set']('limit',String(_0x9e405a['limit']));_0x9e405a['userId']&&_0x4a5d30['set']('userId',String(_0x9e405a['userId']));_0x9e405a['search']&&_0x4a5d30['set']('search',String(_0x9e405a['search']));_0x9e405a['includeChildTasks']&&_0x4a5d30['set']('includeChildTasks','true');const _0x2b115c=API_BASE+'/tasks'+(_0x4a5d30['toString']()?'?'+_0x4a5d30['toString']():''),_0x4ce87e=await fetch(_0x2b115c);if(!_0x4ce87e['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4ce87e['statusText']);return await _0x4ce87e['json']();},async 'getAutomations'(_0x2a27c5={}){const _0x360c2a=new URLSearchParams();_0x2a27c5['environment']&&_0x360c2a['set']('environment',String(_0x2a27c5['environment']));const _0x4226af=await fetch(API_BASE+'/api/automations'+(_0x360c2a['toString']()?'?'+_0x360c2a['toString']():''));if(!_0x4226af['ok']){const _0x28b6e0=await _0x4226af['json']()['catch'](()=>({}));throw new Error(_0x28b6e0['message']||_0x28b6e0['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4226af['statusText']);}return await _0x4226af['json']();},async 'getAutomation'(_0x1c31f7){const _0x539de7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c31f7));if(!_0x539de7['ok']){const _0x1e64c1=await _0x539de7['json']()['catch'](()=>({}));throw new Error(_0x1e64c1['message']||_0x1e64c1['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x539de7['statusText']);}return await _0x539de7['json']();},async 'createAutomation'(_0xcec2f8){const _0x276401=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcec2f8||{})});if(!_0x276401['ok']){const _0xb324ed=await _0x276401['json']()['catch'](()=>({}));throw new Error(_0xb324ed['message']||_0xb324ed['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x276401['statusText']);}return await _0x276401['json']();},async 'updateAutomation'(_0x913043,_0x195e47){const _0x915938=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x913043),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x195e47||{})});if(!_0x915938['ok']){const _0xc7d5af=await _0x915938['json']()['catch'](()=>({}));throw new Error(_0xc7d5af['message']||_0xc7d5af['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x915938['statusText']);}return await _0x915938['json']();},async 'deleteAutomation'(_0x809c9f){const _0x149bea=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x809c9f),{'method':'DELETE'});if(!_0x149bea['ok']){const _0x4eac0b=await _0x149bea['json']()['catch'](()=>({}));throw new Error(_0x4eac0b['message']||_0x4eac0b['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x149bea['statusText']);}return await _0x149bea['json']();},async 'triggerAutomation'(_0x127eb9){const _0xa8ccc2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x127eb9)+'/trigger',{'method':'POST'});if(!_0xa8ccc2['ok']){const _0x529c41=await _0xa8ccc2['json']()['catch'](()=>({}));throw new Error(_0x529c41['message']||_0x529c41['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0xa8ccc2['statusText']);}return await _0xa8ccc2['json']();},async 'setAutomationEnabled'(_0x1acd6e,_0xe6eec3){const _0x8afeb3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1acd6e)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0xe6eec3})});if(!_0x8afeb3['ok']){const _0x4194f4=await _0x8afeb3['json']()['catch'](()=>({}));throw new Error(_0x4194f4['message']||_0x4194f4['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x8afeb3['statusText']);}return await _0x8afeb3['json']();},async 'getAutomationHistory'(_0x2f351c,_0x13a11f=0x32){const _0x125920=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2f351c)+'/history?limit='+encodeURIComponent(String(_0x13a11f)));if(!_0x125920['ok']){const _0x7eaf5a=await _0x125920['json']()['catch'](()=>({}));throw new Error(_0x7eaf5a['message']||_0x7eaf5a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x125920['statusText']);}return await _0x125920['json']();},async 'getTask'(_0x14346b,_0xe8a522={}){const _0x401b32=new URLSearchParams();if(_0xe8a522['include']){const _0x1411ad=Array['isArray'](_0xe8a522['include'])?_0xe8a522['include']['join'](','):String(_0xe8a522['include']);if(_0x1411ad)_0x401b32['set']('include',_0x1411ad);}const _0xd35fe4=await fetch(API_BASE+'/tasks/'+_0x14346b+(_0x401b32['toString']()?'?'+_0x401b32['toString']():''));if(!_0xd35fe4['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xd35fe4['statusText']);return await _0xd35fe4['json']();},async 'getTaskResults'(_0x3a17d5){const _0x180c8f=await fetch(API_BASE+'/tasks/'+_0x3a17d5+'/results');if(!_0x180c8f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x180c8f['statusText']);return await _0x180c8f['json']();},async 'getTaskPatches'(_0x50586e){const _0x1f9a6a=await fetch(API_BASE+'/tasks/'+_0x50586e+'/patches');if(!_0x1f9a6a['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1f9a6a['statusText']);return await _0x1f9a6a['json']();},async 'getTaskAttachments'(_0x58587c){const _0x28bec7=await fetch(API_BASE+'/tasks/'+_0x58587c+'/attachments');if(!_0x28bec7['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x28bec7['statusText']);return await _0x28bec7['json']();},async 'uploadAttachments'(_0x39de27,_0x5bf0b2){const _0x1e96e1=new FormData();for(const _0x257a0f of _0x5bf0b2){_0x1e96e1['append']('attachments',_0x257a0f);}const _0x11cc98=await fetch(API_BASE+'/tasks/'+_0x39de27+'/attachments',{'method':'POST','body':_0x1e96e1});if(!_0x11cc98['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x11cc98['statusText']);return await _0x11cc98['json']();},async 'isAINameGenerationAvailable'(){try{const _0x25a756=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x25a756['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x25a756['json']();}catch(_0x2e1d2a){return{'available':![],'reason':_0x2e1d2a['message']};}},async 'generateTaskName'(_0x568af4){try{const _0x581042=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x568af4})});return await _0x581042['json']();}catch(_0x3ec8f3){return{'success':![],'error':_0x3ec8f3['message']};}},async 'createTask'(_0x5c2598){let _0x4517b4,_0x124c76={};if(_0x5c2598['files']&&_0x5c2598['files']['length']>0x0){const _0x5b665a=new FormData();for(const [_0x4f040b,_0x513c4c]of Object['entries'](_0x5c2598)){if(_0x4f040b!=='files'){if(_0x513c4c==null)continue;typeof _0x513c4c==='object'?_0x5b665a['append'](_0x4f040b,JSON['stringify'](_0x513c4c)):_0x5b665a['append'](_0x4f040b,String(_0x513c4c));}}for(const _0x17a843 of _0x5c2598['files']){_0x5b665a['append']('attachments',_0x17a843);}_0x4517b4=_0x5b665a;}else _0x124c76['Content-Type']='application/json',_0x4517b4=JSON['stringify'](_0x5c2598);const _0x47fa8b=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x124c76,'body':_0x4517b4});if(!_0x47fa8b['ok']){const _0x8fe7ad=await _0x47fa8b['json'](),_0x3adb8f=new Error(_0x8fe7ad['error']||'Failed\x20to\x20create\x20task:\x20'+_0x47fa8b['statusText']),{message:_0x3e62d8,..._0x2c1167}=_0x8fe7ad;Object['assign'](_0x3adb8f,_0x2c1167);throw _0x3adb8f;}return await _0x47fa8b['json']();},async 'createTestTask'(_0x2de358){const _0x2c623b=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2de358)});if(!_0x2c623b['ok']){const _0x46248a=await _0x2c623b['json']();throw new Error(_0x46248a['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x2c623b['statusText']);}return await _0x2c623b['json']();},async 'createEphemeralTest'(_0x33395a){const _0x263d7c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33395a)});if(!_0x263d7c['ok']){const _0x9d2d8f=await _0x263d7c['json']();throw new Error(_0x9d2d8f['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x263d7c['statusText']);}return await _0x263d7c['json']();},async 'createDeployTask'(_0x53501e){const _0x58c20b=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53501e)});if(!_0x58c20b['ok']){const _0xb46254=await _0x58c20b['json']();throw new Error(_0xb46254['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x58c20b['statusText']);}return await _0x58c20b['json']();},async 'getEnvironments'(){const _0x2cd8eb=await fetch(API_BASE+'/environments');if(!_0x2cd8eb['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2cd8eb['statusText']);return await _0x2cd8eb['json']();},async 'getEnvironment'(_0x4b53e6){const _0x1d6802=await fetch(API_BASE+'/environments/'+_0x4b53e6);if(!_0x1d6802['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x1d6802['statusText']);return await _0x1d6802['json']();},async 'getEnvironmentRepoHistory'(_0x2fe623,_0x5553c6,_0x5c423e={}){if(!_0x2fe623||!_0x5553c6)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x220502=new URLSearchParams();if(_0x5c423e['limit'])_0x220502['set']('limit',String(_0x5c423e['limit']));if(_0x5c423e['offset'])_0x220502['set']('offset',String(_0x5c423e['offset']));if(_0x5c423e['search'])_0x220502['set']('search',String(_0x5c423e['search']));if(_0x5c423e['branch'])_0x220502['set']('branch',String(_0x5c423e['branch']));const _0x45720f=API_BASE+'/environments/'+encodeURIComponent(_0x2fe623)+'/repos/'+encodeURIComponent(_0x5553c6)+'/git/history',_0xd41bce=await fetch(''+_0x45720f+(_0x220502['toString']()?'?'+_0x220502['toString']():''));if(!_0xd41bce['ok']){const _0x11fd2d=await _0xd41bce['json']()['catch'](()=>({}));throw new Error(_0x11fd2d['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0xd41bce['statusText']);}return await _0xd41bce['json']();},async 'getEnvironmentRepoCommit'(_0x24c751,_0x11d6c9,_0x2ca77a){if(!_0x24c751||!_0x11d6c9||!_0x2ca77a)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x87ff78=API_BASE+'/environments/'+encodeURIComponent(_0x24c751)+'/repos/'+encodeURIComponent(_0x11d6c9)+'/git/commits/'+encodeURIComponent(_0x2ca77a),_0x415fc4=await fetch(_0x87ff78);if(!_0x415fc4['ok']){const _0x4bcb20=await _0x415fc4['json']()['catch'](()=>({}));throw new Error(_0x4bcb20['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x415fc4['statusText']);}return await _0x415fc4['json']();},async 'getEnvironmentRepoBranches'(_0x41e141,_0x1ad26a){if(!_0x41e141||!_0x1ad26a)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3d9946=API_BASE+'/environments/'+encodeURIComponent(_0x41e141)+'/repos/'+encodeURIComponent(_0x1ad26a)+'/git/branches',_0xd00936=await fetch(_0x3d9946);if(!_0xd00936['ok']){const _0x39aaf2=await _0xd00936['json']()['catch'](()=>({}));throw new Error(_0x39aaf2['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xd00936['statusText']);}return await _0xd00936['json']();},async 'revertEnvironmentRepoCommit'(_0x576286,_0x38b9e1,_0x333ea4,_0x489de9={}){if(!_0x576286||!_0x38b9e1||!_0x333ea4)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2b7843=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x576286)+'/repos/'+encodeURIComponent(_0x38b9e1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x333ea4,..._0x489de9})});if(!_0x2b7843['ok']){const _0x1164ad=await _0x2b7843['json']()['catch'](()=>({}));throw new Error(_0x1164ad['message']||_0x1164ad['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2b7843['statusText']);}return await _0x2b7843['json']();},async 'getTemplates'(_0x23e8cf={}){const _0x2cca8a=new URLSearchParams();if(_0x23e8cf['include']){const _0x3b602f=Array['isArray'](_0x23e8cf['include'])?_0x23e8cf['include']['join'](','):String(_0x23e8cf['include']);if(_0x3b602f)_0x2cca8a['set']('include',_0x3b602f);}const _0xfaf8=await fetch(API_BASE+'/templates'+(_0x2cca8a['toString']()?'?'+_0x2cca8a['toString']():''));if(!_0xfaf8['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0xfaf8['statusText']);return await _0xfaf8['json']();},async 'getTemplatesForEnvironment'(_0x1d4fc0,_0x418509={}){if(!_0x1d4fc0)throw new Error('Environment\x20name\x20is\x20required');const _0x3b7155=new URLSearchParams();if(_0x418509['include']){const _0x222d06=Array['isArray'](_0x418509['include'])?_0x418509['include']['join'](','):String(_0x418509['include']);if(_0x222d06)_0x3b7155['set']('include',_0x222d06);}const _0x958913=await fetch(API_BASE+'/templates/'+_0x1d4fc0+(_0x3b7155['toString']()?'?'+_0x3b7155['toString']():''));if(!_0x958913['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x1d4fc0+':\x20'+_0x958913['statusText']);return await _0x958913['json']();},async 'getTemplate'(_0x441a4f,_0x3d4143,_0x2e9311={}){if(!_0x441a4f||!_0x3d4143)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x461e10=new URLSearchParams();if(_0x2e9311['include']){const _0x3a96f4=Array['isArray'](_0x2e9311['include'])?_0x2e9311['include']['join'](','):String(_0x2e9311['include']);if(_0x3a96f4)_0x461e10['set']('include',_0x3a96f4);}const _0x105ba7=await fetch(API_BASE+'/templates/'+_0x441a4f+'/'+_0x3d4143+(_0x461e10['toString']()?'?'+_0x461e10['toString']():''));if(!_0x105ba7['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x105ba7['statusText']);return await _0x105ba7['json']();},async 'getTaskLogs'(_0x2129b4,_0xa20923={}){if(!_0x2129b4)throw new Error('Task\x20ID\x20is\x20required');const _0x31078e=new URLSearchParams();_0xa20923['tail']&&_0x31078e['set']('tail',String(_0xa20923['tail']));const _0x4c8e42=await fetch(API_BASE+'/tasks/'+_0x2129b4+'/logs'+(_0x31078e['toString']()?'?'+_0x31078e['toString']():''));if(!_0x4c8e42['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x4c8e42['statusText']);return await _0x4c8e42['text']();},async 'getContainers'(){const _0x2e3066=await fetch(API_BASE+'/containers');if(!_0x2e3066['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2e3066['statusText']);return await _0x2e3066['json']();},async 'getContainer'(_0x2b9759){const _0x5ae44e=await fetch(API_BASE+'/containers/'+_0x2b9759);if(!_0x5ae44e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ae44e['statusText']);return await _0x5ae44e['json']();},async 'startInteractiveContainer'(_0x4fee50){const _0x2ad9cf=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fee50)});if(!_0x2ad9cf['ok']){const _0x5e18fd=await _0x2ad9cf['json']()['catch'](()=>({}));throw new Error(_0x5e18fd['message']||'Failed\x20to\x20start\x20container:\x20'+_0x2ad9cf['statusText']);}return await _0x2ad9cf['json']();},async 'startContainerCodeServer'(_0x1726fb,_0xd0b934={}){if(!_0x1726fb)throw new Error('Container\x20ID\x20is\x20required');const _0xc6e470=new URLSearchParams();_0xd0b934['theme']&&_0xc6e470['set']('theme',_0xd0b934['theme']);const _0x2b9a19=await fetch(API_BASE+'/containers/'+_0x1726fb+'/code-server'+(_0xc6e470['toString']()?'?'+_0xc6e470['toString']():'')),_0x5ee94d=await _0x2b9a19['json']()['catch'](()=>({}));if(!_0x2b9a19['ok'])throw new Error(_0x5ee94d['message']||_0x5ee94d['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x2b9a19['statusText']);return _0x5ee94d;},async 'stopContainer'(_0x4fbcdb){const _0x499f08=await fetch(API_BASE+'/containers/'+_0x4fbcdb,{'method':'DELETE'});if(!_0x499f08['ok']){const _0x1c002a=await _0x499f08['json']()['catch'](()=>({}));throw new Error(_0x1c002a['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x499f08['statusText']);}return await _0x499f08['json']();},async 'stopTask'(_0x2a4c8e){if(!_0x2a4c8e)throw new Error('Task\x20ID\x20is\x20required');const _0xc66dca=await fetch(API_BASE+'/tasks/'+_0x2a4c8e+'/stop',{'method':'POST'});if(!_0xc66dca['ok']){const _0x318c2f=await _0xc66dca['json']()['catch'](()=>({}));throw new Error(_0x318c2f['error']||'Failed\x20to\x20stop\x20task:\x20'+_0xc66dca['statusText']);}return await _0xc66dca['json']();},async 'interruptTask'(_0x1a5ecf){if(!_0x1a5ecf)throw new Error('Task\x20ID\x20is\x20required');const _0x5a1651=await fetch(API_BASE+'/tasks/'+_0x1a5ecf+'/interrupt',{'method':'POST'});if(!_0x5a1651['ok']){const _0x41d6e8=await _0x5a1651['json']()['catch'](()=>({}));throw new Error(_0x41d6e8['error']||_0x41d6e8['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5a1651['statusText']);}return await _0x5a1651['json']();},async 'startTask'(_0x522ac6){if(!_0x522ac6)throw new Error('Task\x20ID\x20is\x20required');const _0x274713=await fetch(API_BASE+'/tasks/'+_0x522ac6+'/start',{'method':'POST'});if(!_0x274713['ok']){const _0x10301d=await _0x274713['json']()['catch'](()=>({}));throw new Error(_0x10301d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x274713['statusText']);}return await _0x274713['json']();},async 'deleteTask'(_0x177f1f){if(!_0x177f1f)throw new Error('Task\x20ID\x20is\x20required');const _0x9ddcd4=await fetch(API_BASE+'/tasks/'+_0x177f1f,{'method':'DELETE'});if(!_0x9ddcd4['ok']){const _0xc04fa=await _0x9ddcd4['json']()['catch'](()=>({}));throw new Error(_0xc04fa['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x9ddcd4['statusText']);}return await _0x9ddcd4['json']();},async 'refreshTasksFromDisk'(){const _0x28058c=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x28058c['ok']){const _0x552488=await _0x28058c['json']()['catch'](()=>({}));throw new Error(_0x552488['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x28058c['statusText']);}return await _0x28058c['json']();},async 'approveTask'(_0x561380,_0x726cef={}){if(!_0x561380)throw new Error('Task\x20ID\x20is\x20required');const _0x3603dd={'commit_message':_0x726cef['commit_message']||'','pull':_0x726cef['pull']??![],'push':_0x726cef['push']??![]};_0x726cef['new_branch']&&(_0x3603dd['new_branch']=_0x726cef['new_branch']);const _0x9bbcff=await fetch(API_BASE+'/tasks/'+_0x561380+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3603dd)});if(!_0x9bbcff['ok']){const _0x36caa4=await _0x9bbcff['json']()['catch'](()=>({}));let _0xa5fb6e=_0x36caa4['error']||_0x36caa4['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x9bbcff['statusText'];if(_0x36caa4['results']&&Array['isArray'](_0x36caa4['results'])){const _0x327e74=_0x36caa4['results']['filter'](_0x2d5103=>!_0x2d5103['success']&&_0x2d5103['error']);_0x327e74['length']>0x0&&(_0xa5fb6e=_0x327e74[0x0]['error']);}throw new Error(_0xa5fb6e);}return await _0x9bbcff['json']();},async 'getPullRequestInfo'(_0x250ebc){if(!_0x250ebc)throw new Error('Task\x20ID\x20is\x20required');const _0x1bb2e3=await fetch(API_BASE+'/tasks/'+_0x250ebc+'/pull-request-info');if(!_0x1bb2e3['ok']){const _0x3f6c37=await _0x1bb2e3['json']()['catch'](()=>({}));throw new Error(_0x3f6c37['error']||_0x3f6c37['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x1bb2e3['statusText']);}return await _0x1bb2e3['json']();},async 'createPullRequests'(_0x6a820a,_0x44cccc){if(!_0x6a820a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x44cccc||!Array['isArray'](_0x44cccc))throw new Error('repos\x20array\x20is\x20required');const _0x1b4242=await fetch(API_BASE+'/tasks/'+_0x6a820a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x44cccc})});if(!_0x1b4242['ok']){const _0x34f915=await _0x1b4242['json']()['catch'](()=>({}));let _0x3b9d50=_0x34f915['error']||_0x34f915['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x1b4242['statusText'];if(_0x34f915['results']&&Array['isArray'](_0x34f915['results'])){const _0xf6353b=_0x34f915['results']['filter'](_0x3b9c69=>!_0x3b9c69['success']&&_0x3b9c69['error']);_0xf6353b['length']>0x0&&(_0x3b9d50=_0xf6353b[0x0]['error']);}throw new Error(_0x3b9d50);}return await _0x1b4242['json']();},async 'syncRepos'(_0x1a7baa){if(!_0x1a7baa)throw new Error('Task\x20ID\x20is\x20required');const _0xca7545=await fetch(API_BASE+'/tasks/'+_0x1a7baa+'/sync-repos',{'method':'POST'});if(!_0xca7545['ok']){const _0x233e13=await _0xca7545['json']()['catch'](()=>({}));throw new Error(_0x233e13['error']||_0x233e13['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xca7545['statusText']);}return await _0xca7545['json']();},async 'getIbmiSyncInfo'(_0x2c578c){if(!_0x2c578c)throw new Error('Task\x20ID\x20is\x20required');const _0x21fff5=await fetch(API_BASE+'/tasks/'+_0x2c578c+'/ibmi-sync-info');if(!_0x21fff5['ok']){const _0x2a0753=await _0x21fff5['json']()['catch'](()=>({}));throw new Error(_0x2a0753['error']||_0x2a0753['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x21fff5['json']();},async 'getSyncFiles'(_0x2ae913){if(!_0x2ae913)throw new Error('Task\x20ID\x20is\x20required');const _0x451026=await fetch(API_BASE+'/tasks/'+_0x2ae913+'/sync-to-ibmi/files');if(!_0x451026['ok']){const _0x50f9eb=await _0x451026['json']()['catch'](()=>({}));throw new Error(_0x50f9eb['error']||_0x50f9eb['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x451026['json']();},async 'syncToIbmi'(_0x1c69db,_0x437183,_0x54595d=null,_0x1eed15=null,_0x52a08a=null){if(!_0x1c69db)throw new Error('Task\x20ID\x20is\x20required');const _0x2f97e1={'library':_0x437183};if(_0x54595d)_0x2f97e1['user']=_0x54595d;if(_0x1eed15)_0x2f97e1['password']=_0x1eed15;if(_0x52a08a)_0x2f97e1['files']=_0x52a08a;const _0x3b6d18=await fetch(API_BASE+'/tasks/'+_0x1c69db+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f97e1)});if(!_0x3b6d18['ok']){const _0x5865cb=await _0x3b6d18['json']()['catch'](()=>({}));throw new Error(_0x5865cb['error']||_0x5865cb['message']||'Sync\x20failed');}return await _0x3b6d18['json']();},async 'getIbmiSyncLog'(_0x3b30a7){if(!_0x3b30a7)throw new Error('Task\x20ID\x20is\x20required');const _0x5ded18=await fetch(API_BASE+'/tasks/'+_0x3b30a7+'/ibmi-sync-log');if(!_0x5ded18['ok']){const _0x5d17ef=await _0x5ded18['json']()['catch'](()=>({}));throw new Error(_0x5d17ef['error']||_0x5d17ef['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x5ded18['json']();},async 'pullChanges'(_0x30525e){if(!_0x30525e)throw new Error('Task\x20ID\x20is\x20required');const _0x56ef32=await fetch(API_BASE+'/tasks/'+_0x30525e+'/pull-changes',{'method':'POST'});if(!_0x56ef32['ok']){const _0x98ebfd=await _0x56ef32['json']()['catch'](()=>({}));throw new Error(_0x98ebfd['error']||_0x98ebfd['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x56ef32['statusText']);}return await _0x56ef32['json']();},async 'readFile'(_0x495420,_0x18f66e){if(!_0x495420)throw new Error('Task\x20ID\x20is\x20required');if(!_0x18f66e)throw new Error('File\x20path\x20is\x20required');const _0x402e21=await fetch(API_BASE+'/tasks/'+_0x495420+'/files?path='+encodeURIComponent(_0x18f66e));if(!_0x402e21['ok']){const _0x33750d=await _0x402e21['json']()['catch'](()=>({}));throw new Error(_0x33750d['error']||_0x33750d['message']||'Failed\x20to\x20read\x20file:\x20'+_0x402e21['statusText']);}return await _0x402e21['json']();},'getTaskFileDownloadUrl'(_0x367de9,_0x344a38){if(!_0x367de9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x344a38)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x367de9+'/files/download?path='+encodeURIComponent(_0x344a38);},async 'writeFile'(_0x5e7219,_0x4d5dfa,_0x56fe70){if(!_0x5e7219)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4d5dfa)throw new Error('File\x20path\x20is\x20required');if(_0x56fe70===undefined)throw new Error('Content\x20is\x20required');const _0x502222=await fetch(API_BASE+'/tasks/'+_0x5e7219+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4d5dfa,'content':_0x56fe70})});if(!_0x502222['ok']){const _0x20454e=await _0x502222['json']()['catch'](()=>({}));throw new Error(_0x20454e['error']||_0x20454e['message']||'Failed\x20to\x20write\x20file:\x20'+_0x502222['statusText']);}return await _0x502222['json']();},async 'uploadTaskFiles'(_0x2e024c,_0x4df537,_0x2fc1ba){if(!_0x2e024c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4df537)throw new Error('Target\x20directory\x20is\x20required');if(!_0x2fc1ba||_0x2fc1ba['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x44ff65=new FormData();_0x44ff65['append']('targetDir',_0x4df537);for(const _0xd79ca4 of _0x2fc1ba){_0x44ff65['append']('files',_0xd79ca4,_0xd79ca4['name']);}const _0x234e8b=await fetch(API_BASE+'/tasks/'+_0x2e024c+'/files/upload',{'method':'POST','body':_0x44ff65});if(!_0x234e8b['ok']){const _0x4827d1=await _0x234e8b['json']()['catch'](()=>({}));throw new Error(_0x4827d1['error']||_0x4827d1['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x234e8b['statusText']);}return await _0x234e8b['json']();},async 'createDirectory'(_0x58e6f5,_0x34184f){if(!_0x58e6f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34184f)throw new Error('Directory\x20path\x20is\x20required');const _0x3fe71d=await fetch(API_BASE+'/tasks/'+_0x58e6f5+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x34184f})});if(!_0x3fe71d['ok']){const _0x4483d2=await _0x3fe71d['json']()['catch'](()=>({}));throw new Error(_0x4483d2['error']||_0x4483d2['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x3fe71d['statusText']);}return await _0x3fe71d['json']();},async 'renamePath'(_0x201083,_0x22b2ae,_0x56cbee){if(!_0x201083)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22b2ae)throw new Error('Source\x20path\x20is\x20required');if(!_0x56cbee)throw new Error('Destination\x20path\x20is\x20required');const _0x433361=await fetch(API_BASE+'/tasks/'+_0x201083+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x22b2ae,'newPath':_0x56cbee})});if(!_0x433361['ok']){const _0x3118ac=await _0x433361['json']()['catch'](()=>({}));throw new Error(_0x3118ac['error']||_0x3118ac['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x433361['statusText']);}return await _0x433361['json']();},async 'deleteFile'(_0x337504,_0x4bc59f){if(!_0x337504)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4bc59f)throw new Error('File\x20path\x20is\x20required');const _0x2e84f1=await fetch(API_BASE+'/tasks/'+_0x337504+'/files?path='+encodeURIComponent(_0x4bc59f),{'method':'DELETE'});if(!_0x2e84f1['ok']){const _0x26f391=await _0x2e84f1['json']()['catch'](()=>({}));throw new Error(_0x26f391['error']||_0x26f391['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2e84f1['statusText']);}return await _0x2e84f1['json']();},async 'deleteDirectory'(_0x29edae,_0x51af77){if(!_0x29edae)throw new Error('Task\x20ID\x20is\x20required');if(!_0x51af77)throw new Error('Directory\x20path\x20is\x20required');const _0x1e9f61=await fetch(API_BASE+'/tasks/'+_0x29edae+'/files/directory?path='+encodeURIComponent(_0x51af77),{'method':'DELETE'});if(!_0x1e9f61['ok']){const _0x217a4b=await _0x1e9f61['json']()['catch'](()=>({}));throw new Error(_0x217a4b['error']||_0x217a4b['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x1e9f61['statusText']);}return await _0x1e9f61['json']();},async 'discardFile'(_0x55b25d,_0x28dd8e,_0x492fc8){if(!_0x55b25d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28dd8e)throw new Error('File\x20path\x20is\x20required');if(!_0x492fc8)throw new Error('Repository\x20path\x20is\x20required');const _0x33cd11=await fetch(API_BASE+'/tasks/'+_0x55b25d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x28dd8e,'repoPath':_0x492fc8})});if(!_0x33cd11['ok']){const _0x39f411=await _0x33cd11['json']()['catch'](()=>({}));throw new Error(_0x39f411['error']||_0x39f411['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x33cd11['statusText']);}return await _0x33cd11['json']();},async 'followUpTask'(_0x5c565a,_0x354fa8={}){if(!_0x5c565a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x354fa8['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x23fded,_0x73a88={};if(_0x354fa8['files']&&_0x354fa8['files']['length']>0x0){const _0x3931bc=new FormData();_0x3931bc['append']('instructions',_0x354fa8['instructions']);for(const _0x49513c of _0x354fa8['files']){_0x3931bc['append']('attachments',_0x49513c);}_0x23fded=_0x3931bc;}else _0x73a88['Content-Type']='application/json',_0x23fded=JSON['stringify']({'instructions':_0x354fa8['instructions']});const _0x40d10e=await fetch(API_BASE+'/tasks/'+_0x5c565a+'/follow-up',{'method':'POST','headers':_0x73a88,'body':_0x23fded});if(!_0x40d10e['ok']){const _0x53ea1f=await _0x40d10e['json']()['catch'](()=>({}));throw new Error(_0x53ea1f['error']||_0x53ea1f['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x40d10e['statusText']);}return await _0x40d10e['json']();},async 'getTaskRewindPoints'(_0x28c6c1){if(!_0x28c6c1)throw new Error('Task\x20ID\x20is\x20required');const _0x43fe96=await fetch(API_BASE+'/tasks/'+_0x28c6c1+'/rewind-points');if(!_0x43fe96['ok']){const _0x2e28cf=await _0x43fe96['json']()['catch'](()=>({}));throw new Error(_0x2e28cf['error']||_0x2e28cf['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x43fe96['statusText']);}return await _0x43fe96['json']();},async 'rewindTask'(_0x465618,_0x8aa8c8={}){if(!_0x465618)throw new Error('Task\x20ID\x20is\x20required');const _0x108bfb=Number['isInteger'](_0x8aa8c8['targetFollowUpCount'])?_0x8aa8c8['targetFollowUpCount']:0x0,_0x38f889={'targetFollowUpCount':_0x108bfb};typeof _0x8aa8c8['instructions']==='string'&&_0x8aa8c8['instructions']['trim']()&&(_0x38f889['instructions']=_0x8aa8c8['instructions']['trim']());typeof _0x8aa8c8['rewindFiles']==='boolean'&&(_0x38f889['rewindFiles']=_0x8aa8c8['rewindFiles']);const _0x36a2a3=await fetch(API_BASE+'/tasks/'+_0x465618+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x38f889)});if(!_0x36a2a3['ok']){const _0x21e438=await _0x36a2a3['json']()['catch'](()=>({}));throw new Error(_0x21e438['error']||_0x21e438['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x36a2a3['statusText']);}return await _0x36a2a3['json']();},async 'login'(_0x2da6b9,_0x5a2d52){const _0xaed262=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2da6b9,'password':_0x5a2d52})});if(!_0xaed262['ok']){const _0x4a1383=await _0xaed262['json']();throw new Error(_0x4a1383['message']||'Login\x20failed');}return await _0xaed262['json']();},async 'logout'(){const _0x3dbeeb=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x3dbeeb['ok']){const _0x21918e=await _0x3dbeeb['json']();throw new Error(_0x21918e['message']||'Logout\x20failed');}return await _0x3dbeeb['json']();},async 'getCurrentUser'(){const _0x1fc009=await fetch(API_BASE+'/auth/me');if(!_0x1fc009['ok'])throw new Error('Not\x20authenticated');const _0x4ec6fc=await _0x1fc009['json']();return _0x4ec6fc['user'];},async 'getRolesInfo'(){const _0x3a33c9=await fetch(API_BASE+'/users/roles');if(!_0x3a33c9['ok']){const _0x4c4671=await _0x3a33c9['json']();throw new Error(_0x4c4671['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x3a33c9['json']();},async 'getUsers'(){const _0x2e2a0e=await fetch(API_BASE+'/users');if(!_0x2e2a0e['ok']){const _0x4a9195=await _0x2e2a0e['json']();throw new Error(_0x4a9195['message']||'Failed\x20to\x20get\x20users');}return await _0x2e2a0e['json']();},async 'getUser'(_0x57392f){const _0x276ac7=await fetch(API_BASE+'/users/'+_0x57392f);if(!_0x276ac7['ok']){const _0x49e0d4=await _0x276ac7['json']();throw new Error(_0x49e0d4['message']||'Failed\x20to\x20get\x20user');}return await _0x276ac7['json']();},async 'createUser'(_0x45f785){const _0x30f6fa=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45f785)});if(!_0x30f6fa['ok']){const _0x1fc15c=await _0x30f6fa['json']();throw new Error(_0x1fc15c['message']||'Failed\x20to\x20create\x20user');}return await _0x30f6fa['json']();},async 'updateUser'(_0x43b86a,_0x305518){const _0x2eba29=await fetch(API_BASE+'/users/'+_0x43b86a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x305518)});if(!_0x2eba29['ok']){const _0x12899f=await _0x2eba29['json']();throw new Error(_0x12899f['message']||'Failed\x20to\x20update\x20user');}return await _0x2eba29['json']();},async 'deleteUser'(_0x45f484){const _0xce2117=await fetch(API_BASE+'/users/'+_0x45f484,{'method':'DELETE'});if(!_0xce2117['ok']){const _0x53e4e0=await _0xce2117['json']();throw new Error(_0x53e4e0['message']||'Failed\x20to\x20delete\x20user');}return await _0xce2117['json']();},async 'stopAllContainers'(){const _0x28da70=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3a8d98=await _0x28da70['json']()['catch'](()=>({}));if(!_0x28da70['ok'])throw new Error(_0x3a8d98['message']||_0x3a8d98['error']||'Failed\x20to\x20stop\x20containers');return _0x3a8d98;},async 'removeStoppedContainers'(){const _0x31b665=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5c4374=await _0x31b665['json']()['catch'](()=>({}));if(!_0x31b665['ok'])throw new Error(_0x5c4374['message']||_0x5c4374['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5c4374;},async 'pruneDockerResources'(){const _0x162a49=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x5b46a2=await _0x162a49['json']()['catch'](()=>({}));if(!_0x162a49['ok'])throw new Error(_0x5b46a2['message']||_0x5b46a2['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x5b46a2;},async 'createPasswordToken'(_0x2bac72,_0x2b2d97='setup',_0x200444=![]){const _0x31f1c3=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2bac72,'type':_0x2b2d97,'sendEmail':_0x200444})});if(!_0x31f1c3['ok']){const _0x47227b=await _0x31f1c3['json']();throw new Error(_0x47227b['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x31f1c3['json']();},async 'getEmailConfig'(){const _0x14682c=await fetch(API_BASE+'/password/email-config');if(!_0x14682c['ok']){const _0x5ce32d=await _0x14682c['json']();throw new Error(_0x5ce32d['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x14682c['json']();},async 'updateTaskName'(_0x801a87,_0x271cf7){const _0x28856e=await fetch(API_BASE+'/tasks/'+_0x801a87,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x271cf7})});if(!_0x28856e['ok']){const _0x3c0972=await _0x28856e['json']();throw new Error(_0x3c0972['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x28856e['json']();},async 'pinTask'(_0x334842,_0x36c3fb,_0x40ecd3=null){if(!_0x334842)throw new Error('Task\x20ID\x20is\x20required');const _0x184247={'pinned':_0x36c3fb};_0x40ecd3&&_0x40ecd3['length']>0x0&&(_0x184247['additionalTaskIds']=_0x40ecd3);const _0x438a4d=await fetch(API_BASE+'/tasks/'+_0x334842+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x184247)});if(!_0x438a4d['ok']){const _0x4c4cdd=await _0x438a4d['json']();throw new Error(_0x4c4cdd['error']||'Failed\x20to\x20pin\x20task');}return await _0x438a4d['json']();},async 'setTaskWinner'(_0x18e2bb,_0x52bbfd,_0x12dcef=[]){if(!_0x18e2bb)throw new Error('Task\x20ID\x20is\x20required');const _0x1ab404=await fetch(API_BASE+'/tasks/'+_0x18e2bb+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x52bbfd,'siblings':_0x12dcef})});if(!_0x1ab404['ok']){const _0x1724f5=await _0x1ab404['json']();throw new Error(_0x1724f5['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1ab404['json']();},async 'setTaskLoser'(_0x4e53fc,_0x41ae43){if(!_0x4e53fc)throw new Error('Task\x20ID\x20is\x20required');const _0x5c7eb4=await fetch(API_BASE+'/tasks/'+_0x4e53fc+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x41ae43})});if(!_0x5c7eb4['ok']){const _0x466343=await _0x5c7eb4['json']();throw new Error(_0x466343['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x5c7eb4['json']();},async 'createTaskGroup'(_0x1af15){const _0x385436=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1af15)});if(!_0x385436['ok']){const _0x144c33=await _0x385436['json']();throw new Error(_0x144c33['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x385436['json']();},async 'getTaskGroups'(_0x11b684={}){const _0x4bbfff=new URLSearchParams();if(_0x11b684['userId'])_0x4bbfff['set']('userId',String(_0x11b684['userId']));if(_0x11b684['status'])_0x4bbfff['set']('status',String(_0x11b684['status']));if(_0x11b684['limit'])_0x4bbfff['set']('limit',String(_0x11b684['limit']));const _0x1fc8da=API_BASE+'/tasks/groups'+(_0x4bbfff['toString']()?'?'+_0x4bbfff['toString']():''),_0x492b97=await fetch(_0x1fc8da);if(!_0x492b97['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x492b97['json']();},async 'getTaskGroup'(_0x5cb371){const _0x4e5487=await fetch(API_BASE+'/tasks/groups/'+_0x5cb371);if(!_0x4e5487['ok']){const _0x2097df=await _0x4e5487['json']();throw new Error(_0x2097df['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4e5487['json']();},async 'updateTaskGroup'(_0x47c2b6,_0x515b13,_0x1f6dff){const _0x566c04=await fetch(API_BASE+'/tasks/'+_0x47c2b6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x515b13,'groupIndex':_0x1f6dff})});if(!_0x566c04['ok']){const _0x1e4bfc=await _0x566c04['json']();throw new Error(_0x1e4bfc['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x566c04['json']();},async 'removeTaskFromGroup'(_0x13a64d){return this['updateTaskGroup'](_0x13a64d,null,null);},async 'deleteTaskGroup'(_0xe42836,_0xf77dc7=![]){const _0x1114b4=_0xf77dc7?'?deleteTasks=true':'',_0x43ff7d=await fetch(API_BASE+'/tasks/groups/'+_0xe42836+_0x1114b4,{'method':'DELETE'});if(!_0x43ff7d['ok']){const _0xf7e456=await _0x43ff7d['json']();throw new Error(_0xf7e456['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5d5d58,_0x28a014){const _0x1579b1=await fetch(API_BASE+'/tasks/groups/'+_0x5d5d58+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x28a014})});if(!_0x1579b1['ok']){const _0x1a1f5b=await _0x1579b1['json']();throw new Error(_0x1a1f5b['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1579b1['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3681ad){if(!_0x3681ad)throw new Error('Task\x20ID\x20is\x20required');const _0x1e87af=await fetch(API_BASE+'/tasks/'+_0x3681ad+'/comments');if(!_0x1e87af['ok']){const _0x3c2619=await _0x1e87af['json']()['catch'](()=>({}));throw new Error(_0x3c2619['error']||'Failed\x20to\x20get\x20comments');}return await _0x1e87af['json']();},async 'addComment'(_0x34e884,_0x45e1cd){if(!_0x34e884)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45e1cd)throw new Error('Comment\x20content\x20is\x20required');const _0x50709d=await fetch(API_BASE+'/tasks/'+_0x34e884+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x45e1cd})});if(!_0x50709d['ok']){const _0x256ec5=await _0x50709d['json']()['catch'](()=>({}));throw new Error(_0x256ec5['error']||'Failed\x20to\x20add\x20comment');}return await _0x50709d['json']();},async 'updateComment'(_0xaee489,_0x521797,_0x394ef1){if(!_0xaee489)throw new Error('Task\x20ID\x20is\x20required');if(!_0x521797)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x394ef1)throw new Error('Comment\x20content\x20is\x20required');const _0x1d45d2=await fetch(API_BASE+'/tasks/'+_0xaee489+'/comments/'+_0x521797,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x394ef1})});if(!_0x1d45d2['ok']){const _0x76def4=await _0x1d45d2['json']()['catch'](()=>({}));throw new Error(_0x76def4['error']||'Failed\x20to\x20update\x20comment');}return await _0x1d45d2['json']();},async 'deleteComment'(_0x556add,_0x5d51bd){if(!_0x556add)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d51bd)throw new Error('Comment\x20ID\x20is\x20required');const _0x5781fa=await fetch(API_BASE+'/tasks/'+_0x556add+'/comments/'+_0x5d51bd,{'method':'DELETE'});if(!_0x5781fa['ok']){const _0x512a6a=await _0x5781fa['json']()['catch'](()=>({}));throw new Error(_0x512a6a['error']||'Failed\x20to\x20delete\x20comment');}return await _0x5781fa['json']();},async 'createObjective'(_0x4cba3f){const _0x47ba68={'objective':!![],'name':_0x4cba3f['name']||'','environment':_0x4cba3f['environment']||null,'agents':_0x4cba3f['agents']||[],'branches':_0x4cba3f['branches']||{},'isPinned':_0x4cba3f['isPinned']||![],'parentObjectiveId':_0x4cba3f['parentObjectiveId']||null,'env_vars':_0x4cba3f['envVars']||{},'parameters':{'instructions':_0x4cba3f['instructions']||''},'files':_0x4cba3f['files']||[],'jira':_0x4cba3f['jira']||null};return this['createTask'](_0x47ba68);},async 'updateObjective'(_0x456cca,_0x163592,_0x359f0a=[],_0xf54b6b=[]){let _0x43d3be,_0x3bcc24={};const _0x5341c7={..._0x163592};_0xf54b6b&&_0xf54b6b['length']>0x0&&(_0x5341c7['removeAttachments']=_0xf54b6b);if(_0x359f0a&&_0x359f0a['length']>0x0){const _0x50efa2=new FormData();for(const [_0x3976d8,_0x3d8c2a]of Object['entries'](_0x5341c7)){if(_0x3d8c2a==null)continue;typeof _0x3d8c2a==='object'?_0x50efa2['append'](_0x3976d8,JSON['stringify'](_0x3d8c2a)):_0x50efa2['append'](_0x3976d8,String(_0x3d8c2a));}for(const _0x2e45f4 of _0x359f0a){_0x50efa2['append']('attachments',_0x2e45f4);}_0x43d3be=_0x50efa2;}else _0x3bcc24['Content-Type']='application/json',_0x43d3be=JSON['stringify'](_0x5341c7);const _0x154f8a=await fetch(API_BASE+'/tasks/'+_0x456cca,{'method':'PATCH','headers':_0x3bcc24,'body':_0x43d3be});if(!_0x154f8a['ok']){const _0x460b12=await _0x154f8a['json']();throw new Error(_0x460b12['error']||'Failed\x20to\x20update\x20objective');}return await _0x154f8a['json']();},async 'deleteObjective'(_0x2419c0){return this['deleteTask'](_0x2419c0);},async 'launchObjective'(_0x2f287e,_0x8761ce={}){const _0x4271f9=await fetch(API_BASE+'/tasks/'+_0x2f287e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x8761ce)});if(!_0x4271f9['ok']){const _0x42c424=await _0x4271f9['json']();throw new Error(_0x42c424['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4271f9['json']();},async 'getObjectiveAttachments'(_0x49064a){return this['getTaskAttachments'](_0x49064a);},async 'createJudgeTask'({environment:_0x4e1b37,judgeAgent:_0x5ae8b6,groupId:_0x18c15e,taskIds:_0x5a965d,judgeCustomInstructions:_0x1cb4b6,isPinned:_0x2528d1}){const _0x376ba3=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4e1b37,'judgeAgent':_0x5ae8b6,'groupId':_0x18c15e,'taskIds':_0x5a965d,'judgeCustomInstructions':_0x1cb4b6,'isPinned':_0x2528d1})});if(!_0x376ba3['ok']){const _0x4e5f85=await _0x376ba3['json']();throw new Error(_0x4e5f85['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x376ba3['json']();},async 'getJudgeTasks'(_0x575808){const _0x2df4db=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x575808));if(!_0x2df4db['ok']){const _0x4d4c8b=await _0x2df4db['json']();throw new Error(_0x4d4c8b['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x2df4db['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x19ac10,_0x138df0,_0x1b444b=''){const _0x338a6c=await fetch(API_BASE+'/tasks/'+_0x19ac10+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x138df0,'customPreamble':_0x1b444b})});if(!_0x338a6c['ok']){const _0x3046e0=await _0x338a6c['json']();throw new Error(_0x3046e0['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x338a6c['json']();},async 'getJiraConfig'(){const _0x353002=await fetch(API_BASE+'/jira/config');if(!_0x353002['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x353002['json']();},async 'getJiraIssue'(_0x44ad34){const _0x294cdb=await fetch(API_BASE+'/jira/issues/'+_0x44ad34);if(!_0x294cdb['ok']){const _0x247715=await _0x294cdb['json']()['catch'](()=>({}));throw new Error(_0x247715['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x294cdb['statusText']);}return await _0x294cdb['json']();},async 'searchJiraIssues'(_0x43fa66,_0x308046=0x14){const _0x19b527=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x43fa66,'maxResults':_0x308046})});if(!_0x19b527['ok']){const _0x39b3f4=await _0x19b527['json']()['catch'](()=>({}));throw new Error(_0x39b3f4['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x19b527['statusText']);}return await _0x19b527['json']();},async 'postJiraComment'(_0x457961,_0x3474ba){const _0x2aad36=await fetch(API_BASE+'/jira/issues/'+_0x457961+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3474ba})});if(!_0x2aad36['ok']){const _0x44e217=await _0x2aad36['json']()['catch'](()=>({}));throw new Error(_0x44e217['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x2aad36['statusText']);}return await _0x2aad36['json']();},async 'getJiraComments'(_0x12d3e9){const _0x3a4f13=await fetch(API_BASE+'/jira/issues/'+_0x12d3e9+'/comments');if(!_0x3a4f13['ok']){const _0x54b9d4=await _0x3a4f13['json']()['catch'](()=>({}));throw new Error(_0x54b9d4['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3a4f13['statusText']);}return await _0x3a4f13['json']();},async 'promptParameter'({environment:_0x3d25dc,command:_0x2af2d8,parser:parser='json'}){const _0x324493=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3d25dc,'command':_0x2af2d8,'parser':parser})});if(!_0x324493['ok']){const _0x4f5109=await _0x324493['json']()['catch'](()=>({}));throw new Error(_0x4f5109['message']||_0x4f5109['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x324493['statusText']);}return await _0x324493['json']();},async 'promptParameterStream'(_0x4ea61b,_0x5aac4a){const _0x599234=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ea61b)});if(!_0x599234['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x599234['statusText']);const _0x43b2e3=_0x599234['body']['getReader'](),_0x55927d=new TextDecoder();let _0x3c0eb0='';return new Promise((_0x511ec8,_0xced8fa)=>{const _0x377afb=async()=>{try{const {done:_0x367417,value:_0x2496af}=await _0x43b2e3['read']();if(_0x367417)return;_0x3c0eb0+=_0x55927d['decode'](_0x2496af,{'stream':!![]});const _0x179678=_0x3c0eb0['split']('\x0a\x0a');_0x3c0eb0=_0x179678['pop']()||'';for(const _0x50112c of _0x179678){if(!_0x50112c['trim']())continue;const _0x135df3=_0x50112c['split']('\x0a');let _0x1f3cc3='message',_0x4c43ba='';for(const _0x23d843 of _0x135df3){if(_0x23d843['startsWith']('event:'))_0x1f3cc3=_0x23d843['substring'](0x6)['trim']();else _0x23d843['startsWith']('data:')&&(_0x4c43ba=_0x23d843['substring'](0x5)['trim']());}if(!_0x4c43ba)continue;try{const _0x34e27d=JSON['parse'](_0x4c43ba);if(_0x1f3cc3==='progress'&&_0x5aac4a)_0x5aac4a(_0x34e27d['stage'],_0x34e27d['message']);else{if(_0x1f3cc3==='result'){_0x511ec8(_0x34e27d);return;}else{if(_0x1f3cc3==='error'){let _0x24b294=_0x34e27d['message']||_0x34e27d['error']||'Prompt\x20command\x20failed';_0x34e27d['rawOutput']&&(_0x24b294+='\x0a\x0aRaw\x20output:\x0a'+_0x34e27d['rawOutput']);_0xced8fa(new Error(_0x24b294));return;}}}}catch(_0x133c52){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x133c52),console['error']('Event\x20type:',_0x1f3cc3),console['error']('Event\x20data:',_0x4c43ba),console['error']('First\x20200\x20chars:',_0x4c43ba['substring'](0x0,0xc8)),_0xced8fa(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x133c52['message']+'\x0a\x0aData:\x20'+_0x4c43ba['substring'](0x0,0x1f4)));return;}}_0x377afb();}catch(_0x2094c1){_0xced8fa(_0x2094c1);}};_0x377afb();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x434998){const _0x59207e=await fetch(''+API_BASE+_0x434998);if(!_0x59207e['ok']){const _0x1c06da=await _0x59207e['json']()['catch'](()=>({'error':_0x59207e['statusText']})),_0x4ccc63=new Error(_0x1c06da['error']||_0x1c06da['message']||_0x59207e['statusText']);if(_0x1c06da['detail']!==undefined)_0x4ccc63['detail']=_0x1c06da['detail'];throw _0x4ccc63;}return await _0x59207e['json']();},async 'post'(_0x2c87d0,_0x1063ae){const _0x183015=await fetch(''+API_BASE+_0x2c87d0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1063ae)});if(!_0x183015['ok']){const _0x359078=await _0x183015['json']()['catch'](()=>({'error':_0x183015['statusText']})),_0x32ffd6=new Error(_0x359078['error']||_0x359078['message']||_0x183015['statusText']);if(_0x359078['detail']!==undefined)_0x32ffd6['detail']=_0x359078['detail'];throw _0x32ffd6;}return await _0x183015['json']();},async 'put'(_0x35e566,_0x1f87a6){const _0x568590=await fetch(''+API_BASE+_0x35e566,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f87a6)});if(!_0x568590['ok']){const _0x4e01a2=await _0x568590['json']()['catch'](()=>({'error':_0x568590['statusText']})),_0x5957c6=new Error(_0x4e01a2['error']||_0x4e01a2['message']||_0x568590['statusText']);if(_0x4e01a2['detail']!==undefined)_0x5957c6['detail']=_0x4e01a2['detail'];throw _0x5957c6;}return await _0x568590['json']();},async 'delete'(_0x562179,_0x56c64d){const _0x4d228a={'method':'DELETE'};_0x56c64d&&(_0x4d228a['headers']={'Content-Type':'application/json'},_0x4d228a['body']=JSON['stringify'](_0x56c64d));const _0x3bb833=await fetch(''+API_BASE+_0x562179,_0x4d228a);if(!_0x3bb833['ok']){const _0x1326da=await _0x3bb833['json']()['catch'](()=>({'error':_0x3bb833['statusText']})),_0x2f9f5e=new Error(_0x1326da['error']||_0x1326da['message']||_0x3bb833['statusText']);if(_0x1326da['detail']!==undefined)_0x2f9f5e['detail']=_0x1326da['detail'];throw _0x2f9f5e;}return await _0x3bb833['json']();},async 'getSkills'(){const _0x1580f3=await fetch(API_BASE+'/skills');if(!_0x1580f3['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1580f3['statusText']);return await _0x1580f3['json']();},async 'getSkill'(_0x2b3ad3){const _0x588ce5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2b3ad3));if(!_0x588ce5['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x588ce5['statusText']);return await _0x588ce5['json']();},async 'createSkill'(_0x498f96){const _0x4fcb81=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498f96)});if(!_0x4fcb81['ok']){const _0x5e6a92=await _0x4fcb81['json']()['catch'](()=>({'error':_0x4fcb81['statusText']})),_0x4b8182=new Error(_0x5e6a92['error']||_0x5e6a92['message']||_0x4fcb81['statusText']);if(_0x5e6a92['detail']!==undefined)_0x4b8182['detail']=_0x5e6a92['detail'];throw _0x4b8182;}return await _0x4fcb81['json']();},async 'updateSkill'(_0x26e46d,_0x4b4180){const _0x325204=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x26e46d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b4180)});if(!_0x325204['ok']){const _0xbaf48d=await _0x325204['json']()['catch'](()=>({'error':_0x325204['statusText']})),_0x150474=new Error(_0xbaf48d['error']||_0xbaf48d['message']||_0x325204['statusText']);if(_0xbaf48d['detail']!==undefined)_0x150474['detail']=_0xbaf48d['detail'];throw _0x150474;}return await _0x325204['json']();},async 'deleteSkill'(_0x1ebdea){const _0x546273=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1ebdea),{'method':'DELETE'});if(!_0x546273['ok']){const _0x5aeb22=await _0x546273['json']()['catch'](()=>({'error':_0x546273['statusText']})),_0x458889=new Error(_0x5aeb22['error']||_0x5aeb22['message']||_0x546273['statusText']);if(_0x5aeb22['detail']!==undefined)_0x458889['detail']=_0x5aeb22['detail'];throw _0x458889;}return await _0x546273['json']();},async 'getSkillFile'(_0x4d401c,_0x4f22f9){const _0x3967a9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4d401c)+'/files/'+_0x4f22f9);if(!_0x3967a9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3967a9['statusText']);return await _0x3967a9['json']();},async 'saveSkillFile'(_0x3cf9f9,_0x15a887,_0x24f3b7){const _0x5df60c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3cf9f9)+'/files/'+_0x15a887,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x24f3b7})});if(!_0x5df60c['ok']){const _0x1055e3=await _0x5df60c['json']()['catch'](()=>({'error':_0x5df60c['statusText']})),_0x375c5a=new Error(_0x1055e3['error']||_0x1055e3['message']||_0x5df60c['statusText']);if(_0x1055e3['detail']!==undefined)_0x375c5a['detail']=_0x1055e3['detail'];throw _0x375c5a;}return await _0x5df60c['json']();},async 'deleteSkillFile'(_0x19c49c,_0x54a511){const _0x5a0864=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x19c49c)+'/files/'+_0x54a511,{'method':'DELETE'});if(!_0x5a0864['ok']){const _0x3b1251=await _0x5a0864['json']()['catch'](()=>({'error':_0x5a0864['statusText']})),_0x3c0726=new Error(_0x3b1251['error']||_0x3b1251['message']||_0x5a0864['statusText']);if(_0x3b1251['detail']!==undefined)_0x3c0726['detail']=_0x3b1251['detail'];throw _0x3c0726;}return await _0x5a0864['json']();},async 'pullSkills'(){const _0x245541=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x245541['ok']){const _0x30c9aa=await _0x245541['json']()['catch'](()=>({'error':_0x245541['statusText']})),_0x39ae9e=new Error(_0x30c9aa['error']||_0x30c9aa['message']||_0x245541['statusText']);if(_0x30c9aa['detail']!==undefined)_0x39ae9e['detail']=_0x30c9aa['detail'];throw _0x39ae9e;}return await _0x245541['json']();},async 'commitSkills'(_0x1736d4,_0xf3841a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xf3841a,_0x2d465b=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1736d4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2d465b['ok']){const _0x6ef5b4=await _0x2d465b['json']()['catch'](()=>({'error':_0x2d465b['statusText']})),_0xe6347c=new Error(_0x6ef5b4['error']||_0x6ef5b4['message']||_0x2d465b['statusText']);if(_0x6ef5b4['detail']!==undefined)_0xe6347c['detail']=_0x6ef5b4['detail'];throw _0xe6347c;}return await _0x2d465b['json']();},async 'discardSkillsChanges'(){const _0x36eb77=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x36eb77['ok']){const _0x52e0fc=await _0x36eb77['json']()['catch'](()=>({'error':_0x36eb77['statusText']})),_0x3653f5=new Error(_0x52e0fc['error']||_0x52e0fc['message']||_0x36eb77['statusText']);if(_0x52e0fc['detail']!==undefined)_0x3653f5['detail']=_0x52e0fc['detail'];throw _0x3653f5;}return await _0x36eb77['json']();},async 'getSkillCatalog'(){const _0x2ad5bc=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ad5bc['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ad5bc['statusText']);return await _0x2ad5bc['json']();},async 'getImportedSkillsRegistry'(){const _0x5522ee=await fetch(API_BASE+'/external-skills/registry');if(!_0x5522ee['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5522ee['statusText']);return await _0x5522ee['json']();},async 'importCatalogSkill'(_0x6d4a8f){const _0x4a8eb5=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x6d4a8f})});if(!_0x4a8eb5['ok']){const _0x100d89=await _0x4a8eb5['json']()['catch'](()=>({'error':_0x4a8eb5['statusText']})),_0x2a5ee5=new Error(_0x100d89['error']||_0x100d89['message']||_0x4a8eb5['statusText']);if(_0x100d89['detail']!==undefined)_0x2a5ee5['detail']=_0x100d89['detail'];throw _0x2a5ee5;}return await _0x4a8eb5['json']();},async 'importSkillFromGit'(_0x25e71d,_0x24cdd1,_0x42ee2a='main',_0x2d20c0=null){const _0xfc6100=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x25e71d,'skillPath':_0x24cdd1,'branch':_0x42ee2a,'skillId':_0x2d20c0})});if(!_0xfc6100['ok']){const _0x2cc8d5=await _0xfc6100['json']()['catch'](()=>({'error':_0xfc6100['statusText']})),_0x44519e=new Error(_0x2cc8d5['error']||_0x2cc8d5['message']||_0xfc6100['statusText']);if(_0x2cc8d5['detail']!==undefined)_0x44519e['detail']=_0x2cc8d5['detail'];throw _0x44519e;}return await _0xfc6100['json']();},async 'probeMarketplace'(_0x187311,_0x319833='main'){const _0x5147bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x187311,'branch':_0x319833})});if(!_0x5147bd['ok']){const _0x486650=await _0x5147bd['json']()['catch'](()=>({'error':_0x5147bd['statusText']})),_0x3f8d88=new Error(_0x486650['error']||_0x486650['message']||_0x5147bd['statusText']);if(_0x486650['detail']!==undefined)_0x3f8d88['detail']=_0x486650['detail'];throw _0x3f8d88;}return await _0x5147bd['json']();},async 'importMarketplaceBundle'(_0x21baf5,_0x621c98,_0x26056f,_0x221144=null){const _0x37bc63=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x21baf5,'branch':_0x621c98,'bundleId':_0x26056f,'selectedSkills':_0x221144})});if(!_0x37bc63['ok']){const _0x36845c=await _0x37bc63['json']()['catch'](()=>({'error':_0x37bc63['statusText']})),_0x2bb1c4=new Error(_0x36845c['error']||_0x36845c['message']||_0x37bc63['statusText']);if(_0x36845c['detail']!==undefined)_0x2bb1c4['detail']=_0x36845c['detail'];throw _0x2bb1c4;}return await _0x37bc63['json']();},async 'importSkillFromFolder'(_0x2e3288,_0x2bb0ae=null){const _0x7d654e=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2e3288,'skillId':_0x2bb0ae})});if(!_0x7d654e['ok']){const _0x5a3a6e=await _0x7d654e['json']()['catch'](()=>({'error':_0x7d654e['statusText']})),_0x397cd2=new Error(_0x5a3a6e['error']||_0x5a3a6e['message']||_0x7d654e['statusText']);if(_0x5a3a6e['detail']!==undefined)_0x397cd2['detail']=_0x5a3a6e['detail'];throw _0x397cd2;}return await _0x7d654e['json']();},async 'importSkillFromNpm'(_0x20c85b,_0x426073='latest',_0x2dfa63=null,_0x4bd157=null){const _0x28ac67=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x20c85b,'version':_0x426073,'skillId':_0x2dfa63,'registry':_0x4bd157})});if(!_0x28ac67['ok']){const _0x1ebc8c=await _0x28ac67['json']()['catch'](()=>({'error':_0x28ac67['statusText']})),_0x142a67=new Error(_0x1ebc8c['error']||_0x1ebc8c['message']||_0x28ac67['statusText']);if(_0x1ebc8c['detail']!==undefined)_0x142a67['detail']=_0x1ebc8c['detail'];throw _0x142a67;}return await _0x28ac67['json']();},async 'checkSkillUpdates'(_0x4826b8){const _0x39e62d=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4826b8)+'/check-updates',{'method':'POST'});if(!_0x39e62d['ok']){const _0x83748a=await _0x39e62d['json']()['catch'](()=>({'error':_0x39e62d['statusText']})),_0x42569c=new Error(_0x83748a['error']||_0x83748a['message']||_0x39e62d['statusText']);if(_0x83748a['detail']!==undefined)_0x42569c['detail']=_0x83748a['detail'];throw _0x42569c;}return await _0x39e62d['json']();},async 'updateExternalSkill'(_0x1c06f5){const _0xb22ed7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1c06f5)+'/update',{'method':'POST'});if(!_0xb22ed7['ok']){const _0x304e9e=await _0xb22ed7['json']()['catch'](()=>({'error':_0xb22ed7['statusText']})),_0x1c3996=new Error(_0x304e9e['error']||_0x304e9e['message']||_0xb22ed7['statusText']);if(_0x304e9e['detail']!==undefined)_0x1c3996['detail']=_0x304e9e['detail'];throw _0x1c3996;}return await _0xb22ed7['json']();},async 'updateSkillFlags'(_0x24a923,_0x148196){const _0x490fdd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x24a923)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x148196})});if(!_0x490fdd['ok']){const _0x4d3fd9=await _0x490fdd['json']()['catch'](()=>({'error':_0x490fdd['statusText']})),_0x5cca65=new Error(_0x4d3fd9['error']||_0x4d3fd9['message']||_0x490fdd['statusText']);if(_0x4d3fd9['detail']!==undefined)_0x5cca65['detail']=_0x4d3fd9['detail'];throw _0x5cca65;}return await _0x490fdd['json']();},async 'removeFromImportedRegistry'(_0x556915){const _0x4dbfd4=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x556915)+'/registry',{'method':'DELETE'});if(!_0x4dbfd4['ok']){const _0x3c3762=await _0x4dbfd4['json']()['catch'](()=>({'error':_0x4dbfd4['statusText']})),_0x42a590=new Error(_0x3c3762['error']||_0x3c3762['message']||_0x4dbfd4['statusText']);if(_0x3c3762['detail']!==undefined)_0x42a590['detail']=_0x3c3762['detail'];throw _0x42a590;}return await _0x4dbfd4['json']();},async 'getTeams'(){const _0xbc6396=await fetch(API_BASE+'/teams');if(!_0xbc6396['ok']){const _0x1aabb5=await _0xbc6396['json']()['catch'](()=>({'message':_0xbc6396['statusText']}));throw new Error(_0x1aabb5['message']||'Failed\x20to\x20get\x20teams');}return await _0xbc6396['json']();},async 'getTeam'(_0x5dd44a){const _0xa018e5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5dd44a));if(!_0xa018e5['ok']){const _0x34cb50=await _0xa018e5['json']()['catch'](()=>({'message':_0xa018e5['statusText']}));throw new Error(_0x34cb50['message']||'Failed\x20to\x20get\x20team');}return await _0xa018e5['json']();},async 'createTeam'(_0x43ee5a){const _0x433c7b=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43ee5a)});if(!_0x433c7b['ok']){const _0x43fdc4=await _0x433c7b['json']()['catch'](()=>({'message':_0x433c7b['statusText']}));throw new Error(_0x43fdc4['message']||'Failed\x20to\x20create\x20team');}return await _0x433c7b['json']();},async 'updateTeam'(_0xa9f9d7,_0x269dfc){const _0x51f254=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xa9f9d7),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x269dfc)});if(!_0x51f254['ok']){const _0x4f5da2=await _0x51f254['json']()['catch'](()=>({'message':_0x51f254['statusText']}));throw new Error(_0x4f5da2['message']||'Failed\x20to\x20update\x20team');}return await _0x51f254['json']();},async 'deleteTeam'(_0xa0fac){const _0x130138=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xa0fac),{'method':'DELETE'});if(!_0x130138['ok']){const _0x434151=await _0x130138['json']()['catch'](()=>({'message':_0x130138['statusText']}));throw new Error(_0x434151['message']||'Failed\x20to\x20delete\x20team');}return await _0x130138['json']();},async 'addTeamMember'(_0x2cfdf1,_0x56a628){const _0x564518=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2cfdf1)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x56a628})});if(!_0x564518['ok']){const _0x5215ea=await _0x564518['json']()['catch'](()=>({'message':_0x564518['statusText']}));throw new Error(_0x5215ea['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x564518['json']();},async 'removeTeamMember'(_0x29a486,_0x17c97d){const _0x1a2296=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x29a486)+'/members/'+encodeURIComponent(_0x17c97d),{'method':'DELETE'});if(!_0x1a2296['ok']){const _0x58c5ea=await _0x1a2296['json']()['catch'](()=>({'message':_0x1a2296['statusText']}));throw new Error(_0x58c5ea['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1a2296['json']();},async 'getBindings'(_0x2262a0={}){const _0x5072cc=new URLSearchParams();if(_0x2262a0['resource_type'])_0x5072cc['set']('resource_type',_0x2262a0['resource_type']);if(_0x2262a0['resource_id'])_0x5072cc['set']('resource_id',_0x2262a0['resource_id']);if(_0x2262a0['subject_type'])_0x5072cc['set']('subject_type',_0x2262a0['subject_type']);if(_0x2262a0['subject_id'])_0x5072cc['set']('subject_id',_0x2262a0['subject_id']);const _0x346cfa=_0x5072cc['toString'](),_0x14cf4f=await fetch(API_BASE+'/bindings'+(_0x346cfa?'?'+_0x346cfa:''));if(!_0x14cf4f['ok']){const _0x12fd77=await _0x14cf4f['json']()['catch'](()=>({'message':_0x14cf4f['statusText']}));throw new Error(_0x12fd77['message']||'Failed\x20to\x20get\x20bindings');}return await _0x14cf4f['json']();},async 'createBinding'(_0xbdcbea){const _0x5060c6=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbdcbea)});if(!_0x5060c6['ok']){const _0x355a04=await _0x5060c6['json']()['catch'](()=>({'message':_0x5060c6['statusText']}));throw new Error(_0x355a04['message']||'Failed\x20to\x20create\x20binding');}return await _0x5060c6['json']();},async 'updateBinding'(_0x284d51,_0x593bb0){const _0x531d3e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x284d51),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x593bb0)});if(!_0x531d3e['ok']){const _0x48772a=await _0x531d3e['json']()['catch'](()=>({'message':_0x531d3e['statusText']}));throw new Error(_0x48772a['message']||'Failed\x20to\x20update\x20binding');}return await _0x531d3e['json']();},async 'deleteBinding'(_0x1d62ee){const _0x33d42e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1d62ee),{'method':'DELETE'});if(!_0x33d42e['ok']){const _0x3891bc=await _0x33d42e['json']()['catch'](()=>({'message':_0x33d42e['statusText']}));throw new Error(_0x3891bc['message']||'Failed\x20to\x20delete\x20binding');}return await _0x33d42e['json']();},async 'getRoleDefinitions'(){const _0x36b2fe=await fetch(API_BASE+'/roles');if(!_0x36b2fe['ok']){const _0x49b281=await _0x36b2fe['json']()['catch'](()=>({'message':_0x36b2fe['statusText']}));throw new Error(_0x49b281['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x36b2fe['json']();},async 'getRoleDefinition'(_0x2d73e8){const _0x167c9a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2d73e8));if(!_0x167c9a['ok']){const _0x42a121=await _0x167c9a['json']()['catch'](()=>({'message':_0x167c9a['statusText']}));throw new Error(_0x42a121['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x167c9a['json']();},async 'createRoleDefinition'(_0x37adec){const _0x24c21e=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37adec)});if(!_0x24c21e['ok']){const _0x5ca44d=await _0x24c21e['json']()['catch'](()=>({'message':_0x24c21e['statusText']}));throw new Error(_0x5ca44d['message']||_0x5ca44d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x24c21e['json']();},async 'updateRoleDefinition'(_0x42c8ee,_0x58c27d){const _0x4f9c7d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x42c8ee),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x58c27d)});if(!_0x4f9c7d['ok']){const _0x87633c=await _0x4f9c7d['json']()['catch'](()=>({'message':_0x4f9c7d['statusText']}));throw new Error(_0x87633c['message']||_0x87633c['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4f9c7d['json']();},async 'deleteRoleDefinition'(_0x180dc9){const _0xdb82cc=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x180dc9),{'method':'DELETE'});if(!_0xdb82cc['ok']){const _0x1cb2a4=await _0xdb82cc['json']()['catch'](()=>({'message':_0xdb82cc['statusText']}));throw new Error(_0x1cb2a4['message']||_0x1cb2a4['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0xdb82cc['json']();},async 'getAvailablePermissions'(){const _0x38e2c4=await fetch(API_BASE+'/roles/available-permissions');if(!_0x38e2c4['ok']){const _0x560981=await _0x38e2c4['json']()['catch'](()=>({'message':_0x38e2c4['statusText']}));throw new Error(_0x560981['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x38e2c4['json']();},async 'getGitProviderAllowedTeams'(_0xc9f0cb){const _0x17dda3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xc9f0cb)+'/allowed-teams');if(!_0x17dda3['ok']){const _0x567efc=await _0x17dda3['json']()['catch'](()=>({'message':_0x17dda3['statusText']}));throw new Error(_0x567efc['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x17dda3['json']();},async 'setGitProviderAllowedTeams'(_0x4ca313,_0x11628b){const _0x23f9a9=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4ca313)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x11628b})});if(!_0x23f9a9['ok']){const _0x25bfcf=await _0x23f9a9['json']()['catch'](()=>({'message':_0x23f9a9['statusText']}));throw new Error(_0x25bfcf['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x23f9a9['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 _0x3015de=toastState['baseBottom'];toastState['toasts']['forEach'](_0x29a19d=>{_0x29a19d['el']['style']['bottom']=_0x3015de+'px';const _0x2a958a=_0x29a19d['el']['offsetHeight']||toastState['defaultHeight'];_0x3015de+=_0x2a958a+toastState['gap'];});});}function removeToastById(_0x2a730b){const _0x2bd537=toastState['toasts']['findIndex'](_0x3e77ee=>_0x3e77ee['id']===_0x2a730b);if(_0x2bd537===-0x1)return;const _0x34f6fa=toastState['toasts'][_0x2bd537];if(_0x34f6fa['timeoutId'])clearTimeout(_0x34f6fa['timeoutId']);_0x34f6fa['el']['classList']['remove']('show'),setTimeout(()=>_0x34f6fa['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2bd537,0x1),repositionAllToasts();}function registerToast(_0x1db8ab){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1db8ab),repositionAllToasts(),_0x1db8ab['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(_0x51609a){if(_0x51609a===null||_0x51609a===undefined)return'';return String(_0x51609a)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x59af5a,_0x5922d2){if(_0x59af5a&&typeof _0x59af5a==='object'&&!Array['isArray'](_0x59af5a))return{'code':typeof _0x59af5a['text']==='string'?_0x59af5a['text']:'','language':typeof _0x59af5a['lang']==='string'?_0x59af5a['lang']:''};return{'code':typeof _0x59af5a==='string'?_0x59af5a:'','language':typeof _0x5922d2==='string'?_0x5922d2:''};}function buildMermaidBlock(_0x17ee5c){const _0x266365=String(_0x17ee5c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x266365))+'\x22>'+escapeHtmlValue(_0x266365)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x3017a9=new marked['Renderer'](),_0x24eb34=_0x3017a9['code']['bind'](_0x3017a9);return _0x3017a9['code']=function(_0x4498ba,_0x1f1b86,..._0x2f21e5){const {code:_0x4ad2e6,language:_0xfb4132}=getMarkdownCodeBlockPayload(_0x4498ba,_0x1f1b86),_0x3b80c0=String(_0xfb4132||'')['trim']()['toLowerCase']();if(_0x3b80c0==='mermaid')return buildMermaidBlock(_0x4ad2e6);const _0x136cc0=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x136cc0&&_0x3b80c0)try{const _0x5bb838=_0x136cc0['getLanguage'](_0x3b80c0)?_0x3b80c0:'plaintext',_0x56a426=_0x136cc0['highlight'](_0x4ad2e6,{'language':_0x5bb838})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x3b80c0)+'\x22>'+_0x56a426+'</code></pre>';}catch(_0x35cb89){console['error']('Syntax\x20highlighting\x20error:',_0x35cb89);}return _0x24eb34(_0x4498ba,_0x1f1b86,..._0x2f21e5);},sharedMarkedRenderer=_0x3017a9,_0x3017a9;}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 _0x183898=window['mermaid'];if(!_0x183898||typeof _0x183898['initialize']!=='function')return _0x183898||null;return _0x183898['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x183898;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x433ef0,_0x218e16)=>{const _0x47a8e7=()=>_0x433ef0(configureMermaidInstance()),_0x3c3d77=()=>{mermaidLoadPromise=null,_0x218e16(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0xb4ecee=document['getElementById'](MERMAID_SCRIPT_ID);!_0xb4ecee&&(_0xb4ecee=document['createElement']('script'),_0xb4ecee['id']=MERMAID_SCRIPT_ID,_0xb4ecee['src']=MERMAID_SCRIPT_SRC,_0xb4ecee['async']=!![],document['head']['appendChild'](_0xb4ecee));if(window['mermaid']){_0x47a8e7();return;}_0xb4ecee['addEventListener']('load',_0x47a8e7,{'once':!![]}),_0xb4ecee['addEventListener']('error',_0x3c3d77,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4bb132){const _0x2831ad=_0x4bb132['getAttribute']('data-mermaid-source');if(!_0x2831ad)return null;let _0x498744=_0x2831ad;try{_0x498744=decodeURIComponent(_0x2831ad);}catch{}return _0x4bb132['textContent']=_0x498744,_0x4bb132['removeAttribute']('data-processed'),_0x4bb132['removeAttribute']('aria-roledescription'),_0x4bb132['removeAttribute']('role'),_0x4bb132['removeAttribute']('aria-label'),_0x498744;}function collectMermaidNodes(_0x580cc1,_0x198135){if(!(_0x580cc1 instanceof Element))return;_0x580cc1['matches']('.mermaid[data-mermaid-source]')&&_0x198135['add'](_0x580cc1),_0x580cc1['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2692fd=>{_0x198135['add'](_0x2692fd);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2deb86=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x502002=>setTimeout(_0x502002,0x0);_0x2deb86(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5632de=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5632de);});});}function queueMermaidRender(_0x1a6050){const _0x32676d=new Set();_0x1a6050 instanceof Document||_0x1a6050 instanceof DocumentFragment?_0x1a6050['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x11116f=>_0x32676d['add'](_0x11116f)):collectMermaidNodes(_0x1a6050,_0x32676d);if(_0x32676d['size']===0x0)return;_0x32676d['forEach'](_0x2ab9ed=>pendingMermaidNodes['add'](_0x2ab9ed)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x3ee538=Array['from'](pendingMermaidNodes)['filter'](_0x3ebee9=>_0x3ebee9['isConnected']);pendingMermaidNodes['clear']();if(_0x3ee538['length']===0x0)return;const _0x3fb9fd=await loadMermaid();if(!_0x3fb9fd)return;configureMermaidInstance();const _0x5c08d8=getMermaidTheme();for(const _0x3d5cea of _0x3ee538){const _0x269b16=_0x3d5cea['getAttribute']('data-mermaid-source');if(!_0x269b16)continue;const _0x2d5364=_0x3d5cea['getAttribute']('data-processed')==='true';if(_0x2d5364&&_0x3d5cea['dataset']['mermaidTheme']===_0x5c08d8)continue;restoreMermaidSource(_0x3d5cea);try{if(typeof _0x3fb9fd['run']==='function')await _0x3fb9fd['run']({'nodes':[_0x3d5cea]});else typeof _0x3fb9fd['init']==='function'&&_0x3fb9fd['init'](undefined,[_0x3d5cea]);_0x3d5cea['dataset']['mermaidTheme']=_0x5c08d8,delete _0x3d5cea['dataset']['mermaidError'];}catch(_0x3fa2db){console['error']('Mermaid\x20render\x20failed:',_0x3fa2db),restoreMermaidSource(_0x3d5cea),_0x3d5cea['dataset']['mermaidError']='true',delete _0x3d5cea['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x414ce5=>{_0x414ce5['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x414ce5);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x228435=>{_0x228435['forEach'](_0x160fab=>{_0x160fab['addedNodes']['forEach'](_0xd6d553=>{_0xd6d553['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xd6d553);});});}),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'(_0x4ae011){const _0x568db6=new Date(_0x4ae011),_0x580a73=new Date(),_0x2aaa12=_0x580a73-_0x568db6,_0x41cc77=Math['floor'](_0x2aaa12/0x3e8),_0x12c53b=Math['floor'](_0x41cc77/0x3c),_0x551984=Math['floor'](_0x12c53b/0x3c),_0x277be9=Math['floor'](_0x551984/0x18);if(_0x41cc77<0x3c)return'now';if(_0x12c53b<0x3c)return _0x12c53b+'m\x20ago';if(_0x551984<0x18)return _0x551984+'h\x20ago';return _0x277be9+'d\x20ago';},'getStatusIcon'(_0x39a08f){switch(_0x39a08f){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0xe7daa9){switch(_0xe7daa9){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'(_0x5a641b,_0x5df41c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x277dda={};_0x277dda['text/plain']=new Blob([_0x5a641b],{'type':'text/plain'});_0x5df41c&&(_0x277dda['text/html']=new Blob([_0x5df41c],{'type':'text/html'}));const _0x723750=new ClipboardItem(_0x277dda);return await navigator['clipboard']['write']([_0x723750]),!![];}catch(_0x5e7857){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5e7857);}try{const _0x42da37=_0x32037b=>{_0x32037b['preventDefault'](),_0x32037b['clipboardData']['setData']('text/plain',_0x5a641b),_0x5df41c&&_0x32037b['clipboardData']['setData']('text/html',_0x5df41c);};document['addEventListener']('copy',_0x42da37);const _0x493005=document['execCommand']('copy');document['removeEventListener']('copy',_0x42da37);if(_0x493005)return!![];}catch(_0x21b475){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x21b475);}try{const _0x18b8f1=document['createElement']('textarea');_0x18b8f1['value']=_0x5a641b,_0x18b8f1['style']['position']='fixed',_0x18b8f1['style']['opacity']='0',_0x18b8f1['style']['pointerEvents']='none',document['body']['appendChild'](_0x18b8f1),_0x18b8f1['select']();const _0x2df0d3=document['execCommand']('copy');return document['body']['removeChild'](_0x18b8f1),_0x2df0d3;}catch(_0x3d3616){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3d3616),![];}},'showToast'(_0x57e5a2,_0x477ae1='info'){const _0x3c1cd2=getNextToastId(),_0x16dff1=document['createElement']('div');_0x16dff1['className']='toast\x20toast-'+_0x477ae1,_0x16dff1['textContent']=_0x57e5a2,_0x16dff1['dataset']['toastId']=_0x3c1cd2,document['body']['appendChild'](_0x16dff1);const _0x2aac46=_0x477ae1==='error'?0x2710:0xbb8,_0x56eb30=setTimeout(()=>{removeToastById(_0x3c1cd2);},_0x2aac46),_0x51fcac={'id':_0x3c1cd2,'el':_0x16dff1,'timeoutId':_0x56eb30};return registerToast(_0x51fcac),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x16dff1['classList']['add']('show');});}),_0x3c1cd2;},'showError'(_0x232c16){console['error'](_0x232c16);const _0x25bf32=typeof _0x232c16==='string'?_0x232c16:_0x232c16['message']||'An\x20error\x20occurred';this['showToast'](_0x25bf32,'error');},'showSuccess'(_0x458e38){this['showToast'](_0x458e38,'success');},'capitalize'(_0x47f55f){if(!_0x47f55f)return'';return _0x47f55f['charAt'](0x0)['toUpperCase']()+_0x47f55f['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x215515){return escapeHtmlValue(_0x215515);},'ansiToHtml'(_0x24aedb){if(_0x24aedb===null||_0x24aedb===undefined)return'';let _0xda6a4c=this['escapeHtml'](_0x24aedb);const _0x2ee094={'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'},_0x2d2b61={'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 _0x2c15de=0x0;return _0xda6a4c=_0xda6a4c['replace'](/\x1b\[([0-9;]*)m/g,(_0xb06d5,_0x159017)=>{if(!_0x159017||_0x159017==='0'){const _0x39e95e='</span>'['repeat'](_0x2c15de);return _0x2c15de=0x0,_0x39e95e;}const _0x35195b=_0x159017['split'](';'),_0x3151f5=[];for(const _0x5ae9e1 of _0x35195b){if(_0x5ae9e1==='1')_0x3151f5['push']('font-weight:bold');else{if(_0x5ae9e1==='2')_0x3151f5['push']('opacity:0.7');else{if(_0x5ae9e1==='3')_0x3151f5['push']('font-style:italic');else{if(_0x5ae9e1==='4')_0x3151f5['push']('text-decoration:underline');else{if(_0x5ae9e1==='9')_0x3151f5['push']('text-decoration:line-through');else{if(_0x2ee094[_0x5ae9e1])_0x3151f5['push']('color:'+_0x2ee094[_0x5ae9e1]);else{if(_0x2d2b61[_0x5ae9e1])_0x3151f5['push']('background-color:'+_0x2d2b61[_0x5ae9e1]);}}}}}}}if(_0x3151f5['length']>0x0)return _0x2c15de++,'<span\x20style=\x22'+_0x3151f5['join'](';')+'\x22>';return'';}),_0xda6a4c+='</span>'['repeat'](_0x2c15de),_0xda6a4c=_0xda6a4c['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4a20db,_0x23edbb)=>{if(!_0x23edbb||_0x23edbb==='0')return'';const _0xc97f17=_0x23edbb['split'](';'),_0x253229=[];for(const _0x34d930 of _0xc97f17){if(_0x34d930==='1')_0x253229['push']('font-weight:bold');else{if(_0x2ee094[_0x34d930])_0x253229['push']('color:'+_0x2ee094[_0x34d930]);else{if(_0x2d2b61[_0x34d930])_0x253229['push']('background-color:'+_0x2d2b61[_0x34d930]);}}}if(_0x253229['length']>0x0)return'<span\x20style=\x22'+_0x253229['join'](';')+'\x22>';return'';}),_0xda6a4c;},'showModal'({title:_0x5c60d2,content:_0x34c63c,buttons:buttons=[]}){const _0x8245ab='\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'](_0x5c60d2)+'</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'+_0x34c63c+'\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']((_0x54b884,_0x45ba59)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x54b884['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x45ba59+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x54b884['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',_0x5b382a=document['createElement']('div');_0x5b382a['id']='utils-modal',_0x5b382a['className']='modal',_0x5b382a['innerHTML']=_0x8245ab,document['body']['appendChild'](_0x5b382a);const _0x4f97f8=document['getElementById']('utils-modal-close');_0x4f97f8&&_0x4f97f8['addEventListener']('click',()=>this['hideModal']());const _0x41f88f=_0x5b382a['querySelectorAll']('[data-btn-index]');_0x41f88f['forEach'](_0x4bf303=>{const _0x5b481f=parseInt(_0x4bf303['dataset']['btnIndex']);buttons[_0x5b481f]?.['onClick']&&_0x4bf303['addEventListener']('click',buttons[_0x5b481f]['onClick']);});const _0xd4c9e9=document['getElementById']('utils-modal-overlay');_0xd4c9e9&&_0xd4c9e9['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x4b63ae=document['getElementById']('utils-modal');_0x4b63ae&&_0x4b63ae['remove']();},'parseKeyValuePairs'(_0x17d5fe){const _0x1c9fa1={};if(!_0x17d5fe)return _0x1c9fa1;return _0x17d5fe['split'](/\r?\n/)['map'](_0xe7857e=>_0xe7857e['trim']())['filter'](Boolean)['forEach'](_0x2bfdd1=>{const _0x13422c=_0x2bfdd1['indexOf']('=');if(_0x13422c>0x0){const _0x122a47=_0x2bfdd1['slice'](0x0,_0x13422c)['trim'](),_0x34be28=_0x2bfdd1['slice'](_0x13422c+0x1)['trim']();if(_0x122a47)_0x1c9fa1[_0x122a47]=_0x34be28;}}),_0x1c9fa1;},'debounce'(_0x5ec9b4,_0x22314d=0xfa){let _0x33dbe1=null;return(..._0x3abff4)=>{clearTimeout(_0x33dbe1),_0x33dbe1=setTimeout(()=>_0x5ec9b4['apply'](this,_0x3abff4),_0x22314d);};},'formatTimestamp'(_0x13b64a){if(!_0x13b64a)return'N/A';const _0x4aa824=new Date(_0x13b64a);return _0x4aa824['toLocaleDateString']()+'\x20'+_0x4aa824['toLocaleTimeString']();},'getQueryParams'(){const _0x2393b7=new URLSearchParams(window['location']['search']),_0x510971={};for(const [_0x3af2f5,_0x5e00b2]of _0x2393b7){_0x510971[_0x3af2f5]=_0x5e00b2;}return _0x510971;},'formatDuration'(_0x253bb2,_0x50eb7b){if(!_0x253bb2)return'N/A';const _0x14a342=new Date(_0x253bb2),_0x4d08bf=_0x50eb7b?new Date(_0x50eb7b):new Date(),_0x1251df=_0x4d08bf-_0x14a342;if(_0x1251df<0x0)return'0s';const _0x4a78c8=Math['floor'](_0x1251df/0x3e8),_0xe80007=Math['floor'](_0x4a78c8/0x3c),_0x10cf10=Math['floor'](_0xe80007/0x3c),_0x41105d=Math['floor'](_0x10cf10/0x18);if(_0x4a78c8<0x3c)return _0x4a78c8+'s';if(_0xe80007<0x3c)return _0xe80007+'m\x20'+_0x4a78c8%0x3c+'s';if(_0x10cf10<0x18)return _0x10cf10+'h\x20'+_0xe80007%0x3c+'m\x20'+_0x4a78c8%0x3c+'s';return _0x41105d+'d\x20'+_0x10cf10%0x18+'h\x20'+_0xe80007%0x3c+'m';},'renderMarkdown'(_0x3dbc8e,_0x5772bc={}){if(!_0x3dbc8e)return'';_0x3dbc8e=this['rewriteAttachmentLinks'](_0x3dbc8e,_0x5772bc),_0x3dbc8e=this['rewriteColorSyntax'](_0x3dbc8e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x3dbc8e,_0x5772bc);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x3dbc8e);}catch(_0x385089){return console['error']('Markdown\x20parsing\x20error:',_0x385089),this['renderMarkdownFallback'](_0x3dbc8e,_0x5772bc);}},'rewriteAttachmentLinks'(_0x208693,_0x4dbf35={}){const _0x4231b5=typeof _0x4dbf35['resolveAttachmentUrl']==='function'?_0x4dbf35['resolveAttachmentUrl']:_0x4dbf35['taskId']?_0x4407d7=>API_BASE+'/tasks/'+_0x4dbf35['taskId']+'/attachments/'+encodeURIComponent(_0x4407d7):null;if(!_0x4231b5)return _0x208693;return String(_0x208693)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x1e5274,_0x5bc737)=>{const _0x44900f=String(_0x5bc737||'')['trim']();if(!_0x44900f)return _0x1e5274;let _0xf0b6a1=_0x44900f;try{_0xf0b6a1=decodeURIComponent(_0x44900f);}catch{}const _0x5dfb4f=_0x4231b5(_0xf0b6a1);if(!_0x5dfb4f)return _0x1e5274;return']('+_0x5dfb4f+')';});},'rewriteColorSyntax'(_0xc00cf5){if(!_0xc00cf5)return _0xc00cf5;return String(_0xc00cf5)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x8e6484,_0x1e95ee,_0x4e6836)=>{const _0x5e8097=this['rewriteColorSyntax'](_0x4e6836);return'<span\x20style=\x22color:\x20'+_0x1e95ee+'\x22>'+_0x5e8097+'</span>';});},'renderMarkdownFallback'(_0x47974f,_0x176282={}){if(!_0x47974f)return'';_0x47974f=_0x47974f['replace'](/\r\n/g,'\x0a'),_0x47974f=_0x47974f['replace'](/\r/g,'\x0a'),_0x47974f=this['rewriteAttachmentLinks'](_0x47974f,_0x176282);let _0xeb5292=this['escapeHtml'](_0x47974f);return _0xeb5292=_0xeb5292['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0xeb5292=_0xeb5292['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0xeb5292=_0xeb5292['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0xeb5292=_0xeb5292['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0xeb5292=_0xeb5292['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0xeb5292=_0xeb5292['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0xeb5292=_0xeb5292['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0xeb5292=_0xeb5292['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0xeb5292=_0xeb5292['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0xeb5292=_0xeb5292['replace'](/\n\n/g,'</p><p>'),_0xeb5292=_0xeb5292['replace'](/\n/g,'<br>'),'<p>'+_0xeb5292+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x2d25e5=new Uint8Array(0x10);crypto['getRandomValues'](_0x2d25e5),_0x2d25e5[0x6]=_0x2d25e5[0x6]&0xf|0x40,_0x2d25e5[0x8]=_0x2d25e5[0x8]&0x3f|0x80;const _0x3415d2=Array['from'](_0x2d25e5,_0x3bb197=>_0x3bb197['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3415d2['slice'](0x0,0x8)+'-'+_0x3415d2['slice'](0x8,0xc)+'-'+_0x3415d2['slice'](0xc,0x10)+'-'+_0x3415d2['slice'](0x10,0x14)+'-'+_0x3415d2['slice'](0x14);}};export class CustomSelect{constructor(_0x321ab5,_0xf86142={}){this['nativeSelect']=_0x321ab5,this['options']=_0xf86142,this['isOpen']=![],this['selectedValue']=_0x321ab5['value']||'',this['searchable']=_0xf86142['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1622bd=document['createElement']('div');_0x1622bd['className']='custom-select';const _0x4b69a4=document['createElement']('div');_0x4b69a4['className']='custom-select-trigger',_0x4b69a4['setAttribute']('tabindex','0'),_0x4b69a4['setAttribute']('role','button'),_0x4b69a4['setAttribute']('aria-haspopup','listbox');const _0x39c543=document['createElement']('span');_0x39c543['className']='custom-select-trigger-text';const _0x18052c=document['createElement']('span');_0x18052c['className']='custom-select-arrow',_0x18052c['textContent']='▼',_0x4b69a4['appendChild'](_0x39c543),_0x4b69a4['appendChild'](_0x18052c);const _0x1fe1ab=document['createElement']('div');_0x1fe1ab['className']='custom-select-dropdown',_0x1fe1ab['setAttribute']('role','listbox');if(this['searchable']){const _0x1d60fa=document['createElement']('div');_0x1d60fa['className']='custom-select-search';const _0x32230b=document['createElement']('input');_0x32230b['type']='text',_0x32230b['className']='custom-select-search-input',_0x32230b['placeholder']='Type\x20to\x20search...',_0x32230b['setAttribute']('aria-label','Search\x20options'),_0x32230b['addEventListener']('input',_0x32abde=>{this['searchQuery']=_0x32abde['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x32230b['addEventListener']('keydown',_0x2128a8=>{if(_0x2128a8['key']==='Escape')_0x2128a8['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2128a8['key']==='Enter'){_0x2128a8['preventDefault'](),_0x2128a8['stopPropagation']();const _0x5c2d95=_0x1fe1ab['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x5c2d95){const _0x377d0e=_0x5c2d95['getAttribute']('data-value');this['select'](_0x377d0e);}}}}),_0x1d60fa['appendChild'](_0x32230b),_0x1fe1ab['appendChild'](_0x1d60fa),this['searchInput']=_0x32230b;}const _0x380db2=document['createElement']('div');_0x380db2['className']='custom-select-options',_0x1fe1ab['appendChild'](_0x380db2),_0x1622bd['appendChild'](_0x4b69a4),_0x1622bd['appendChild'](_0x1fe1ab),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1622bd,this['nativeSelect']),this['wrapper']=_0x1622bd,this['trigger']=_0x4b69a4,this['triggerText']=_0x39c543,this['dropdown']=_0x1fe1ab,this['optionsContainer']=_0x380db2,_0x4b69a4['addEventListener']('click',()=>this['toggle']()),_0x4b69a4['addEventListener']('keydown',_0x18cbdc=>this['handleKeydown'](_0x18cbdc)),document['addEventListener']('click',_0x179373=>{!_0x1622bd['contains'](_0x179373['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5d76dc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5d76dc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x42e9=new MutationObserver(()=>{this['updateDisabledState']();});_0x42e9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x57cb13=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x57cb13['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x5cf483=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x5cf483),this['trigger']['setAttribute']('aria-disabled',_0x5cf483?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x5cf483?'-1':'0'),_0x5cf483&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x192e47=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1ac0b0=_0x192e47['filter'](_0x101825=>!_0x101825['disabled']&&!_0x101825['hidden']);_0x192e47['forEach']((_0x2d97ba,_0x322290)=>{const _0x2cb146=document['createElement']('div');_0x2cb146['className']='custom-select-option',_0x2cb146['textContent']=_0x2d97ba['textContent'],_0x2cb146['setAttribute']('data-value',_0x2d97ba['value']),_0x2cb146['setAttribute']('data-index',_0x322290),_0x2cb146['setAttribute']('role','option'),_0x2d97ba['disabled']?_0x2cb146['classList']['add']('disabled'):_0x2cb146['addEventListener']('click',()=>this['select'](_0x2d97ba['value'])),_0x2d97ba['value']===this['selectedValue']&&_0x2cb146['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2cb146),this['allOptions']['push']({'element':_0x2cb146,'text':_0x2d97ba['textContent']['toLowerCase'](),'value':_0x2d97ba['value'],'disabled':_0x2d97ba['disabled']});});if(this['searchable']&&this['searchInput']){const _0x455c7c=this['searchInput']['parentElement'];_0x1ac0b0['length']>0x3?_0x455c7c['style']['display']='':_0x455c7c['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x377414=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x575d0e=>{if(!_0x377414||_0x575d0e['disabled'])_0x575d0e['element']['style']['display']='';else{const _0x3ac25d=_0x575d0e['text']['includes'](_0x377414);_0x575d0e['element']['style']['display']=_0x3ac25d?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1c3062){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1c3062,this['nativeSelect']['value']=_0x1c3062;const _0x593b5b=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x593b5b),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xf76975=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xf76975&&(this['triggerText']['textContent']=_0xf76975['textContent'],_0xf76975['disabled']||_0xf76975['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0xf93065=>{_0xf93065['getAttribute']('data-value')===this['selectedValue']?_0xf93065['classList']['add']('selected'):_0xf93065['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 _0x37a018=window['getComputedStyle'](this['dropdown']);if(_0x37a018['position']==='fixed'){const _0xc738cd=this['trigger']['getBoundingClientRect'](),_0x2768ed=parseInt(_0x37a018['maxHeight'])||0xc8,_0xaa7ac1=window['innerHeight'],_0x1599f7=_0xaa7ac1-_0xc738cd['bottom'],_0x17157c=_0xc738cd['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x123201;_0x1599f7<_0x2768ed&&_0x17157c>_0x1599f7?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xaa7ac1-_0xc738cd['top']+'px',_0x123201=Math['min'](_0x2768ed,_0x17157c-0xa),this['dropdown']['style']['maxHeight']=_0x123201+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0xc738cd['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x123201=Math['min'](_0x2768ed,_0x1599f7-0xa),this['dropdown']['style']['maxHeight']=_0x123201+'px');if(this['optionsContainer']){let _0x29694b=_0x123201;if(this['searchInput']){const _0x47175f=this['searchInput']['parentElement'];_0x47175f&&(_0x29694b-=_0x47175f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x29694b)+'px';}this['dropdown']['style']['left']=_0xc738cd['left']+'px',this['dropdown']['style']['width']=_0xc738cd['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x16402e=this['searchInput']['parentElement'];_0x16402e&&_0x16402e['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'](_0x109669){if(this['nativeSelect']['disabled'])return;if(_0x109669['key']==='Enter'||_0x109669['key']==='\x20')_0x109669['preventDefault'](),this['toggle']();else _0x109669['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ea581='\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',_0x4ea581),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x23ff5c=document['getElementById']('confirm-dialog-close'),_0x3111d9=document['getElementById']('confirm-dialog-cancel'),_0x4f4bc5=document['getElementById']('confirm-dialog-confirm'),_0x185f1b=this['_modal']['querySelector']('.modal-overlay');_0x23ff5c['addEventListener']('click',()=>this['_resolve'](![])),_0x3111d9['addEventListener']('click',()=>this['_resolve'](![])),_0x4f4bc5['addEventListener']('click',()=>this['_resolve'](!![])),_0x185f1b['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1e8327=>{if(_0x1e8327['key']==='Escape')_0x1e8327['preventDefault'](),this['_resolve'](![]);else _0x1e8327['key']==='Enter'&&(_0x1e8327['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0xfd2c16,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x377a41=>{this['_resolvePromise']=_0x377a41,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0xfd2c16;const _0x337fec=document['getElementById']('confirm-dialog-cancel'),_0x196b99=document['getElementById']('confirm-dialog-confirm');_0x337fec['textContent']=cancelText,_0x196b99['textContent']=confirmText,_0x196b99['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x196b99['focus']();});},'_resolve'(_0x222db1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x222db1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1f214b,_0x404ef6={}){this['container']=_0x1f214b,this['options']={'placeholder':_0x404ef6['placeholder']||'Type\x20to\x20search...','maxItems':_0x404ef6['maxItems']||0x64,'loadItems':_0x404ef6['loadItems']||(async()=>[]),'renderItem':_0x404ef6['renderItem']||(_0x430315=>({'primary':String(_0x430315),'secondary':''})),'onSelect':_0x404ef6['onSelect']||(()=>{}),'filterItems':_0x404ef6['filterItems']||null,'getItemValue':_0x404ef6['getItemValue']||(_0x297d68=>_0x297d68),'sortItems':_0x404ef6['sortItems']||null,'debounceMs':_0x404ef6['debounceMs']||0xc8,'minCharsForSearch':_0x404ef6['minCharsForSearch']||0x0,'emptyMessage':_0x404ef6['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x404ef6['loadingMessage']||'Loading...','preload':_0x404ef6['preload']!==![],'searchMode':_0x404ef6['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',_0x2a5634=>this['onBlur'](_0x2a5634)),this['input']['addEventListener']('input',_0x5dab8d=>this['onInput'](_0x5dab8d)),this['input']['addEventListener']('keydown',_0x1322a3=>this['onKeydown'](_0x1322a3)),this['clearBtn']['addEventListener']('mousedown',_0x4d3524=>{_0x4d3524['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x1d2d80=>{_0x1d2d80['preventDefault']();}),document['addEventListener']('click',_0x3845f4=>{!this['wrapper']['contains'](_0x3845f4['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(_0x18ff78){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x18ff78);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x355c1b){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x35b0de){const _0x528b4b=_0x35b0de['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x528b4b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x528b4b):this['loadAndShow'](_0x528b4b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x401119){switch(_0x401119['key']){case'ArrowDown':_0x401119['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x401119['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x401119['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x401119['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x1675dd){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x40d07d=this['selectedIndex']+_0x1675dd;if(_0x40d07d>=0x0&&_0x40d07d<this['filteredItems']['length']){this['selectedIndex']=_0x40d07d,this['updateSelectionHighlight']();const _0x1b144b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1b144b[this['selectedIndex']]&&_0x1b144b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0xabb523=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xabb523['forEach']((_0x56a586,_0x2faecb)=>{_0x56a586['classList']['toggle']('keyboard-selected',_0x2faecb===this['selectedIndex']);});}async['loadAndShow'](_0x3a45ba){this['showLoading']();try{const _0x3a7920=await this['options']['loadItems'](_0x3a45ba);if(this['options']['searchMode']==='server'){let _0x576e0d=_0x3a7920;this['options']['sortItems']&&(_0x576e0d=this['options']['sortItems']([..._0x3a7920]));this['filteredItems']=_0x576e0d;const _0x478e5b=this['filteredItems']['length']>=this['options']['maxItems'];_0x478e5b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x478e5b),this['open']();}else this['allItems']=_0x3a7920,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x3a45ba);}catch(_0x3c31aa){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x3c31aa),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x2f2d19){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x2f2d19):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5a4cd7=this['filteredItems']['length']>=this['options']['maxItems'];_0x5a4cd7&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5a4cd7),this['open']();}['renderItems'](_0x5a90b4){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']((_0x20d51d,_0x1483e1)=>{const _0x5204a6=document['createElement']('div');_0x5204a6['className']='autocomplete-select-item',_0x5204a6['setAttribute']('role','option'),_0x5204a6['setAttribute']('data-index',_0x1483e1);const _0x976381=this['options']['renderItem'](_0x20d51d);let _0xca321f='';_0x976381['icon']&&(_0xca321f='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x976381['iconClass']||'')+'\x22>'+_0x976381['icon']+'</span>'),_0x5204a6['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xca321f+'\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'](_0x976381['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x976381['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x976381['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5204a6['addEventListener']('click',()=>{this['selectItem'](_0x20d51d);}),_0x5204a6['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1483e1,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5204a6);}),_0x5a90b4?(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'](_0x2ba29a){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2ba29a)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x36c471){this['selectedItem']=_0x36c471;const _0x4c650c=this['options']['renderItem'](_0x36c471);this['input']['value']=_0x4c650c['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x36c471);}['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'](_0x4779a4){if(_0x4779a4){this['selectedItem']=_0x4779a4;const _0x4b9b1b=this['options']['renderItem'](_0x4779a4);this['input']['value']=_0x4b9b1b['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x48a593){this['allItems']=_0x48a593,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'](_0x4d487f){this['input']['placeholder']=_0x4d487f;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x201a3a=null){const _0x4ff104=document['getElementById']('admin-menu-container'),_0x2bf1de=document['getElementById']('admin-menu-btn'),_0x1fffdb=document['getElementById']('admin-menu');if(!_0x4ff104||!_0x2bf1de||!_0x1fffdb)return;try{!_0x201a3a&&(_0x201a3a=await API['getCurrentUser']());if(_0x201a3a){const _0x4800b3=window['Permissions'],_0x1da9f2=_0x4800b3['hasServerPermission'](_0x201a3a,'*')||_0x4800b3['hasEnvPermission'](_0x201a3a,'environments:manage')||_0x4800b3['hasServerPermission'](_0x201a3a,'users:create')||_0x4800b3['hasTeamPermission'](_0x201a3a,'teams:manage')||_0x4800b3['hasEnvPermission'](_0x201a3a,'environments:view_details');if(!_0x1da9f2)return;_0x4ff104['hidden']=![];if(!_0x4800b3['hasServerPermission'](_0x201a3a,'*')){const _0x55e8e5=_0x1fffdb['querySelectorAll']('.admin-menu-item');_0x55e8e5['forEach'](_0x5bbe4a=>{const _0x238dc8=_0x5bbe4a['querySelector']('.option-text')?.['textContent']?.['trim']();_0x238dc8==='Users'&&!_0x4800b3['hasServerPermission'](_0x201a3a,'users:create')&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Skills'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Server\x20Settings'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Server\x20Health'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Git\x20History'&&(_0x5bbe4a['hidden']=!![]),_0x238dc8==='Roles'&&(_0x5bbe4a['hidden']=!![]);});}_0x2bf1de['addEventListener']('click',_0x25c738=>{_0x25c738['stopPropagation']();const _0xb0adca=document['getElementById']('actions-menu');if(_0xb0adca)_0xb0adca['hidden']=!![];_0x1fffdb['hidden']=!_0x1fffdb['hidden'];}),document['addEventListener']('click',_0x40afaa=>{!_0x1fffdb['hidden']&&!_0x2bf1de['contains'](_0x40afaa['target'])&&!_0x1fffdb['contains'](_0x40afaa['target'])&&(_0x1fffdb['hidden']=!![]);}),document['addEventListener']('keydown',_0x30a990=>{_0x30a990['key']==='Escape'&&!_0x1fffdb['hidden']&&(_0x1fffdb['hidden']=!![]);});const _0x3e01cf=document['getElementById']('server-health-btn');_0x3e01cf&&_0x3e01cf['addEventListener']('click',async()=>{_0x1fffdb['hidden']=!![];const {openServerHealthModal:_0x326aef}=await import('./server-health.js');_0x326aef();});}}catch(_0x174031){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x174031['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};