@profoundlogic/coderflow-server 0.7.6 → 0.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/base-image/agent-wrapper.sh +3 -1
  2. package/dist/coder-server.js +1 -1
  3. package/dist/config.js +1 -1
  4. package/dist/lib/agent-keepalive.js +1 -1
  5. package/dist/lib/agent-models.js +1 -1
  6. package/dist/lib/api-keys.js +1 -1
  7. package/dist/lib/apiKeys.js +1 -1
  8. package/dist/lib/app-server-ports.js +1 -1
  9. package/dist/lib/auto-judge.js +1 -1
  10. package/dist/lib/automation-service.js +1 -1
  11. package/dist/lib/basic-auth.js +1 -1
  12. package/dist/lib/bindings.js +1 -1
  13. package/dist/lib/build-history.js +1 -1
  14. package/dist/lib/build-output-service.js +1 -1
  15. package/dist/lib/build-scheduler.js +1 -1
  16. package/dist/lib/build-service.js +1 -1
  17. package/dist/lib/ca-certificates.js +1 -1
  18. package/dist/lib/claude-oauth-refresh.js +1 -1
  19. package/dist/lib/cli/build.js +1 -1
  20. package/dist/lib/cli/cleanup-users.js +1 -1
  21. package/dist/lib/cli/config-command.js +1 -1
  22. package/dist/lib/cli/config.js +1 -1
  23. package/dist/lib/cli/create-user.js +1 -1
  24. package/dist/lib/cli/grant-admin.js +1 -1
  25. package/dist/lib/cli/init.js +1 -1
  26. package/dist/lib/cli/jira.js +1 -1
  27. package/dist/lib/cli/license.js +1 -1
  28. package/dist/lib/cli/list-roles.js +1 -1
  29. package/dist/lib/cli/list-users.js +1 -1
  30. package/dist/lib/cli/server-manager.js +1 -1
  31. package/dist/lib/cli/set-password.js +1 -1
  32. package/dist/lib/config-migration.js +1 -1
  33. package/dist/lib/container-credential-sync.js +1 -1
  34. package/dist/lib/container-tokens.js +1 -1
  35. package/dist/lib/data-dir.js +1 -1
  36. package/dist/lib/deployment-history.js +1 -1
  37. package/dist/lib/deployment-service.js +1 -1
  38. package/dist/lib/docker-utils.js +1 -1
  39. package/dist/lib/email.js +1 -1
  40. package/dist/lib/emailTemplates.js +1 -1
  41. package/dist/lib/entitlement.js +1 -1
  42. package/dist/lib/external-connections.js +1 -1
  43. package/dist/lib/fetch-utils.js +1 -1
  44. package/dist/lib/git-commit-details-route.js +1 -1
  45. package/dist/lib/git-history-diff-guardrails.js +1 -1
  46. package/dist/lib/git-provider-service.js +1 -1
  47. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  48. package/dist/lib/git-provider-setup/index.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  51. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  52. package/dist/lib/git-providers/github-app-provider.js +1 -1
  53. package/dist/lib/git-providers/index.js +1 -1
  54. package/dist/lib/git-providers/provider-factory.js +1 -1
  55. package/dist/lib/git-providers/provider-interface.js +1 -1
  56. package/dist/lib/github-urls.js +1 -1
  57. package/dist/lib/group-objective-linking.js +1 -1
  58. package/dist/lib/ibmi-sync.js +1 -1
  59. package/dist/lib/jira-client.js +1 -1
  60. package/dist/lib/judge-blinding.js +1 -1
  61. package/dist/lib/logger.js +1 -1
  62. package/dist/lib/memory-utils.js +1 -1
  63. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  64. package/dist/lib/model-fetcher.js +1 -1
  65. package/dist/lib/notifications.js +1 -1
  66. package/dist/lib/objective-context.js +1 -1
  67. package/dist/lib/oidc-auth.js +1 -1
  68. package/dist/lib/oidc-device-flow.js +1 -1
  69. package/dist/lib/passwordTokens.js +1 -1
  70. package/dist/lib/permission-resolver.js +1 -1
  71. package/dist/lib/pin-cascade.js +1 -1
  72. package/dist/lib/provider-accounts.js +1 -1
  73. package/dist/lib/provider-oauth.js +1 -1
  74. package/dist/lib/provider-profile.js +1 -1
  75. package/dist/lib/provider-token-refresh.js +1 -1
  76. package/dist/lib/rbac-user-state.js +1 -1
  77. package/dist/lib/request-url.js +1 -1
  78. package/dist/lib/rewind.js +1 -1
  79. package/dist/lib/role-definitions.js +1 -1
  80. package/dist/lib/roles.js +1 -1
  81. package/dist/lib/secrets.js +1 -1
  82. package/dist/lib/setup-repo-git-auth.js +1 -1
  83. package/dist/lib/state-capture.js +1 -1
  84. package/dist/lib/static-files.js +1 -1
  85. package/dist/lib/task-aliases.js +1 -1
  86. package/dist/lib/task-name-format.js +1 -1
  87. package/dist/lib/task-name-generator.js +1 -1
  88. package/dist/lib/task-source-metadata.js +1 -1
  89. package/dist/lib/teams.js +1 -1
  90. package/dist/lib/user-git-oauth.js +1 -1
  91. package/dist/lib/user-git-tokens.js +1 -1
  92. package/dist/lib/users.js +1 -1
  93. package/dist/middleware/requireAuth.js +1 -1
  94. package/dist/middleware/requireInit.js +1 -1
  95. package/dist/middleware/requirePermission.js +1 -1
  96. package/dist/package.json +1 -1
  97. package/dist/playwright.config.js +1 -1
  98. package/dist/playwright.task-terminal.config.js +1 -1
  99. package/dist/routes/apiKeys.js +1 -1
  100. package/dist/routes/auth-oidc.js +1 -1
  101. package/dist/routes/auth.js +1 -1
  102. package/dist/routes/automations.js +1 -1
  103. package/dist/routes/bindings.js +1 -1
  104. package/dist/routes/build.js +1 -1
  105. package/dist/routes/containers.js +1 -1
  106. package/dist/routes/deploy-task.js +1 -1
  107. package/dist/routes/environment-management.js +1 -1
  108. package/dist/routes/environments.js +1 -1
  109. package/dist/routes/external-skills.js +1 -1
  110. package/dist/routes/git-credentials.js +1 -1
  111. package/dist/routes/git-oauth.js +1 -1
  112. package/dist/routes/git-provider-setup.js +1 -1
  113. package/dist/routes/health.js +1 -1
  114. package/dist/routes/jira.js +1 -1
  115. package/dist/routes/objective-management.js +1 -1
  116. package/dist/routes/password.js +1 -1
  117. package/dist/routes/prompt.js +1 -1
  118. package/dist/routes/provider-auth.js +1 -1
  119. package/dist/routes/qa.js +1 -1
  120. package/dist/routes/roles.js +1 -1
  121. package/dist/routes/settings.js +1 -1
  122. package/dist/routes/skill-management.js +1 -1
  123. package/dist/routes/skills.js +1 -1
  124. package/dist/routes/tasks.js +1 -1
  125. package/dist/routes/teams.js +1 -1
  126. package/dist/routes/templates.js +1 -1
  127. package/dist/routes/test-task.js +1 -1
  128. package/dist/routes/test.js +1 -1
  129. package/dist/routes/users.js +1 -1
  130. package/dist/routes/visualizations.js +1 -1
  131. package/dist/scripts/create-user.js +1 -1
  132. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  133. package/dist/start.js +1 -1
  134. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  135. package/dist/web-ui/public/activity-feed.js +1 -1
  136. package/dist/web-ui/public/activity-formatters.js +1 -1
  137. package/dist/web-ui/public/agent-event-parser.js +1 -1
  138. package/dist/web-ui/public/app.js +1 -1
  139. package/dist/web-ui/public/approve-dialog.js +1 -1
  140. package/dist/web-ui/public/automation-links.js +1 -1
  141. package/dist/web-ui/public/automation-schedule.js +1 -1
  142. package/dist/web-ui/public/comments-widget.js +1 -1
  143. package/dist/web-ui/public/diff-utils.js +1 -1
  144. package/dist/web-ui/public/environments.js +1 -1
  145. package/dist/web-ui/public/feedback-widget.js +1 -1
  146. package/dist/web-ui/public/file-selection-tree.js +1 -1
  147. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  148. package/dist/web-ui/public/git-history.js +1 -1
  149. package/dist/web-ui/public/git-status.js +1 -1
  150. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  151. package/dist/web-ui/public/index.js +1 -1
  152. package/dist/web-ui/public/login.js +1 -1
  153. package/dist/web-ui/public/markdown-editor.js +1 -1
  154. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  155. package/dist/web-ui/public/modal-maximize.js +1 -1
  156. package/dist/web-ui/public/notifications.js +1 -1
  157. package/dist/web-ui/public/permissions.js +1 -1
  158. package/dist/web-ui/public/pr-dialog.js +1 -1
  159. package/dist/web-ui/public/roles.js +1 -1
  160. package/dist/web-ui/public/server-health.js +1 -1
  161. package/dist/web-ui/public/settings.js +1 -1
  162. package/dist/web-ui/public/setup-password.js +1 -1
  163. package/dist/web-ui/public/skills.js +1 -1
  164. package/dist/web-ui/public/sse-client.js +1 -1
  165. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  166. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  167. package/dist/web-ui/public/task.js +1 -1
  168. package/dist/web-ui/public/teams.js +1 -1
  169. package/dist/web-ui/public/terminal.js +1 -1
  170. package/dist/web-ui/public/theme.js +1 -1
  171. package/dist/web-ui/public/users.js +1 -1
  172. package/dist/web-ui/public/variant-grouping.js +1 -1
  173. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x4bb51f=window['location']['pathname'],_0x5725f0=_0x4bb51f['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5725f0)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5725f0[0x1]),_0x5725f0[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x587be8={}){const _0x3321c3=new URLSearchParams();_0x587be8['userId']&&_0x3321c3['set']('userId',String(_0x587be8['userId']));_0x587be8['automation']&&_0x3321c3['set']('automation',String(_0x587be8['automation']));const _0x4fa211=API_BASE+'/tasks/stats'+(_0x3321c3['toString']()?'?'+_0x3321c3['toString']():''),_0x5c9f5e=await fetch(_0x4fa211);if(!_0x5c9f5e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x5c9f5e['statusText']);return await _0x5c9f5e['json']();},async 'getTasks'(_0x57585e={}){const _0x360ba4=new URLSearchParams();_0x57585e['status']&&_0x360ba4['set']('status',String(_0x57585e['status']));_0x57585e['environment']&&_0x360ba4['set']('environment',String(_0x57585e['environment']));_0x57585e['automation']&&_0x360ba4['set']('automation',String(_0x57585e['automation']));if(_0x57585e['include']){const _0x477f6f=Array['isArray'](_0x57585e['include'])?_0x57585e['include']['join'](','):String(_0x57585e['include']);_0x477f6f&&_0x360ba4['set']('include',_0x477f6f);}_0x57585e['filter']&&_0x360ba4['set']('filter',String(_0x57585e['filter']));_0x57585e['page']&&_0x360ba4['set']('page',String(_0x57585e['page']));_0x57585e['limit']&&_0x360ba4['set']('limit',String(_0x57585e['limit']));_0x57585e['userId']&&_0x360ba4['set']('userId',String(_0x57585e['userId']));_0x57585e['search']&&_0x360ba4['set']('search',String(_0x57585e['search']));_0x57585e['includeChildTasks']&&_0x360ba4['set']('includeChildTasks','true');const _0x1aa742=API_BASE+'/tasks'+(_0x360ba4['toString']()?'?'+_0x360ba4['toString']():''),_0x3f1dc1=await fetch(_0x1aa742);if(!_0x3f1dc1['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3f1dc1['statusText']);return await _0x3f1dc1['json']();},async 'getAutomations'(_0x5d4dba={}){const _0x23d13f=new URLSearchParams();_0x5d4dba['environment']&&_0x23d13f['set']('environment',String(_0x5d4dba['environment']));const _0xec53f7=await fetch(API_BASE+'/api/automations'+(_0x23d13f['toString']()?'?'+_0x23d13f['toString']():''));if(!_0xec53f7['ok']){const _0x52d526=await _0xec53f7['json']()['catch'](()=>({}));throw new Error(_0x52d526['message']||_0x52d526['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xec53f7['statusText']);}return await _0xec53f7['json']();},async 'getAutomation'(_0x30e532){const _0x52ae95=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x30e532));if(!_0x52ae95['ok']){const _0x597517=await _0x52ae95['json']()['catch'](()=>({}));throw new Error(_0x597517['message']||_0x597517['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x52ae95['statusText']);}return await _0x52ae95['json']();},async 'createAutomation'(_0xc7e1ee){const _0x3fa918=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7e1ee||{})});if(!_0x3fa918['ok']){const _0x56bfaa=await _0x3fa918['json']()['catch'](()=>({}));throw new Error(_0x56bfaa['message']||_0x56bfaa['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3fa918['statusText']);}return await _0x3fa918['json']();},async 'updateAutomation'(_0x62893d,_0xa0c542){const _0x4bf762=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x62893d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa0c542||{})});if(!_0x4bf762['ok']){const _0x1658df=await _0x4bf762['json']()['catch'](()=>({}));throw new Error(_0x1658df['message']||_0x1658df['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x4bf762['statusText']);}return await _0x4bf762['json']();},async 'deleteAutomation'(_0x2793a5){const _0x184c01=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2793a5),{'method':'DELETE'});if(!_0x184c01['ok']){const _0x574d3d=await _0x184c01['json']()['catch'](()=>({}));throw new Error(_0x574d3d['message']||_0x574d3d['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x184c01['statusText']);}return await _0x184c01['json']();},async 'triggerAutomation'(_0x548456){const _0x3089d2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x548456)+'/trigger',{'method':'POST'});if(!_0x3089d2['ok']){const _0x1eb995=await _0x3089d2['json']()['catch'](()=>({}));throw new Error(_0x1eb995['message']||_0x1eb995['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3089d2['statusText']);}return await _0x3089d2['json']();},async 'setAutomationEnabled'(_0x34d52c,_0x29ac4e){const _0x1669e5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x34d52c)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x29ac4e})});if(!_0x1669e5['ok']){const _0x283bc3=await _0x1669e5['json']()['catch'](()=>({}));throw new Error(_0x283bc3['message']||_0x283bc3['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1669e5['statusText']);}return await _0x1669e5['json']();},async 'getAutomationHistory'(_0x3cacbc,_0x1faec8=0x32){const _0x59cd57=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3cacbc)+'/history?limit='+encodeURIComponent(String(_0x1faec8)));if(!_0x59cd57['ok']){const _0x246c49=await _0x59cd57['json']()['catch'](()=>({}));throw new Error(_0x246c49['message']||_0x246c49['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x59cd57['statusText']);}return await _0x59cd57['json']();},async 'getTask'(_0x45c931,_0x4ad45e={}){const _0x1f6497=new URLSearchParams();if(_0x4ad45e['include']){const _0x47ff96=Array['isArray'](_0x4ad45e['include'])?_0x4ad45e['include']['join'](','):String(_0x4ad45e['include']);if(_0x47ff96)_0x1f6497['set']('include',_0x47ff96);}const _0x55b51d=await fetch(API_BASE+'/tasks/'+_0x45c931+(_0x1f6497['toString']()?'?'+_0x1f6497['toString']():''));if(!_0x55b51d['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x55b51d['statusText']);return await _0x55b51d['json']();},async 'getTaskResults'(_0x1eb142){const _0xb1be5f=await fetch(API_BASE+'/tasks/'+_0x1eb142+'/results');if(!_0xb1be5f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xb1be5f['statusText']);return await _0xb1be5f['json']();},async 'getTaskPatches'(_0x555343){const _0x5b0e1d=await fetch(API_BASE+'/tasks/'+_0x555343+'/patches');if(!_0x5b0e1d['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5b0e1d['statusText']);return await _0x5b0e1d['json']();},async 'getTaskAttachments'(_0x4f5531){const _0x653340=await fetch(API_BASE+'/tasks/'+_0x4f5531+'/attachments');if(!_0x653340['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x653340['statusText']);return await _0x653340['json']();},async 'uploadAttachments'(_0x195bb2,_0x3fb384){const _0x28c8e7=new FormData();for(const _0x4bad4e of _0x3fb384){_0x28c8e7['append']('attachments',_0x4bad4e);}const _0xcb33b1=await fetch(API_BASE+'/tasks/'+_0x195bb2+'/attachments',{'method':'POST','body':_0x28c8e7});if(!_0xcb33b1['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0xcb33b1['statusText']);return await _0xcb33b1['json']();},async 'isAINameGenerationAvailable'(){try{const _0x4f2db8=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x4f2db8['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x4f2db8['json']();}catch(_0x37f7a0){return{'available':![],'reason':_0x37f7a0['message']};}},async 'generateTaskName'(_0x499395){try{const _0x3ddd94=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x499395})});return await _0x3ddd94['json']();}catch(_0x49860b){return{'success':![],'error':_0x49860b['message']};}},async 'createTask'(_0x4be9b7){let _0x5472ed,_0x26305c={};if(_0x4be9b7['files']&&_0x4be9b7['files']['length']>0x0){const _0x3a13cf=new FormData();for(const [_0x152dd0,_0x495694]of Object['entries'](_0x4be9b7)){if(_0x152dd0!=='files'){if(_0x495694==null)continue;typeof _0x495694==='object'?_0x3a13cf['append'](_0x152dd0,JSON['stringify'](_0x495694)):_0x3a13cf['append'](_0x152dd0,String(_0x495694));}}for(const _0x2788d4 of _0x4be9b7['files']){_0x3a13cf['append']('attachments',_0x2788d4);}_0x5472ed=_0x3a13cf;}else _0x26305c['Content-Type']='application/json',_0x5472ed=JSON['stringify'](_0x4be9b7);const _0x5dc0d2=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x26305c,'body':_0x5472ed});if(!_0x5dc0d2['ok']){const _0x3fe7e9=await _0x5dc0d2['json'](),_0x3d8286=new Error(_0x3fe7e9['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5dc0d2['statusText']),{message:_0x51c36b,..._0x28be92}=_0x3fe7e9;Object['assign'](_0x3d8286,_0x28be92);throw _0x3d8286;}return await _0x5dc0d2['json']();},async 'createTestTask'(_0x54ed8a){const _0x3e1e5f=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54ed8a)});if(!_0x3e1e5f['ok']){const _0x2fafcc=await _0x3e1e5f['json']();throw new Error(_0x2fafcc['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3e1e5f['statusText']);}return await _0x3e1e5f['json']();},async 'createEphemeralTest'(_0x229e33){const _0x377b03=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x229e33)});if(!_0x377b03['ok']){const _0x2c6daa=await _0x377b03['json']();throw new Error(_0x2c6daa['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x377b03['statusText']);}return await _0x377b03['json']();},async 'createDeployTask'(_0x30b957){const _0x22b95d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30b957)});if(!_0x22b95d['ok']){const _0x6d0ef1=await _0x22b95d['json']();throw new Error(_0x6d0ef1['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x22b95d['statusText']);}return await _0x22b95d['json']();},async 'getEnvironments'(){const _0x3e7f39=await fetch(API_BASE+'/environments');if(!_0x3e7f39['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3e7f39['statusText']);return await _0x3e7f39['json']();},async 'getEnvironment'(_0x2ff284){const _0x5de99d=await fetch(API_BASE+'/environments/'+_0x2ff284);if(!_0x5de99d['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5de99d['statusText']);return await _0x5de99d['json']();},async 'getEnvironmentRepoHistory'(_0x38d9b4,_0x4fa2fc,_0x49394a={}){if(!_0x38d9b4||!_0x4fa2fc)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2b2939=new URLSearchParams();if(_0x49394a['limit'])_0x2b2939['set']('limit',String(_0x49394a['limit']));if(_0x49394a['offset'])_0x2b2939['set']('offset',String(_0x49394a['offset']));if(_0x49394a['search'])_0x2b2939['set']('search',String(_0x49394a['search']));if(_0x49394a['branch'])_0x2b2939['set']('branch',String(_0x49394a['branch']));const _0x51a9e0=API_BASE+'/environments/'+encodeURIComponent(_0x38d9b4)+'/repos/'+encodeURIComponent(_0x4fa2fc)+'/git/history',_0x3a2fae=await fetch(''+_0x51a9e0+(_0x2b2939['toString']()?'?'+_0x2b2939['toString']():''));if(!_0x3a2fae['ok']){const _0x4b80b7=await _0x3a2fae['json']()['catch'](()=>({}));throw new Error(_0x4b80b7['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3a2fae['statusText']);}return await _0x3a2fae['json']();},async 'getEnvironmentRepoCommit'(_0x408067,_0x38cc1d,_0x41d161){if(!_0x408067||!_0x38cc1d||!_0x41d161)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x21a37d=API_BASE+'/environments/'+encodeURIComponent(_0x408067)+'/repos/'+encodeURIComponent(_0x38cc1d)+'/git/commits/'+encodeURIComponent(_0x41d161),_0x36d3ed=await fetch(_0x21a37d);if(!_0x36d3ed['ok']){const _0x19d6f4=await _0x36d3ed['json']()['catch'](()=>({}));throw new Error(_0x19d6f4['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x36d3ed['statusText']);}return await _0x36d3ed['json']();},async 'getEnvironmentRepoBranches'(_0x291ef7,_0x58c43f){if(!_0x291ef7||!_0x58c43f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5de367=API_BASE+'/environments/'+encodeURIComponent(_0x291ef7)+'/repos/'+encodeURIComponent(_0x58c43f)+'/git/branches',_0x3fa850=await fetch(_0x5de367);if(!_0x3fa850['ok']){const _0x88abb3=await _0x3fa850['json']()['catch'](()=>({}));throw new Error(_0x88abb3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3fa850['statusText']);}return await _0x3fa850['json']();},async 'revertEnvironmentRepoCommit'(_0x4ddb63,_0x46fb7e,_0x36e7ae,_0x4fe631={}){if(!_0x4ddb63||!_0x46fb7e||!_0x36e7ae)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x87cbda=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x4ddb63)+'/repos/'+encodeURIComponent(_0x46fb7e)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x36e7ae,..._0x4fe631})});if(!_0x87cbda['ok']){const _0x5b6851=await _0x87cbda['json']()['catch'](()=>({}));throw new Error(_0x5b6851['message']||_0x5b6851['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x87cbda['statusText']);}return await _0x87cbda['json']();},async 'getTemplates'(_0x1a2f67={}){const _0x287223=new URLSearchParams();if(_0x1a2f67['include']){const _0x39969c=Array['isArray'](_0x1a2f67['include'])?_0x1a2f67['include']['join'](','):String(_0x1a2f67['include']);if(_0x39969c)_0x287223['set']('include',_0x39969c);}const _0x208696=await fetch(API_BASE+'/templates'+(_0x287223['toString']()?'?'+_0x287223['toString']():''));if(!_0x208696['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x208696['statusText']);return await _0x208696['json']();},async 'getTemplatesForEnvironment'(_0x3f6f80,_0x2f121d={}){if(!_0x3f6f80)throw new Error('Environment\x20name\x20is\x20required');const _0x1e56f2=new URLSearchParams();if(_0x2f121d['include']){const _0x3277f4=Array['isArray'](_0x2f121d['include'])?_0x2f121d['include']['join'](','):String(_0x2f121d['include']);if(_0x3277f4)_0x1e56f2['set']('include',_0x3277f4);}const _0x39c561=await fetch(API_BASE+'/templates/'+_0x3f6f80+(_0x1e56f2['toString']()?'?'+_0x1e56f2['toString']():''));if(!_0x39c561['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3f6f80+':\x20'+_0x39c561['statusText']);return await _0x39c561['json']();},async 'getTemplate'(_0x1f5700,_0x18f5ce,_0x5bd9da={}){if(!_0x1f5700||!_0x18f5ce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x38df9e=new URLSearchParams();if(_0x5bd9da['include']){const _0x5c32c3=Array['isArray'](_0x5bd9da['include'])?_0x5bd9da['include']['join'](','):String(_0x5bd9da['include']);if(_0x5c32c3)_0x38df9e['set']('include',_0x5c32c3);}const _0x4ad1bd=await fetch(API_BASE+'/templates/'+_0x1f5700+'/'+_0x18f5ce+(_0x38df9e['toString']()?'?'+_0x38df9e['toString']():''));if(!_0x4ad1bd['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4ad1bd['statusText']);return await _0x4ad1bd['json']();},async 'getTaskLogs'(_0xef9467,_0x4da596={}){if(!_0xef9467)throw new Error('Task\x20ID\x20is\x20required');const _0x2602e2=new URLSearchParams();_0x4da596['tail']&&_0x2602e2['set']('tail',String(_0x4da596['tail']));const _0x506214=await fetch(API_BASE+'/tasks/'+_0xef9467+'/logs'+(_0x2602e2['toString']()?'?'+_0x2602e2['toString']():''));if(!_0x506214['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x506214['statusText']);return await _0x506214['text']();},async 'getContainers'(){const _0x26157b=await fetch(API_BASE+'/containers');if(!_0x26157b['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x26157b['statusText']);return await _0x26157b['json']();},async 'getContainer'(_0x22bcea){const _0x5ee83c=await fetch(API_BASE+'/containers/'+_0x22bcea);if(!_0x5ee83c['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ee83c['statusText']);return await _0x5ee83c['json']();},async 'startInteractiveContainer'(_0x336fe6){const _0x4e38b0=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336fe6)});if(!_0x4e38b0['ok']){const _0x2cc3ed=await _0x4e38b0['json']()['catch'](()=>({}));throw new Error(_0x2cc3ed['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4e38b0['statusText']);}return await _0x4e38b0['json']();},async 'startContainerCodeServer'(_0x2a52fc,_0x5459bb={}){if(!_0x2a52fc)throw new Error('Container\x20ID\x20is\x20required');const _0x144e36=new URLSearchParams();_0x5459bb['theme']&&_0x144e36['set']('theme',_0x5459bb['theme']);const _0x5e7907=await fetch(API_BASE+'/containers/'+_0x2a52fc+'/code-server'+(_0x144e36['toString']()?'?'+_0x144e36['toString']():'')),_0x58a17=await _0x5e7907['json']()['catch'](()=>({}));if(!_0x5e7907['ok'])throw new Error(_0x58a17['message']||_0x58a17['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x5e7907['statusText']);return _0x58a17;},async 'stopContainer'(_0x3ebb27){const _0x368003=await fetch(API_BASE+'/containers/'+_0x3ebb27,{'method':'DELETE'});if(!_0x368003['ok']){const _0x278ee0=await _0x368003['json']()['catch'](()=>({}));throw new Error(_0x278ee0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x368003['statusText']);}return await _0x368003['json']();},async 'stopTask'(_0x9789e9){if(!_0x9789e9)throw new Error('Task\x20ID\x20is\x20required');const _0x2b84dd=await fetch(API_BASE+'/tasks/'+_0x9789e9+'/stop',{'method':'POST'});if(!_0x2b84dd['ok']){const _0x4bacc7=await _0x2b84dd['json']()['catch'](()=>({}));throw new Error(_0x4bacc7['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2b84dd['statusText']);}return await _0x2b84dd['json']();},async 'interruptTask'(_0x3d6d66){if(!_0x3d6d66)throw new Error('Task\x20ID\x20is\x20required');const _0x473cc3=await fetch(API_BASE+'/tasks/'+_0x3d6d66+'/interrupt',{'method':'POST'});if(!_0x473cc3['ok']){const _0x4db43c=await _0x473cc3['json']()['catch'](()=>({}));throw new Error(_0x4db43c['error']||_0x4db43c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x473cc3['statusText']);}return await _0x473cc3['json']();},async 'startTask'(_0x426132){if(!_0x426132)throw new Error('Task\x20ID\x20is\x20required');const _0x56b48a=await fetch(API_BASE+'/tasks/'+_0x426132+'/start',{'method':'POST'});if(!_0x56b48a['ok']){const _0x3e122d=await _0x56b48a['json']()['catch'](()=>({}));throw new Error(_0x3e122d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x56b48a['statusText']);}return await _0x56b48a['json']();},async 'deleteTask'(_0x4688cf){if(!_0x4688cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4a3395=await fetch(API_BASE+'/tasks/'+_0x4688cf,{'method':'DELETE'});if(!_0x4a3395['ok']){const _0x32ca61=await _0x4a3395['json']()['catch'](()=>({}));throw new Error(_0x32ca61['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x4a3395['statusText']);}return await _0x4a3395['json']();},async 'refreshTasksFromDisk'(){const _0x2c0c0f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2c0c0f['ok']){const _0x48cf47=await _0x2c0c0f['json']()['catch'](()=>({}));throw new Error(_0x48cf47['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2c0c0f['statusText']);}return await _0x2c0c0f['json']();},async 'approveTask'(_0x703018,_0x5c3d54={}){if(!_0x703018)throw new Error('Task\x20ID\x20is\x20required');const _0x1b8eae={'commit_message':_0x5c3d54['commit_message']||'','pull':_0x5c3d54['pull']??![],'push':_0x5c3d54['push']??![]};_0x5c3d54['new_branch']&&(_0x1b8eae['new_branch']=_0x5c3d54['new_branch']);const _0xa27914=await fetch(API_BASE+'/tasks/'+_0x703018+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b8eae)});if(!_0xa27914['ok']){const _0x2cb030=await _0xa27914['json']()['catch'](()=>({}));let _0x4b56e0=_0x2cb030['error']||_0x2cb030['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xa27914['statusText'];if(_0x2cb030['results']&&Array['isArray'](_0x2cb030['results'])){const _0x245201=_0x2cb030['results']['filter'](_0x928bb=>!_0x928bb['success']&&_0x928bb['error']);_0x245201['length']>0x0&&(_0x4b56e0=_0x245201[0x0]['error']);}throw new Error(_0x4b56e0);}return await _0xa27914['json']();},async 'getPullRequestInfo'(_0x243afc){if(!_0x243afc)throw new Error('Task\x20ID\x20is\x20required');const _0x5de768=await fetch(API_BASE+'/tasks/'+_0x243afc+'/pull-request-info');if(!_0x5de768['ok']){const _0xa350c9=await _0x5de768['json']()['catch'](()=>({}));throw new Error(_0xa350c9['error']||_0xa350c9['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x5de768['statusText']);}return await _0x5de768['json']();},async 'createPullRequests'(_0x507eed,_0x2c9ac5){if(!_0x507eed)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c9ac5||!Array['isArray'](_0x2c9ac5))throw new Error('repos\x20array\x20is\x20required');const _0x265b0b=await fetch(API_BASE+'/tasks/'+_0x507eed+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2c9ac5})});if(!_0x265b0b['ok']){const _0x2f57b=await _0x265b0b['json']()['catch'](()=>({}));let _0x2a0313=_0x2f57b['error']||_0x2f57b['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x265b0b['statusText'];if(_0x2f57b['results']&&Array['isArray'](_0x2f57b['results'])){const _0x5e7840=_0x2f57b['results']['filter'](_0x70ab46=>!_0x70ab46['success']&&_0x70ab46['error']);_0x5e7840['length']>0x0&&(_0x2a0313=_0x5e7840[0x0]['error']);}throw new Error(_0x2a0313);}return await _0x265b0b['json']();},async 'syncRepos'(_0x8a01b4){if(!_0x8a01b4)throw new Error('Task\x20ID\x20is\x20required');const _0x9fa078=await fetch(API_BASE+'/tasks/'+_0x8a01b4+'/sync-repos',{'method':'POST'});if(!_0x9fa078['ok']){const _0x2b84b9=await _0x9fa078['json']()['catch'](()=>({}));throw new Error(_0x2b84b9['error']||_0x2b84b9['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x9fa078['statusText']);}return await _0x9fa078['json']();},async 'getIbmiSyncInfo'(_0x48fe9e){if(!_0x48fe9e)throw new Error('Task\x20ID\x20is\x20required');const _0x459b02=await fetch(API_BASE+'/tasks/'+_0x48fe9e+'/ibmi-sync-info');if(!_0x459b02['ok']){const _0x5a5e70=await _0x459b02['json']()['catch'](()=>({}));throw new Error(_0x5a5e70['error']||_0x5a5e70['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x459b02['json']();},async 'getSyncFiles'(_0x3a40f2){if(!_0x3a40f2)throw new Error('Task\x20ID\x20is\x20required');const _0xaf47d4=await fetch(API_BASE+'/tasks/'+_0x3a40f2+'/sync-to-ibmi/files');if(!_0xaf47d4['ok']){const _0x2afe2e=await _0xaf47d4['json']()['catch'](()=>({}));throw new Error(_0x2afe2e['error']||_0x2afe2e['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0xaf47d4['json']();},async 'syncToIbmi'(_0x16ab48,_0x1d4bab,_0x38f44e=null,_0x26725b=null,_0x15feb3=null){if(!_0x16ab48)throw new Error('Task\x20ID\x20is\x20required');const _0x1887f4={'library':_0x1d4bab};if(_0x38f44e)_0x1887f4['user']=_0x38f44e;if(_0x26725b)_0x1887f4['password']=_0x26725b;if(_0x15feb3)_0x1887f4['files']=_0x15feb3;const _0x3db2a2=await fetch(API_BASE+'/tasks/'+_0x16ab48+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1887f4)});if(!_0x3db2a2['ok']){const _0x3d02c8=await _0x3db2a2['json']()['catch'](()=>({}));throw new Error(_0x3d02c8['error']||_0x3d02c8['message']||'Sync\x20failed');}return await _0x3db2a2['json']();},async 'getIbmiSyncLog'(_0x37c01a){if(!_0x37c01a)throw new Error('Task\x20ID\x20is\x20required');const _0x2966e0=await fetch(API_BASE+'/tasks/'+_0x37c01a+'/ibmi-sync-log');if(!_0x2966e0['ok']){const _0x400168=await _0x2966e0['json']()['catch'](()=>({}));throw new Error(_0x400168['error']||_0x400168['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2966e0['json']();},async 'pullChanges'(_0x36329f){if(!_0x36329f)throw new Error('Task\x20ID\x20is\x20required');const _0x2fc9d6=await fetch(API_BASE+'/tasks/'+_0x36329f+'/pull-changes',{'method':'POST'});if(!_0x2fc9d6['ok']){const _0x2ccd06=await _0x2fc9d6['json']()['catch'](()=>({}));throw new Error(_0x2ccd06['error']||_0x2ccd06['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2fc9d6['statusText']);}return await _0x2fc9d6['json']();},async 'readFile'(_0x332e6d,_0x19c1f4){if(!_0x332e6d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x19c1f4)throw new Error('File\x20path\x20is\x20required');const _0x225fa6=await fetch(API_BASE+'/tasks/'+_0x332e6d+'/files?path='+encodeURIComponent(_0x19c1f4));if(!_0x225fa6['ok']){const _0x4ab434=await _0x225fa6['json']()['catch'](()=>({}));throw new Error(_0x4ab434['error']||_0x4ab434['message']||'Failed\x20to\x20read\x20file:\x20'+_0x225fa6['statusText']);}return await _0x225fa6['json']();},'getTaskFileDownloadUrl'(_0x56c30f,_0x24e84f){if(!_0x56c30f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24e84f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x56c30f+'/files/download?path='+encodeURIComponent(_0x24e84f);},async 'writeFile'(_0x5472d7,_0x49ad7b,_0x458c80){if(!_0x5472d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49ad7b)throw new Error('File\x20path\x20is\x20required');if(_0x458c80===undefined)throw new Error('Content\x20is\x20required');const _0x3f2718=await fetch(API_BASE+'/tasks/'+_0x5472d7+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49ad7b,'content':_0x458c80})});if(!_0x3f2718['ok']){const _0x18be80=await _0x3f2718['json']()['catch'](()=>({}));throw new Error(_0x18be80['error']||_0x18be80['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3f2718['statusText']);}return await _0x3f2718['json']();},async 'uploadTaskFiles'(_0x4c926d,_0x1e3d1c,_0x558c4e){if(!_0x4c926d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e3d1c)throw new Error('Target\x20directory\x20is\x20required');if(!_0x558c4e||_0x558c4e['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x31f22c=new FormData();_0x31f22c['append']('targetDir',_0x1e3d1c);for(const _0x27334e of _0x558c4e){_0x31f22c['append']('files',_0x27334e,_0x27334e['name']);}const _0x23c431=await fetch(API_BASE+'/tasks/'+_0x4c926d+'/files/upload',{'method':'POST','body':_0x31f22c});if(!_0x23c431['ok']){const _0x4b3bed=await _0x23c431['json']()['catch'](()=>({}));throw new Error(_0x4b3bed['error']||_0x4b3bed['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x23c431['statusText']);}return await _0x23c431['json']();},async 'createDirectory'(_0x31462c,_0x48b721){if(!_0x31462c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48b721)throw new Error('Directory\x20path\x20is\x20required');const _0x38fb4f=await fetch(API_BASE+'/tasks/'+_0x31462c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x48b721})});if(!_0x38fb4f['ok']){const _0x126f81=await _0x38fb4f['json']()['catch'](()=>({}));throw new Error(_0x126f81['error']||_0x126f81['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x38fb4f['statusText']);}return await _0x38fb4f['json']();},async 'renamePath'(_0xcc5a35,_0x3d9b96,_0x3223be){if(!_0xcc5a35)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d9b96)throw new Error('Source\x20path\x20is\x20required');if(!_0x3223be)throw new Error('Destination\x20path\x20is\x20required');const _0x253046=await fetch(API_BASE+'/tasks/'+_0xcc5a35+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x3d9b96,'newPath':_0x3223be})});if(!_0x253046['ok']){const _0x1febe1=await _0x253046['json']()['catch'](()=>({}));throw new Error(_0x1febe1['error']||_0x1febe1['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x253046['statusText']);}return await _0x253046['json']();},async 'deleteFile'(_0x474a1f,_0x1a1c02){if(!_0x474a1f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1c02)throw new Error('File\x20path\x20is\x20required');const _0x1413e0=await fetch(API_BASE+'/tasks/'+_0x474a1f+'/files?path='+encodeURIComponent(_0x1a1c02),{'method':'DELETE'});if(!_0x1413e0['ok']){const _0xadec7c=await _0x1413e0['json']()['catch'](()=>({}));throw new Error(_0xadec7c['error']||_0xadec7c['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1413e0['statusText']);}return await _0x1413e0['json']();},async 'deleteDirectory'(_0x5acf32,_0x59b802){if(!_0x5acf32)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59b802)throw new Error('Directory\x20path\x20is\x20required');const _0x5d3596=await fetch(API_BASE+'/tasks/'+_0x5acf32+'/files/directory?path='+encodeURIComponent(_0x59b802),{'method':'DELETE'});if(!_0x5d3596['ok']){const _0x1c8c68=await _0x5d3596['json']()['catch'](()=>({}));throw new Error(_0x1c8c68['error']||_0x1c8c68['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5d3596['statusText']);}return await _0x5d3596['json']();},async 'discardFile'(_0x1e0230,_0x28fd47,_0x232ea1){if(!_0x1e0230)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28fd47)throw new Error('File\x20path\x20is\x20required');if(!_0x232ea1)throw new Error('Repository\x20path\x20is\x20required');const _0xc93d16=await fetch(API_BASE+'/tasks/'+_0x1e0230+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x28fd47,'repoPath':_0x232ea1})});if(!_0xc93d16['ok']){const _0x3f51ea=await _0xc93d16['json']()['catch'](()=>({}));throw new Error(_0x3f51ea['error']||_0x3f51ea['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xc93d16['statusText']);}return await _0xc93d16['json']();},async 'followUpTask'(_0x1fe836,_0x5b3b53={}){if(!_0x1fe836)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b3b53['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x5a92fb,_0x28e393={};if(_0x5b3b53['files']&&_0x5b3b53['files']['length']>0x0){const _0x12228e=new FormData();_0x12228e['append']('instructions',_0x5b3b53['instructions']);for(const _0x40a0e6 of _0x5b3b53['files']){_0x12228e['append']('attachments',_0x40a0e6);}_0x5a92fb=_0x12228e;}else _0x28e393['Content-Type']='application/json',_0x5a92fb=JSON['stringify']({'instructions':_0x5b3b53['instructions']});const _0x1f1a0b=await fetch(API_BASE+'/tasks/'+_0x1fe836+'/follow-up',{'method':'POST','headers':_0x28e393,'body':_0x5a92fb});if(!_0x1f1a0b['ok']){const _0x425211=await _0x1f1a0b['json']()['catch'](()=>({}));throw new Error(_0x425211['error']||_0x425211['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1f1a0b['statusText']);}return await _0x1f1a0b['json']();},async 'getTaskRewindPoints'(_0x3a9f8a){if(!_0x3a9f8a)throw new Error('Task\x20ID\x20is\x20required');const _0x2eec13=await fetch(API_BASE+'/tasks/'+_0x3a9f8a+'/rewind-points');if(!_0x2eec13['ok']){const _0x3fc4b5=await _0x2eec13['json']()['catch'](()=>({}));throw new Error(_0x3fc4b5['error']||_0x3fc4b5['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2eec13['statusText']);}return await _0x2eec13['json']();},async 'rewindTask'(_0x2a90f0,_0x5a8591={}){if(!_0x2a90f0)throw new Error('Task\x20ID\x20is\x20required');const _0x2fffb5=Number['isInteger'](_0x5a8591['targetFollowUpCount'])?_0x5a8591['targetFollowUpCount']:0x0,_0x1eba7c={'targetFollowUpCount':_0x2fffb5};typeof _0x5a8591['instructions']==='string'&&_0x5a8591['instructions']['trim']()&&(_0x1eba7c['instructions']=_0x5a8591['instructions']['trim']());typeof _0x5a8591['rewindFiles']==='boolean'&&(_0x1eba7c['rewindFiles']=_0x5a8591['rewindFiles']);const _0x3e53f6=await fetch(API_BASE+'/tasks/'+_0x2a90f0+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1eba7c)});if(!_0x3e53f6['ok']){const _0xad14c6=await _0x3e53f6['json']()['catch'](()=>({}));throw new Error(_0xad14c6['error']||_0xad14c6['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3e53f6['statusText']);}return await _0x3e53f6['json']();},async 'login'(_0x54dbcb,_0x118d6f){const _0xaeb793=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x54dbcb,'password':_0x118d6f})});if(!_0xaeb793['ok']){const _0x2056b3=await _0xaeb793['json']();throw new Error(_0x2056b3['message']||'Login\x20failed');}return await _0xaeb793['json']();},async 'logout'(){const _0x4ccb68=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4ccb68['ok']){const _0x3ab912=await _0x4ccb68['json']();throw new Error(_0x3ab912['message']||'Logout\x20failed');}return await _0x4ccb68['json']();},async 'getCurrentUser'(){const _0x143fb3=await fetch(API_BASE+'/auth/me');if(!_0x143fb3['ok'])throw new Error('Not\x20authenticated');const _0x774d50=await _0x143fb3['json']();return _0x774d50['user'];},async 'getRolesInfo'(){const _0x526bfb=await fetch(API_BASE+'/users/roles');if(!_0x526bfb['ok']){const _0x5eba4e=await _0x526bfb['json']();throw new Error(_0x5eba4e['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x526bfb['json']();},async 'getUsers'(){const _0x32d630=await fetch(API_BASE+'/users');if(!_0x32d630['ok']){const _0x4646ea=await _0x32d630['json']();throw new Error(_0x4646ea['message']||'Failed\x20to\x20get\x20users');}return await _0x32d630['json']();},async 'getUser'(_0x5232dd){const _0x69587a=await fetch(API_BASE+'/users/'+_0x5232dd);if(!_0x69587a['ok']){const _0x3d9c1b=await _0x69587a['json']();throw new Error(_0x3d9c1b['message']||'Failed\x20to\x20get\x20user');}return await _0x69587a['json']();},async 'createUser'(_0x6b9641){const _0xae3063=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6b9641)});if(!_0xae3063['ok']){const _0x5df25a=await _0xae3063['json']();throw new Error(_0x5df25a['message']||'Failed\x20to\x20create\x20user');}return await _0xae3063['json']();},async 'updateUser'(_0x1d15ac,_0x469a9e){const _0xb6e1ee=await fetch(API_BASE+'/users/'+_0x1d15ac,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x469a9e)});if(!_0xb6e1ee['ok']){const _0x549bcd=await _0xb6e1ee['json']();throw new Error(_0x549bcd['message']||'Failed\x20to\x20update\x20user');}return await _0xb6e1ee['json']();},async 'deleteUser'(_0x5ebee4){const _0x4249a1=await fetch(API_BASE+'/users/'+_0x5ebee4,{'method':'DELETE'});if(!_0x4249a1['ok']){const _0x337f4c=await _0x4249a1['json']();throw new Error(_0x337f4c['message']||'Failed\x20to\x20delete\x20user');}return await _0x4249a1['json']();},async 'stopAllContainers'(){const _0x4bc0eb=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3219e2=await _0x4bc0eb['json']()['catch'](()=>({}));if(!_0x4bc0eb['ok'])throw new Error(_0x3219e2['message']||_0x3219e2['error']||'Failed\x20to\x20stop\x20containers');return _0x3219e2;},async 'removeStoppedContainers'(){const _0x54eb62=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x37b611=await _0x54eb62['json']()['catch'](()=>({}));if(!_0x54eb62['ok'])throw new Error(_0x37b611['message']||_0x37b611['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x37b611;},async 'pruneDockerResources'(){const _0x413ebe=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x25e975=await _0x413ebe['json']()['catch'](()=>({}));if(!_0x413ebe['ok'])throw new Error(_0x25e975['message']||_0x25e975['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x25e975;},async 'createPasswordToken'(_0x3437d5,_0x44c965='setup',_0x1afa9b=![]){const _0x31442c=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3437d5,'type':_0x44c965,'sendEmail':_0x1afa9b})});if(!_0x31442c['ok']){const _0x4839e2=await _0x31442c['json']();throw new Error(_0x4839e2['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x31442c['json']();},async 'getEmailConfig'(){const _0x2bab08=await fetch(API_BASE+'/password/email-config');if(!_0x2bab08['ok']){const _0x5ae8e3=await _0x2bab08['json']();throw new Error(_0x5ae8e3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x2bab08['json']();},async 'updateTaskName'(_0x9739cc,_0x1ad9d2){const _0x1aac7d=await fetch(API_BASE+'/tasks/'+_0x9739cc,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1ad9d2})});if(!_0x1aac7d['ok']){const _0xf7e9b0=await _0x1aac7d['json']();throw new Error(_0xf7e9b0['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1aac7d['json']();},async 'pinTask'(_0x5a9230,_0x27aba7,_0x23df79=null){if(!_0x5a9230)throw new Error('Task\x20ID\x20is\x20required');const _0x245ff0={'pinned':_0x27aba7};_0x23df79&&_0x23df79['length']>0x0&&(_0x245ff0['additionalTaskIds']=_0x23df79);const _0x3371e4=await fetch(API_BASE+'/tasks/'+_0x5a9230+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x245ff0)});if(!_0x3371e4['ok']){const _0x4b545c=await _0x3371e4['json']();throw new Error(_0x4b545c['error']||'Failed\x20to\x20pin\x20task');}return await _0x3371e4['json']();},async 'setTaskWinner'(_0xcbab0e,_0x149167,_0x3d78c7=[]){if(!_0xcbab0e)throw new Error('Task\x20ID\x20is\x20required');const _0x1ebf78=await fetch(API_BASE+'/tasks/'+_0xcbab0e+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x149167,'siblings':_0x3d78c7})});if(!_0x1ebf78['ok']){const _0x1857a2=await _0x1ebf78['json']();throw new Error(_0x1857a2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1ebf78['json']();},async 'setTaskLoser'(_0x3063a2,_0x4c4a9b){if(!_0x3063a2)throw new Error('Task\x20ID\x20is\x20required');const _0x21feb8=await fetch(API_BASE+'/tasks/'+_0x3063a2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4c4a9b})});if(!_0x21feb8['ok']){const _0x41be62=await _0x21feb8['json']();throw new Error(_0x41be62['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x21feb8['json']();},async 'createTaskGroup'(_0x61ecfd){const _0x1da6cd=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x61ecfd)});if(!_0x1da6cd['ok']){const _0x17fb7f=await _0x1da6cd['json']();throw new Error(_0x17fb7f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x1da6cd['json']();},async 'getTaskGroups'(_0x37cf50={}){const _0x44b1c0=new URLSearchParams();if(_0x37cf50['userId'])_0x44b1c0['set']('userId',String(_0x37cf50['userId']));if(_0x37cf50['status'])_0x44b1c0['set']('status',String(_0x37cf50['status']));if(_0x37cf50['limit'])_0x44b1c0['set']('limit',String(_0x37cf50['limit']));const _0x33b17b=API_BASE+'/tasks/groups'+(_0x44b1c0['toString']()?'?'+_0x44b1c0['toString']():''),_0x62922=await fetch(_0x33b17b);if(!_0x62922['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x62922['json']();},async 'getTaskGroup'(_0x278ec5){const _0x85e1a7=await fetch(API_BASE+'/tasks/groups/'+_0x278ec5);if(!_0x85e1a7['ok']){const _0xf9a8d=await _0x85e1a7['json']();throw new Error(_0xf9a8d['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x85e1a7['json']();},async 'updateTaskGroup'(_0x1a33ec,_0x5b26b3,_0x5b0546){const _0x289b49=await fetch(API_BASE+'/tasks/'+_0x1a33ec+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x5b26b3,'groupIndex':_0x5b0546})});if(!_0x289b49['ok']){const _0xccdd12=await _0x289b49['json']();throw new Error(_0xccdd12['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x289b49['json']();},async 'removeTaskFromGroup'(_0x397544){return this['updateTaskGroup'](_0x397544,null,null);},async 'deleteTaskGroup'(_0x4ea0c7,_0x3e7b73=![]){const _0x79a301=_0x3e7b73?'?deleteTasks=true':'',_0x4a9eef=await fetch(API_BASE+'/tasks/groups/'+_0x4ea0c7+_0x79a301,{'method':'DELETE'});if(!_0x4a9eef['ok']){const _0x4a6227=await _0x4a9eef['json']();throw new Error(_0x4a6227['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x1a5494,_0x29ff85){const _0x3785fc=await fetch(API_BASE+'/tasks/groups/'+_0x1a5494+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x29ff85})});if(!_0x3785fc['ok']){const _0x28d810=await _0x3785fc['json']();throw new Error(_0x28d810['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3785fc['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4d959b){if(!_0x4d959b)throw new Error('Task\x20ID\x20is\x20required');const _0x422cc0=await fetch(API_BASE+'/tasks/'+_0x4d959b+'/comments');if(!_0x422cc0['ok']){const _0x43151e=await _0x422cc0['json']()['catch'](()=>({}));throw new Error(_0x43151e['error']||'Failed\x20to\x20get\x20comments');}return await _0x422cc0['json']();},async 'addComment'(_0x437431,_0x2fa066){if(!_0x437431)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2fa066)throw new Error('Comment\x20content\x20is\x20required');const _0x436e94=await fetch(API_BASE+'/tasks/'+_0x437431+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2fa066})});if(!_0x436e94['ok']){const _0x2713fa=await _0x436e94['json']()['catch'](()=>({}));throw new Error(_0x2713fa['error']||'Failed\x20to\x20add\x20comment');}return await _0x436e94['json']();},async 'updateComment'(_0x1b11c6,_0x58e6dd,_0x4296e2){if(!_0x1b11c6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58e6dd)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4296e2)throw new Error('Comment\x20content\x20is\x20required');const _0x135c49=await fetch(API_BASE+'/tasks/'+_0x1b11c6+'/comments/'+_0x58e6dd,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4296e2})});if(!_0x135c49['ok']){const _0x111abd=await _0x135c49['json']()['catch'](()=>({}));throw new Error(_0x111abd['error']||'Failed\x20to\x20update\x20comment');}return await _0x135c49['json']();},async 'deleteComment'(_0x3fd657,_0x48144e){if(!_0x3fd657)throw new Error('Task\x20ID\x20is\x20required');if(!_0x48144e)throw new Error('Comment\x20ID\x20is\x20required');const _0x35f82f=await fetch(API_BASE+'/tasks/'+_0x3fd657+'/comments/'+_0x48144e,{'method':'DELETE'});if(!_0x35f82f['ok']){const _0x1837a0=await _0x35f82f['json']()['catch'](()=>({}));throw new Error(_0x1837a0['error']||'Failed\x20to\x20delete\x20comment');}return await _0x35f82f['json']();},async 'createObjective'(_0x4c9785){const _0x3fb18f={'objective':!![],'name':_0x4c9785['name']||'','environment':_0x4c9785['environment']||null,'agents':_0x4c9785['agents']||[],'branches':_0x4c9785['branches']||{},'isPinned':_0x4c9785['isPinned']||![],'parentObjectiveId':_0x4c9785['parentObjectiveId']||null,'env_vars':_0x4c9785['envVars']||{},'parameters':{'instructions':_0x4c9785['instructions']||''},'files':_0x4c9785['files']||[],'jira':_0x4c9785['jira']||null};return this['createTask'](_0x3fb18f);},async 'updateObjective'(_0x39ea0d,_0x2d63ba,_0x2660eb=[],_0x30ada7=[]){let _0xe2278b,_0x281f15={};const _0x4f79f6={..._0x2d63ba};_0x30ada7&&_0x30ada7['length']>0x0&&(_0x4f79f6['removeAttachments']=_0x30ada7);if(_0x2660eb&&_0x2660eb['length']>0x0){const _0x106009=new FormData();for(const [_0x4ea73f,_0x2a883c]of Object['entries'](_0x4f79f6)){if(_0x2a883c==null)continue;typeof _0x2a883c==='object'?_0x106009['append'](_0x4ea73f,JSON['stringify'](_0x2a883c)):_0x106009['append'](_0x4ea73f,String(_0x2a883c));}for(const _0x13d46b of _0x2660eb){_0x106009['append']('attachments',_0x13d46b);}_0xe2278b=_0x106009;}else _0x281f15['Content-Type']='application/json',_0xe2278b=JSON['stringify'](_0x4f79f6);const _0x471e57=await fetch(API_BASE+'/tasks/'+_0x39ea0d,{'method':'PATCH','headers':_0x281f15,'body':_0xe2278b});if(!_0x471e57['ok']){const _0x2a33aa=await _0x471e57['json']();throw new Error(_0x2a33aa['error']||'Failed\x20to\x20update\x20objective');}return await _0x471e57['json']();},async 'deleteObjective'(_0x2f5628){return this['deleteTask'](_0x2f5628);},async 'launchObjective'(_0x255d05,_0x4b1697={}){const _0x5d1788=await fetch(API_BASE+'/tasks/'+_0x255d05+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b1697)});if(!_0x5d1788['ok']){const _0x13f552=await _0x5d1788['json']();throw new Error(_0x13f552['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5d1788['json']();},async 'getObjectiveAttachments'(_0x166044){return this['getTaskAttachments'](_0x166044);},async 'createJudgeTask'({environment:_0x3ce01c,judgeAgent:_0x29ccb9,groupId:_0xf824b9,taskIds:_0x5e574f,judgeCustomInstructions:_0x2ee94d,isPinned:_0x54e387}){const _0x407b19=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3ce01c,'judgeAgent':_0x29ccb9,'groupId':_0xf824b9,'taskIds':_0x5e574f,'judgeCustomInstructions':_0x2ee94d,'isPinned':_0x54e387})});if(!_0x407b19['ok']){const _0x3af567=await _0x407b19['json']();throw new Error(_0x3af567['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x407b19['json']();},async 'getJudgeTasks'(_0x2b9bd2){const _0x1e2fc0=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2b9bd2));if(!_0x1e2fc0['ok']){const _0x1726be=await _0x1e2fc0['json']();throw new Error(_0x1726be['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1e2fc0['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3d0000,_0x4039c8,_0x379f98=''){const _0xeffe90=await fetch(API_BASE+'/tasks/'+_0x3d0000+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4039c8,'customPreamble':_0x379f98})});if(!_0xeffe90['ok']){const _0x195c7e=await _0xeffe90['json']();throw new Error(_0x195c7e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0xeffe90['json']();},async 'getJiraConfig'(){const _0x53851d=await fetch(API_BASE+'/jira/config');if(!_0x53851d['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x53851d['json']();},async 'getJiraIssue'(_0x4c6b66){const _0x4f8ec9=await fetch(API_BASE+'/jira/issues/'+_0x4c6b66);if(!_0x4f8ec9['ok']){const _0x188afb=await _0x4f8ec9['json']()['catch'](()=>({}));throw new Error(_0x188afb['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4f8ec9['statusText']);}return await _0x4f8ec9['json']();},async 'searchJiraIssues'(_0x1ed265,_0x2145e=0x14){const _0xbbe800=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x1ed265,'maxResults':_0x2145e})});if(!_0xbbe800['ok']){const _0x515f69=await _0xbbe800['json']()['catch'](()=>({}));throw new Error(_0x515f69['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xbbe800['statusText']);}return await _0xbbe800['json']();},async 'postJiraComment'(_0x57c1e6,_0x204b88){const _0x41e5c2=await fetch(API_BASE+'/jira/issues/'+_0x57c1e6+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x204b88})});if(!_0x41e5c2['ok']){const _0x37d64f=await _0x41e5c2['json']()['catch'](()=>({}));throw new Error(_0x37d64f['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x41e5c2['statusText']);}return await _0x41e5c2['json']();},async 'getJiraComments'(_0x55ccce){const _0x267a49=await fetch(API_BASE+'/jira/issues/'+_0x55ccce+'/comments');if(!_0x267a49['ok']){const _0x163b75=await _0x267a49['json']()['catch'](()=>({}));throw new Error(_0x163b75['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x267a49['statusText']);}return await _0x267a49['json']();},async 'promptParameter'({environment:_0x584556,command:_0x2363af,parser:parser='json'}){const _0x1d9d93=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x584556,'command':_0x2363af,'parser':parser})});if(!_0x1d9d93['ok']){const _0x4bb76e=await _0x1d9d93['json']()['catch'](()=>({}));throw new Error(_0x4bb76e['message']||_0x4bb76e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x1d9d93['statusText']);}return await _0x1d9d93['json']();},async 'promptParameterStream'(_0x73c6db,_0x17550a){const _0xdbc89d=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x73c6db)});if(!_0xdbc89d['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0xdbc89d['statusText']);const _0x333520=_0xdbc89d['body']['getReader'](),_0x75a106=new TextDecoder();let _0x3915ad='';return new Promise((_0x333623,_0x4ae81d)=>{const _0x5d7f3b=async()=>{try{const {done:_0x10f589,value:_0x183273}=await _0x333520['read']();if(_0x10f589)return;_0x3915ad+=_0x75a106['decode'](_0x183273,{'stream':!![]});const _0x404533=_0x3915ad['split']('\x0a\x0a');_0x3915ad=_0x404533['pop']()||'';for(const _0xe214d7 of _0x404533){if(!_0xe214d7['trim']())continue;const _0x4bd758=_0xe214d7['split']('\x0a');let _0xe261f8='message',_0x479e50='';for(const _0x256c32 of _0x4bd758){if(_0x256c32['startsWith']('event:'))_0xe261f8=_0x256c32['substring'](0x6)['trim']();else _0x256c32['startsWith']('data:')&&(_0x479e50=_0x256c32['substring'](0x5)['trim']());}if(!_0x479e50)continue;try{const _0x55d54d=JSON['parse'](_0x479e50);if(_0xe261f8==='progress'&&_0x17550a)_0x17550a(_0x55d54d['stage'],_0x55d54d['message']);else{if(_0xe261f8==='result'){_0x333623(_0x55d54d);return;}else{if(_0xe261f8==='error'){let _0x21e229=_0x55d54d['message']||_0x55d54d['error']||'Prompt\x20command\x20failed';_0x55d54d['rawOutput']&&(_0x21e229+='\x0a\x0aRaw\x20output:\x0a'+_0x55d54d['rawOutput']);_0x4ae81d(new Error(_0x21e229));return;}}}}catch(_0x4d3d55){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x4d3d55),console['error']('Event\x20type:',_0xe261f8),console['error']('Event\x20data:',_0x479e50),console['error']('First\x20200\x20chars:',_0x479e50['substring'](0x0,0xc8)),_0x4ae81d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x4d3d55['message']+'\x0a\x0aData:\x20'+_0x479e50['substring'](0x0,0x1f4)));return;}}_0x5d7f3b();}catch(_0x20808f){_0x4ae81d(_0x20808f);}};_0x5d7f3b();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x28b34e){const _0x1fc1b9=await fetch(''+API_BASE+_0x28b34e);if(!_0x1fc1b9['ok']){const _0x343daf=await _0x1fc1b9['json']()['catch'](()=>({'error':_0x1fc1b9['statusText']})),_0x5ebb58=new Error(_0x343daf['error']||_0x343daf['message']||_0x1fc1b9['statusText']);if(_0x343daf['detail']!==undefined)_0x5ebb58['detail']=_0x343daf['detail'];throw _0x5ebb58;}return await _0x1fc1b9['json']();},async 'post'(_0x4efb7f,_0x19ca47){const _0x541598=await fetch(''+API_BASE+_0x4efb7f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19ca47)});if(!_0x541598['ok']){const _0x43dd44=await _0x541598['json']()['catch'](()=>({'error':_0x541598['statusText']})),_0x4a084d=new Error(_0x43dd44['error']||_0x43dd44['message']||_0x541598['statusText']);if(_0x43dd44['detail']!==undefined)_0x4a084d['detail']=_0x43dd44['detail'];throw _0x4a084d;}return await _0x541598['json']();},async 'put'(_0x423b38,_0x378dca){const _0x14965b=await fetch(''+API_BASE+_0x423b38,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x378dca)});if(!_0x14965b['ok']){const _0x1a12f5=await _0x14965b['json']()['catch'](()=>({'error':_0x14965b['statusText']})),_0x2177de=new Error(_0x1a12f5['error']||_0x1a12f5['message']||_0x14965b['statusText']);if(_0x1a12f5['detail']!==undefined)_0x2177de['detail']=_0x1a12f5['detail'];throw _0x2177de;}return await _0x14965b['json']();},async 'delete'(_0x2d870a,_0x38e316){const _0x4968d9={'method':'DELETE'};_0x38e316&&(_0x4968d9['headers']={'Content-Type':'application/json'},_0x4968d9['body']=JSON['stringify'](_0x38e316));const _0x4c90fb=await fetch(''+API_BASE+_0x2d870a,_0x4968d9);if(!_0x4c90fb['ok']){const _0xeac2be=await _0x4c90fb['json']()['catch'](()=>({'error':_0x4c90fb['statusText']})),_0x452b49=new Error(_0xeac2be['error']||_0xeac2be['message']||_0x4c90fb['statusText']);if(_0xeac2be['detail']!==undefined)_0x452b49['detail']=_0xeac2be['detail'];throw _0x452b49;}return await _0x4c90fb['json']();},async 'getSkills'(){const _0x1dfb07=await fetch(API_BASE+'/skills');if(!_0x1dfb07['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x1dfb07['statusText']);return await _0x1dfb07['json']();},async 'getSkill'(_0x4b5778){const _0x454802=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b5778));if(!_0x454802['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x454802['statusText']);return await _0x454802['json']();},async 'createSkill'(_0x1087a6){const _0x5d16ff=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1087a6)});if(!_0x5d16ff['ok']){const _0x146d2d=await _0x5d16ff['json']()['catch'](()=>({'error':_0x5d16ff['statusText']})),_0x478ce0=new Error(_0x146d2d['error']||_0x146d2d['message']||_0x5d16ff['statusText']);if(_0x146d2d['detail']!==undefined)_0x478ce0['detail']=_0x146d2d['detail'];throw _0x478ce0;}return await _0x5d16ff['json']();},async 'updateSkill'(_0x23d3e8,_0x407528){const _0x5c66c0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x23d3e8),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x407528)});if(!_0x5c66c0['ok']){const _0x1adf7a=await _0x5c66c0['json']()['catch'](()=>({'error':_0x5c66c0['statusText']})),_0x17835d=new Error(_0x1adf7a['error']||_0x1adf7a['message']||_0x5c66c0['statusText']);if(_0x1adf7a['detail']!==undefined)_0x17835d['detail']=_0x1adf7a['detail'];throw _0x17835d;}return await _0x5c66c0['json']();},async 'deleteSkill'(_0x5ef87e){const _0x560712=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5ef87e),{'method':'DELETE'});if(!_0x560712['ok']){const _0x1d228b=await _0x560712['json']()['catch'](()=>({'error':_0x560712['statusText']})),_0x534072=new Error(_0x1d228b['error']||_0x1d228b['message']||_0x560712['statusText']);if(_0x1d228b['detail']!==undefined)_0x534072['detail']=_0x1d228b['detail'];throw _0x534072;}return await _0x560712['json']();},async 'getSkillFile'(_0x58bd3d,_0x144f5d){const _0x23013a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x58bd3d)+'/files/'+_0x144f5d);if(!_0x23013a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x23013a['statusText']);return await _0x23013a['json']();},async 'saveSkillFile'(_0x4c2268,_0x5cff27,_0x162d1c){const _0x4e54a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c2268)+'/files/'+_0x5cff27,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x162d1c})});if(!_0x4e54a7['ok']){const _0xb952b=await _0x4e54a7['json']()['catch'](()=>({'error':_0x4e54a7['statusText']})),_0x5bc90d=new Error(_0xb952b['error']||_0xb952b['message']||_0x4e54a7['statusText']);if(_0xb952b['detail']!==undefined)_0x5bc90d['detail']=_0xb952b['detail'];throw _0x5bc90d;}return await _0x4e54a7['json']();},async 'deleteSkillFile'(_0x31224f,_0x40aee5){const _0x34b745=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x31224f)+'/files/'+_0x40aee5,{'method':'DELETE'});if(!_0x34b745['ok']){const _0x55a154=await _0x34b745['json']()['catch'](()=>({'error':_0x34b745['statusText']})),_0x379f3c=new Error(_0x55a154['error']||_0x55a154['message']||_0x34b745['statusText']);if(_0x55a154['detail']!==undefined)_0x379f3c['detail']=_0x55a154['detail'];throw _0x379f3c;}return await _0x34b745['json']();},async 'pullSkills'(){const _0x4260a0=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x4260a0['ok']){const _0x247753=await _0x4260a0['json']()['catch'](()=>({'error':_0x4260a0['statusText']})),_0x4b374a=new Error(_0x247753['error']||_0x247753['message']||_0x4260a0['statusText']);if(_0x247753['detail']!==undefined)_0x4b374a['detail']=_0x247753['detail'];throw _0x4b374a;}return await _0x4260a0['json']();},async 'commitSkills'(_0x39469b,_0x3cabf8={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x3cabf8,_0x4d676d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39469b,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4d676d['ok']){const _0x5908a9=await _0x4d676d['json']()['catch'](()=>({'error':_0x4d676d['statusText']})),_0x3b1813=new Error(_0x5908a9['error']||_0x5908a9['message']||_0x4d676d['statusText']);if(_0x5908a9['detail']!==undefined)_0x3b1813['detail']=_0x5908a9['detail'];throw _0x3b1813;}return await _0x4d676d['json']();},async 'discardSkillsChanges'(){const _0x3282b7=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x3282b7['ok']){const _0xceb222=await _0x3282b7['json']()['catch'](()=>({'error':_0x3282b7['statusText']})),_0x579547=new Error(_0xceb222['error']||_0xceb222['message']||_0x3282b7['statusText']);if(_0xceb222['detail']!==undefined)_0x579547['detail']=_0xceb222['detail'];throw _0x579547;}return await _0x3282b7['json']();},async 'getSkillCatalog'(){const _0x4f3eb7=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4f3eb7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4f3eb7['statusText']);return await _0x4f3eb7['json']();},async 'getImportedSkillsRegistry'(){const _0x45ea95=await fetch(API_BASE+'/external-skills/registry');if(!_0x45ea95['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x45ea95['statusText']);return await _0x45ea95['json']();},async 'importCatalogSkill'(_0x396ac0){const _0xba980f=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x396ac0})});if(!_0xba980f['ok']){const _0x4e9736=await _0xba980f['json']()['catch'](()=>({'error':_0xba980f['statusText']})),_0x38eb13=new Error(_0x4e9736['error']||_0x4e9736['message']||_0xba980f['statusText']);if(_0x4e9736['detail']!==undefined)_0x38eb13['detail']=_0x4e9736['detail'];throw _0x38eb13;}return await _0xba980f['json']();},async 'importSkillFromGit'(_0xa7c8ec,_0x4feeb4,_0x4d9bea='main',_0x12e9f0=null){const _0x53b121=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xa7c8ec,'skillPath':_0x4feeb4,'branch':_0x4d9bea,'skillId':_0x12e9f0})});if(!_0x53b121['ok']){const _0x257999=await _0x53b121['json']()['catch'](()=>({'error':_0x53b121['statusText']})),_0x4912da=new Error(_0x257999['error']||_0x257999['message']||_0x53b121['statusText']);if(_0x257999['detail']!==undefined)_0x4912da['detail']=_0x257999['detail'];throw _0x4912da;}return await _0x53b121['json']();},async 'probeMarketplace'(_0xc48db1,_0x19d48e='main'){const _0x5e23d2=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xc48db1,'branch':_0x19d48e})});if(!_0x5e23d2['ok']){const _0x4db86b=await _0x5e23d2['json']()['catch'](()=>({'error':_0x5e23d2['statusText']})),_0x35db4b=new Error(_0x4db86b['error']||_0x4db86b['message']||_0x5e23d2['statusText']);if(_0x4db86b['detail']!==undefined)_0x35db4b['detail']=_0x4db86b['detail'];throw _0x35db4b;}return await _0x5e23d2['json']();},async 'importMarketplaceBundle'(_0x153780,_0x41d918,_0x1c5804,_0x3685c5=null){const _0x5a4709=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x153780,'branch':_0x41d918,'bundleId':_0x1c5804,'selectedSkills':_0x3685c5})});if(!_0x5a4709['ok']){const _0x3ba446=await _0x5a4709['json']()['catch'](()=>({'error':_0x5a4709['statusText']})),_0x241949=new Error(_0x3ba446['error']||_0x3ba446['message']||_0x5a4709['statusText']);if(_0x3ba446['detail']!==undefined)_0x241949['detail']=_0x3ba446['detail'];throw _0x241949;}return await _0x5a4709['json']();},async 'importSkillFromFolder'(_0x295dce,_0x3cc761=null){const _0x2800a0=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x295dce,'skillId':_0x3cc761})});if(!_0x2800a0['ok']){const _0x2fc6bd=await _0x2800a0['json']()['catch'](()=>({'error':_0x2800a0['statusText']})),_0x4c9664=new Error(_0x2fc6bd['error']||_0x2fc6bd['message']||_0x2800a0['statusText']);if(_0x2fc6bd['detail']!==undefined)_0x4c9664['detail']=_0x2fc6bd['detail'];throw _0x4c9664;}return await _0x2800a0['json']();},async 'importSkillFromNpm'(_0x556d57,_0x56e74b='latest',_0x3cf22c=null,_0x2fc566=null){const _0x45267e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x556d57,'version':_0x56e74b,'skillId':_0x3cf22c,'registry':_0x2fc566})});if(!_0x45267e['ok']){const _0x317ad5=await _0x45267e['json']()['catch'](()=>({'error':_0x45267e['statusText']})),_0x30c82b=new Error(_0x317ad5['error']||_0x317ad5['message']||_0x45267e['statusText']);if(_0x317ad5['detail']!==undefined)_0x30c82b['detail']=_0x317ad5['detail'];throw _0x30c82b;}return await _0x45267e['json']();},async 'checkSkillUpdates'(_0x3539dc){const _0x34fbce=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3539dc)+'/check-updates',{'method':'POST'});if(!_0x34fbce['ok']){const _0x5e4ce7=await _0x34fbce['json']()['catch'](()=>({'error':_0x34fbce['statusText']})),_0x36cf7f=new Error(_0x5e4ce7['error']||_0x5e4ce7['message']||_0x34fbce['statusText']);if(_0x5e4ce7['detail']!==undefined)_0x36cf7f['detail']=_0x5e4ce7['detail'];throw _0x36cf7f;}return await _0x34fbce['json']();},async 'updateExternalSkill'(_0x3d545d){const _0x2f75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3d545d)+'/update',{'method':'POST'});if(!_0x2f75f3['ok']){const _0x548dcf=await _0x2f75f3['json']()['catch'](()=>({'error':_0x2f75f3['statusText']})),_0x17c7f2=new Error(_0x548dcf['error']||_0x548dcf['message']||_0x2f75f3['statusText']);if(_0x548dcf['detail']!==undefined)_0x17c7f2['detail']=_0x548dcf['detail'];throw _0x17c7f2;}return await _0x2f75f3['json']();},async 'updateSkillFlags'(_0x31be6e,_0x1f628d){const _0x4eff4f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x31be6e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x1f628d})});if(!_0x4eff4f['ok']){const _0x37675d=await _0x4eff4f['json']()['catch'](()=>({'error':_0x4eff4f['statusText']})),_0x253962=new Error(_0x37675d['error']||_0x37675d['message']||_0x4eff4f['statusText']);if(_0x37675d['detail']!==undefined)_0x253962['detail']=_0x37675d['detail'];throw _0x253962;}return await _0x4eff4f['json']();},async 'removeFromImportedRegistry'(_0x454a9e){const _0xdc508f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x454a9e)+'/registry',{'method':'DELETE'});if(!_0xdc508f['ok']){const _0x250e97=await _0xdc508f['json']()['catch'](()=>({'error':_0xdc508f['statusText']})),_0x2409fe=new Error(_0x250e97['error']||_0x250e97['message']||_0xdc508f['statusText']);if(_0x250e97['detail']!==undefined)_0x2409fe['detail']=_0x250e97['detail'];throw _0x2409fe;}return await _0xdc508f['json']();},async 'getTeams'(){const _0x3aaef5=await fetch(API_BASE+'/teams');if(!_0x3aaef5['ok']){const _0x3e694a=await _0x3aaef5['json']()['catch'](()=>({'message':_0x3aaef5['statusText']}));throw new Error(_0x3e694a['message']||'Failed\x20to\x20get\x20teams');}return await _0x3aaef5['json']();},async 'getTeam'(_0x135452){const _0x32a5b3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x135452));if(!_0x32a5b3['ok']){const _0x2b31d3=await _0x32a5b3['json']()['catch'](()=>({'message':_0x32a5b3['statusText']}));throw new Error(_0x2b31d3['message']||'Failed\x20to\x20get\x20team');}return await _0x32a5b3['json']();},async 'createTeam'(_0x42dfec){const _0x3b1cda=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42dfec)});if(!_0x3b1cda['ok']){const _0x249f28=await _0x3b1cda['json']()['catch'](()=>({'message':_0x3b1cda['statusText']}));throw new Error(_0x249f28['message']||'Failed\x20to\x20create\x20team');}return await _0x3b1cda['json']();},async 'updateTeam'(_0x47742f,_0x2f7d58){const _0x3bbb69=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x47742f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f7d58)});if(!_0x3bbb69['ok']){const _0xd65067=await _0x3bbb69['json']()['catch'](()=>({'message':_0x3bbb69['statusText']}));throw new Error(_0xd65067['message']||'Failed\x20to\x20update\x20team');}return await _0x3bbb69['json']();},async 'deleteTeam'(_0x3b69bf){const _0x207f6c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3b69bf),{'method':'DELETE'});if(!_0x207f6c['ok']){const _0xc20ef6=await _0x207f6c['json']()['catch'](()=>({'message':_0x207f6c['statusText']}));throw new Error(_0xc20ef6['message']||'Failed\x20to\x20delete\x20team');}return await _0x207f6c['json']();},async 'addTeamMember'(_0x3786b0,_0x5c9330){const _0xe3760=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3786b0)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5c9330})});if(!_0xe3760['ok']){const _0xd72d56=await _0xe3760['json']()['catch'](()=>({'message':_0xe3760['statusText']}));throw new Error(_0xd72d56['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xe3760['json']();},async 'removeTeamMember'(_0x2b2484,_0x5de465){const _0x377cf6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b2484)+'/members/'+encodeURIComponent(_0x5de465),{'method':'DELETE'});if(!_0x377cf6['ok']){const _0x10fd42=await _0x377cf6['json']()['catch'](()=>({'message':_0x377cf6['statusText']}));throw new Error(_0x10fd42['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x377cf6['json']();},async 'getBindings'(_0x51be8b={}){const _0x521f6d=new URLSearchParams();if(_0x51be8b['resource_type'])_0x521f6d['set']('resource_type',_0x51be8b['resource_type']);if(_0x51be8b['resource_id'])_0x521f6d['set']('resource_id',_0x51be8b['resource_id']);if(_0x51be8b['subject_type'])_0x521f6d['set']('subject_type',_0x51be8b['subject_type']);if(_0x51be8b['subject_id'])_0x521f6d['set']('subject_id',_0x51be8b['subject_id']);const _0x45c27a=_0x521f6d['toString'](),_0x1bb326=await fetch(API_BASE+'/bindings'+(_0x45c27a?'?'+_0x45c27a:''));if(!_0x1bb326['ok']){const _0x5dabf4=await _0x1bb326['json']()['catch'](()=>({'message':_0x1bb326['statusText']}));throw new Error(_0x5dabf4['message']||'Failed\x20to\x20get\x20bindings');}return await _0x1bb326['json']();},async 'createBinding'(_0x460d34){const _0x5bfc2e=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x460d34)});if(!_0x5bfc2e['ok']){const _0x2b2ace=await _0x5bfc2e['json']()['catch'](()=>({'message':_0x5bfc2e['statusText']}));throw new Error(_0x2b2ace['message']||'Failed\x20to\x20create\x20binding');}return await _0x5bfc2e['json']();},async 'updateBinding'(_0x3106bc,_0xcc83){const _0x5e5fd2=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x3106bc),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xcc83)});if(!_0x5e5fd2['ok']){const _0x33a108=await _0x5e5fd2['json']()['catch'](()=>({'message':_0x5e5fd2['statusText']}));throw new Error(_0x33a108['message']||'Failed\x20to\x20update\x20binding');}return await _0x5e5fd2['json']();},async 'deleteBinding'(_0x4056db){const _0x12f43f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4056db),{'method':'DELETE'});if(!_0x12f43f['ok']){const _0x535e9c=await _0x12f43f['json']()['catch'](()=>({'message':_0x12f43f['statusText']}));throw new Error(_0x535e9c['message']||'Failed\x20to\x20delete\x20binding');}return await _0x12f43f['json']();},async 'getRoleDefinitions'(){const _0x40c3f5=await fetch(API_BASE+'/roles');if(!_0x40c3f5['ok']){const _0x9bb671=await _0x40c3f5['json']()['catch'](()=>({'message':_0x40c3f5['statusText']}));throw new Error(_0x9bb671['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x40c3f5['json']();},async 'getRoleDefinition'(_0x17b834){const _0x16cdca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x17b834));if(!_0x16cdca['ok']){const _0x584a39=await _0x16cdca['json']()['catch'](()=>({'message':_0x16cdca['statusText']}));throw new Error(_0x584a39['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x16cdca['json']();},async 'createRoleDefinition'(_0x5cb685){const _0x4b54b9=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5cb685)});if(!_0x4b54b9['ok']){const _0x1ce08c=await _0x4b54b9['json']()['catch'](()=>({'message':_0x4b54b9['statusText']}));throw new Error(_0x1ce08c['message']||_0x1ce08c['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4b54b9['json']();},async 'updateRoleDefinition'(_0x5d6b22,_0x3bd72c){const _0x182850=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x5d6b22),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3bd72c)});if(!_0x182850['ok']){const _0x1532e3=await _0x182850['json']()['catch'](()=>({'message':_0x182850['statusText']}));throw new Error(_0x1532e3['message']||_0x1532e3['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x182850['json']();},async 'deleteRoleDefinition'(_0x45982a){const _0x28029b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x45982a),{'method':'DELETE'});if(!_0x28029b['ok']){const _0x313a8f=await _0x28029b['json']()['catch'](()=>({'message':_0x28029b['statusText']}));throw new Error(_0x313a8f['message']||_0x313a8f['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x28029b['json']();},async 'getAvailablePermissions'(){const _0xb524c3=await fetch(API_BASE+'/roles/available-permissions');if(!_0xb524c3['ok']){const _0x36b8ed=await _0xb524c3['json']()['catch'](()=>({'message':_0xb524c3['statusText']}));throw new Error(_0x36b8ed['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xb524c3['json']();},async 'getGitProviderAllowedTeams'(_0x5d16e3){const _0x1726eb=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5d16e3)+'/allowed-teams');if(!_0x1726eb['ok']){const _0x14a5f4=await _0x1726eb['json']()['catch'](()=>({'message':_0x1726eb['statusText']}));throw new Error(_0x14a5f4['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1726eb['json']();},async 'setGitProviderAllowedTeams'(_0x4945f5,_0x9249ac){const _0x2ebe37=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4945f5)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x9249ac})});if(!_0x2ebe37['ok']){const _0x5a68d2=await _0x2ebe37['json']()['catch'](()=>({'message':_0x2ebe37['statusText']}));throw new Error(_0x5a68d2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x2ebe37['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 _0x2a1af5=toastState['baseBottom'];toastState['toasts']['forEach'](_0x676bba=>{_0x676bba['el']['style']['bottom']=_0x2a1af5+'px';const _0x3bae7a=_0x676bba['el']['offsetHeight']||toastState['defaultHeight'];_0x2a1af5+=_0x3bae7a+toastState['gap'];});});}function removeToastById(_0x55b0ec){const _0x193fd5=toastState['toasts']['findIndex'](_0x167bba=>_0x167bba['id']===_0x55b0ec);if(_0x193fd5===-0x1)return;const _0x2e9eca=toastState['toasts'][_0x193fd5];if(_0x2e9eca['timeoutId'])clearTimeout(_0x2e9eca['timeoutId']);_0x2e9eca['el']['classList']['remove']('show'),setTimeout(()=>_0x2e9eca['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x193fd5,0x1),repositionAllToasts();}function registerToast(_0x2d2125){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d2125),repositionAllToasts(),_0x2d2125['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(_0x37a7cb){if(_0x37a7cb===null||_0x37a7cb===undefined)return'';return String(_0x37a7cb)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x4c0475,_0x4d60c0){if(_0x4c0475&&typeof _0x4c0475==='object'&&!Array['isArray'](_0x4c0475))return{'code':typeof _0x4c0475['text']==='string'?_0x4c0475['text']:'','language':typeof _0x4c0475['lang']==='string'?_0x4c0475['lang']:''};return{'code':typeof _0x4c0475==='string'?_0x4c0475:'','language':typeof _0x4d60c0==='string'?_0x4d60c0:''};}function buildMermaidBlock(_0x557e6b){const _0x180850=String(_0x557e6b||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x180850))+'\x22>'+escapeHtmlValue(_0x180850)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x463461=new marked['Renderer'](),_0x15a85f=_0x463461['code']['bind'](_0x463461);return _0x463461['code']=function(_0x3166cb,_0x5f4ed4,..._0x46ee6e){const {code:_0x50385d,language:_0x2774bb}=getMarkdownCodeBlockPayload(_0x3166cb,_0x5f4ed4),_0x1795fa=String(_0x2774bb||'')['trim']()['toLowerCase']();if(_0x1795fa==='mermaid')return buildMermaidBlock(_0x50385d);const _0x2526d7=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x2526d7&&_0x1795fa)try{const _0x4a6d9e=_0x2526d7['getLanguage'](_0x1795fa)?_0x1795fa:'plaintext',_0xd6ae95=_0x2526d7['highlight'](_0x50385d,{'language':_0x4a6d9e})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1795fa)+'\x22>'+_0xd6ae95+'</code></pre>';}catch(_0x4c1d12){console['error']('Syntax\x20highlighting\x20error:',_0x4c1d12);}return _0x15a85f(_0x3166cb,_0x5f4ed4,..._0x46ee6e);},sharedMarkedRenderer=_0x463461,_0x463461;}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 _0x15446b=window['mermaid'];if(!_0x15446b||typeof _0x15446b['initialize']!=='function')return _0x15446b||null;return _0x15446b['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x15446b;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x749826,_0x17030b)=>{const _0x207511=()=>_0x749826(configureMermaidInstance()),_0x549c64=()=>{mermaidLoadPromise=null,_0x17030b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x1db1ca=document['getElementById'](MERMAID_SCRIPT_ID);!_0x1db1ca&&(_0x1db1ca=document['createElement']('script'),_0x1db1ca['id']=MERMAID_SCRIPT_ID,_0x1db1ca['src']=MERMAID_SCRIPT_SRC,_0x1db1ca['async']=!![],document['head']['appendChild'](_0x1db1ca));if(window['mermaid']){_0x207511();return;}_0x1db1ca['addEventListener']('load',_0x207511,{'once':!![]}),_0x1db1ca['addEventListener']('error',_0x549c64,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x45712f){const _0x422168=_0x45712f['getAttribute']('data-mermaid-source');if(!_0x422168)return null;let _0x53e77e=_0x422168;try{_0x53e77e=decodeURIComponent(_0x422168);}catch{}return _0x45712f['textContent']=_0x53e77e,_0x45712f['removeAttribute']('data-processed'),_0x45712f['removeAttribute']('aria-roledescription'),_0x45712f['removeAttribute']('role'),_0x45712f['removeAttribute']('aria-label'),_0x53e77e;}function collectMermaidNodes(_0x500636,_0x4f1135){if(!(_0x500636 instanceof Element))return;_0x500636['matches']('.mermaid[data-mermaid-source]')&&_0x4f1135['add'](_0x500636),_0x500636['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x10d39d=>{_0x4f1135['add'](_0x10d39d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x318e7e=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x77b3dc=>setTimeout(_0x77b3dc,0x0);_0x318e7e(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3d82f6=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3d82f6);});});}function queueMermaidRender(_0x219ba4){const _0x1b7338=new Set();_0x219ba4 instanceof Document||_0x219ba4 instanceof DocumentFragment?_0x219ba4['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4cc4e5=>_0x1b7338['add'](_0x4cc4e5)):collectMermaidNodes(_0x219ba4,_0x1b7338);if(_0x1b7338['size']===0x0)return;_0x1b7338['forEach'](_0x2e5d17=>pendingMermaidNodes['add'](_0x2e5d17)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5f44ea=Array['from'](pendingMermaidNodes)['filter'](_0x2912c8=>_0x2912c8['isConnected']);pendingMermaidNodes['clear']();if(_0x5f44ea['length']===0x0)return;const _0x2516b4=await loadMermaid();if(!_0x2516b4)return;configureMermaidInstance();const _0x407f7e=getMermaidTheme();for(const _0x15dec2 of _0x5f44ea){const _0x42cc0f=_0x15dec2['getAttribute']('data-mermaid-source');if(!_0x42cc0f)continue;const _0x10caca=_0x15dec2['getAttribute']('data-processed')==='true';if(_0x10caca&&_0x15dec2['dataset']['mermaidTheme']===_0x407f7e)continue;restoreMermaidSource(_0x15dec2);try{if(typeof _0x2516b4['run']==='function')await _0x2516b4['run']({'nodes':[_0x15dec2]});else typeof _0x2516b4['init']==='function'&&_0x2516b4['init'](undefined,[_0x15dec2]);_0x15dec2['dataset']['mermaidTheme']=_0x407f7e,delete _0x15dec2['dataset']['mermaidError'];}catch(_0xc56f92){console['error']('Mermaid\x20render\x20failed:',_0xc56f92),restoreMermaidSource(_0x15dec2),_0x15dec2['dataset']['mermaidError']='true',delete _0x15dec2['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x53b517=>{_0x53b517['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x53b517);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2d97f9=>{_0x2d97f9['forEach'](_0x53c2de=>{_0x53c2de['addedNodes']['forEach'](_0xba2938=>{_0xba2938['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0xba2938);});});}),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'(_0x50d657){const _0x1c2948=new Date(_0x50d657),_0x235326=new Date(),_0x4c9402=_0x235326-_0x1c2948,_0x1b95a9=Math['floor'](_0x4c9402/0x3e8),_0x512cf4=Math['floor'](_0x1b95a9/0x3c),_0x123fa7=Math['floor'](_0x512cf4/0x3c),_0x105459=Math['floor'](_0x123fa7/0x18);if(_0x1b95a9<0x3c)return'now';if(_0x512cf4<0x3c)return _0x512cf4+'m\x20ago';if(_0x123fa7<0x18)return _0x123fa7+'h\x20ago';return _0x105459+'d\x20ago';},'getStatusIcon'(_0x546e77){switch(_0x546e77){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x450556){switch(_0x450556){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'(_0x24d0fb,_0xafabe5=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2262bb={};_0x2262bb['text/plain']=new Blob([_0x24d0fb],{'type':'text/plain'});_0xafabe5&&(_0x2262bb['text/html']=new Blob([_0xafabe5],{'type':'text/html'}));const _0x80deaa=new ClipboardItem(_0x2262bb);return await navigator['clipboard']['write']([_0x80deaa]),!![];}catch(_0x4071ea){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4071ea);}try{const _0x1f60f8=_0x4a6da5=>{_0x4a6da5['preventDefault'](),_0x4a6da5['clipboardData']['setData']('text/plain',_0x24d0fb),_0xafabe5&&_0x4a6da5['clipboardData']['setData']('text/html',_0xafabe5);};document['addEventListener']('copy',_0x1f60f8);const _0x41263b=document['execCommand']('copy');document['removeEventListener']('copy',_0x1f60f8);if(_0x41263b)return!![];}catch(_0x398750){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398750);}try{const _0x26c71c=document['createElement']('textarea');_0x26c71c['value']=_0x24d0fb,_0x26c71c['style']['position']='fixed',_0x26c71c['style']['opacity']='0',_0x26c71c['style']['pointerEvents']='none',document['body']['appendChild'](_0x26c71c),_0x26c71c['select']();const _0x29bfad=document['execCommand']('copy');return document['body']['removeChild'](_0x26c71c),_0x29bfad;}catch(_0x6066de){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x6066de),![];}},'showToast'(_0x33c58b,_0x13d2a1='info'){const _0x1f6709=getNextToastId(),_0x8f4b10=document['createElement']('div');_0x8f4b10['className']='toast\x20toast-'+_0x13d2a1,_0x8f4b10['textContent']=_0x33c58b,_0x8f4b10['dataset']['toastId']=_0x1f6709,document['body']['appendChild'](_0x8f4b10);const _0x3f859c=_0x13d2a1==='error'?0x2710:0xbb8,_0x307743=setTimeout(()=>{removeToastById(_0x1f6709);},_0x3f859c),_0x5f4121={'id':_0x1f6709,'el':_0x8f4b10,'timeoutId':_0x307743};return registerToast(_0x5f4121),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x8f4b10['classList']['add']('show');});}),_0x1f6709;},'showError'(_0x48f352){console['error'](_0x48f352);const _0x517ff5=typeof _0x48f352==='string'?_0x48f352:_0x48f352['message']||'An\x20error\x20occurred';this['showToast'](_0x517ff5,'error');},'showSuccess'(_0x17337c){this['showToast'](_0x17337c,'success');},'capitalize'(_0x2c3119){if(!_0x2c3119)return'';return _0x2c3119['charAt'](0x0)['toUpperCase']()+_0x2c3119['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x3e53f9){return escapeHtmlValue(_0x3e53f9);},'ansiToHtml'(_0x3b6a1a){if(_0x3b6a1a===null||_0x3b6a1a===undefined)return'';let _0x3aeee7=this['escapeHtml'](_0x3b6a1a);const _0x124495={'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'},_0x5abc8d={'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 _0x2a1781=0x0;return _0x3aeee7=_0x3aeee7['replace'](/\x1b\[([0-9;]*)m/g,(_0x475443,_0x491756)=>{if(!_0x491756||_0x491756==='0'){const _0x41c802='</span>'['repeat'](_0x2a1781);return _0x2a1781=0x0,_0x41c802;}const _0x170125=_0x491756['split'](';'),_0x3b3441=[];for(const _0x136ed2 of _0x170125){if(_0x136ed2==='1')_0x3b3441['push']('font-weight:bold');else{if(_0x136ed2==='2')_0x3b3441['push']('opacity:0.7');else{if(_0x136ed2==='3')_0x3b3441['push']('font-style:italic');else{if(_0x136ed2==='4')_0x3b3441['push']('text-decoration:underline');else{if(_0x136ed2==='9')_0x3b3441['push']('text-decoration:line-through');else{if(_0x124495[_0x136ed2])_0x3b3441['push']('color:'+_0x124495[_0x136ed2]);else{if(_0x5abc8d[_0x136ed2])_0x3b3441['push']('background-color:'+_0x5abc8d[_0x136ed2]);}}}}}}}if(_0x3b3441['length']>0x0)return _0x2a1781++,'<span\x20style=\x22'+_0x3b3441['join'](';')+'\x22>';return'';}),_0x3aeee7+='</span>'['repeat'](_0x2a1781),_0x3aeee7=_0x3aeee7['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1c10ca,_0x3db66b)=>{if(!_0x3db66b||_0x3db66b==='0')return'';const _0x31953f=_0x3db66b['split'](';'),_0x494710=[];for(const _0x1fe5cb of _0x31953f){if(_0x1fe5cb==='1')_0x494710['push']('font-weight:bold');else{if(_0x124495[_0x1fe5cb])_0x494710['push']('color:'+_0x124495[_0x1fe5cb]);else{if(_0x5abc8d[_0x1fe5cb])_0x494710['push']('background-color:'+_0x5abc8d[_0x1fe5cb]);}}}if(_0x494710['length']>0x0)return'<span\x20style=\x22'+_0x494710['join'](';')+'\x22>';return'';}),_0x3aeee7;},'showModal'({title:_0x4378df,content:_0x2fba3b,buttons:buttons=[]}){const _0x41cbd2='\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'](_0x4378df)+'</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'+_0x2fba3b+'\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']((_0x4d18f8,_0x26dc48)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4d18f8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x26dc48+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4d18f8['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',_0xd32454=document['createElement']('div');_0xd32454['id']='utils-modal',_0xd32454['className']='modal',_0xd32454['innerHTML']=_0x41cbd2,document['body']['appendChild'](_0xd32454);const _0x4f421d=document['getElementById']('utils-modal-close');_0x4f421d&&_0x4f421d['addEventListener']('click',()=>this['hideModal']());const _0x4de974=_0xd32454['querySelectorAll']('[data-btn-index]');_0x4de974['forEach'](_0x1ed970=>{const _0x4305b7=parseInt(_0x1ed970['dataset']['btnIndex']);buttons[_0x4305b7]?.['onClick']&&_0x1ed970['addEventListener']('click',buttons[_0x4305b7]['onClick']);});const _0x18d9c9=document['getElementById']('utils-modal-overlay');_0x18d9c9&&_0x18d9c9['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x29f850=document['getElementById']('utils-modal');_0x29f850&&_0x29f850['remove']();},'parseKeyValuePairs'(_0x1e3417){const _0x4d3fd6={};if(!_0x1e3417)return _0x4d3fd6;return _0x1e3417['split'](/\r?\n/)['map'](_0x5cff84=>_0x5cff84['trim']())['filter'](Boolean)['forEach'](_0x1c3c7d=>{const _0x40b9e2=_0x1c3c7d['indexOf']('=');if(_0x40b9e2>0x0){const _0x8b1b55=_0x1c3c7d['slice'](0x0,_0x40b9e2)['trim'](),_0xb7be69=_0x1c3c7d['slice'](_0x40b9e2+0x1)['trim']();if(_0x8b1b55)_0x4d3fd6[_0x8b1b55]=_0xb7be69;}}),_0x4d3fd6;},'debounce'(_0x4f49d6,_0x133afa=0xfa){let _0x73862d=null;return(..._0x56ebdb)=>{clearTimeout(_0x73862d),_0x73862d=setTimeout(()=>_0x4f49d6['apply'](this,_0x56ebdb),_0x133afa);};},'formatTimestamp'(_0x33869e){if(!_0x33869e)return'N/A';const _0x22653b=new Date(_0x33869e);return _0x22653b['toLocaleDateString']()+'\x20'+_0x22653b['toLocaleTimeString']();},'getQueryParams'(){const _0x5ce64c=new URLSearchParams(window['location']['search']),_0x725a49={};for(const [_0x455627,_0x3c26cc]of _0x5ce64c){_0x725a49[_0x455627]=_0x3c26cc;}return _0x725a49;},'formatDuration'(_0x5b80c5,_0x4b6442){if(!_0x5b80c5)return'N/A';const _0x18b254=new Date(_0x5b80c5),_0xd5639a=_0x4b6442?new Date(_0x4b6442):new Date(),_0x4475be=_0xd5639a-_0x18b254;if(_0x4475be<0x0)return'0s';const _0x10b962=Math['floor'](_0x4475be/0x3e8),_0x20b89e=Math['floor'](_0x10b962/0x3c),_0x305e4c=Math['floor'](_0x20b89e/0x3c),_0x3b9ec0=Math['floor'](_0x305e4c/0x18);if(_0x10b962<0x3c)return _0x10b962+'s';if(_0x20b89e<0x3c)return _0x20b89e+'m\x20'+_0x10b962%0x3c+'s';if(_0x305e4c<0x18)return _0x305e4c+'h\x20'+_0x20b89e%0x3c+'m\x20'+_0x10b962%0x3c+'s';return _0x3b9ec0+'d\x20'+_0x305e4c%0x18+'h\x20'+_0x20b89e%0x3c+'m';},'renderMarkdown'(_0x58a012,_0x2fa12f={}){if(!_0x58a012)return'';_0x58a012=this['rewriteAttachmentLinks'](_0x58a012,_0x2fa12f),_0x58a012=this['rewriteColorSyntax'](_0x58a012);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x58a012);}catch(_0x3913a5){return console['error']('Markdown\x20parsing\x20error:',_0x3913a5),this['renderMarkdownFallback'](_0x58a012,_0x2fa12f);}},'rewriteAttachmentLinks'(_0x5c0ac1,_0x2e862f={}){const _0x108206=typeof _0x2e862f['resolveAttachmentUrl']==='function'?_0x2e862f['resolveAttachmentUrl']:_0x2e862f['taskId']?_0x1b7822=>API_BASE+'/tasks/'+_0x2e862f['taskId']+'/attachments/'+encodeURIComponent(_0x1b7822):null;if(!_0x108206)return _0x5c0ac1;return String(_0x5c0ac1)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5d6a31,_0x1e2fc3)=>{const _0x15ada0=String(_0x1e2fc3||'')['trim']();if(!_0x15ada0)return _0x5d6a31;let _0x572223=_0x15ada0;try{_0x572223=decodeURIComponent(_0x15ada0);}catch{}const _0xab9e61=_0x108206(_0x572223);if(!_0xab9e61)return _0x5d6a31;return']('+_0xab9e61+')';});},'rewriteColorSyntax'(_0x4e3ed3){if(!_0x4e3ed3)return _0x4e3ed3;return String(_0x4e3ed3)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x56d653,_0x37e5e2,_0x524485)=>{const _0x3db3f9=this['rewriteColorSyntax'](_0x524485);return'<span\x20style=\x22color:\x20'+_0x37e5e2+'\x22>'+_0x3db3f9+'</span>';});},'renderMarkdownFallback'(_0x4fb402,_0x226c76={}){if(!_0x4fb402)return'';_0x4fb402=_0x4fb402['replace'](/\r\n/g,'\x0a'),_0x4fb402=_0x4fb402['replace'](/\r/g,'\x0a'),_0x4fb402=this['rewriteAttachmentLinks'](_0x4fb402,_0x226c76);let _0x22d8b3=this['escapeHtml'](_0x4fb402);return _0x22d8b3=_0x22d8b3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x22d8b3=_0x22d8b3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x22d8b3=_0x22d8b3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x22d8b3=_0x22d8b3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x22d8b3=_0x22d8b3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x22d8b3=_0x22d8b3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x22d8b3=_0x22d8b3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x22d8b3=_0x22d8b3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x22d8b3=_0x22d8b3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x22d8b3=_0x22d8b3['replace'](/\n\n/g,'</p><p>'),_0x22d8b3=_0x22d8b3['replace'](/\n/g,'<br>'),'<p>'+_0x22d8b3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x2743a0=new Uint8Array(0x10);crypto['getRandomValues'](_0x2743a0),_0x2743a0[0x6]=_0x2743a0[0x6]&0xf|0x40,_0x2743a0[0x8]=_0x2743a0[0x8]&0x3f|0x80;const _0x4dd9e5=Array['from'](_0x2743a0,_0x3e032d=>_0x3e032d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x4dd9e5['slice'](0x0,0x8)+'-'+_0x4dd9e5['slice'](0x8,0xc)+'-'+_0x4dd9e5['slice'](0xc,0x10)+'-'+_0x4dd9e5['slice'](0x10,0x14)+'-'+_0x4dd9e5['slice'](0x14);}};export class CustomSelect{constructor(_0x584e12,_0x1efa2b={}){this['nativeSelect']=_0x584e12,this['options']=_0x1efa2b,this['isOpen']=![],this['selectedValue']=_0x584e12['value']||'',this['searchable']=_0x1efa2b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x3598c6=document['createElement']('div');_0x3598c6['className']='custom-select';const _0x2533e9=document['createElement']('div');_0x2533e9['className']='custom-select-trigger',_0x2533e9['setAttribute']('tabindex','0'),_0x2533e9['setAttribute']('role','button'),_0x2533e9['setAttribute']('aria-haspopup','listbox');const _0x244806=document['createElement']('span');_0x244806['className']='custom-select-trigger-text';const _0xac8285=document['createElement']('span');_0xac8285['className']='custom-select-arrow',_0xac8285['textContent']='▼',_0x2533e9['appendChild'](_0x244806),_0x2533e9['appendChild'](_0xac8285);const _0x293357=document['createElement']('div');_0x293357['className']='custom-select-dropdown',_0x293357['setAttribute']('role','listbox');if(this['searchable']){const _0x16299c=document['createElement']('div');_0x16299c['className']='custom-select-search';const _0x56d4c3=document['createElement']('input');_0x56d4c3['type']='text',_0x56d4c3['className']='custom-select-search-input',_0x56d4c3['placeholder']='Type\x20to\x20search...',_0x56d4c3['setAttribute']('aria-label','Search\x20options'),_0x56d4c3['addEventListener']('input',_0x2fe5ab=>{this['searchQuery']=_0x2fe5ab['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x56d4c3['addEventListener']('keydown',_0x1c18c7=>{if(_0x1c18c7['key']==='Escape')_0x1c18c7['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x1c18c7['key']==='Enter'){_0x1c18c7['preventDefault'](),_0x1c18c7['stopPropagation']();const _0x2b60c9=_0x293357['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2b60c9){const _0x4e769b=_0x2b60c9['getAttribute']('data-value');this['select'](_0x4e769b);}}}}),_0x16299c['appendChild'](_0x56d4c3),_0x293357['appendChild'](_0x16299c),this['searchInput']=_0x56d4c3;}const _0x387a05=document['createElement']('div');_0x387a05['className']='custom-select-options',_0x293357['appendChild'](_0x387a05),_0x3598c6['appendChild'](_0x2533e9),_0x3598c6['appendChild'](_0x293357),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x3598c6,this['nativeSelect']),this['wrapper']=_0x3598c6,this['trigger']=_0x2533e9,this['triggerText']=_0x244806,this['dropdown']=_0x293357,this['optionsContainer']=_0x387a05,_0x2533e9['addEventListener']('click',()=>this['toggle']()),_0x2533e9['addEventListener']('keydown',_0xf8d3bf=>this['handleKeydown'](_0xf8d3bf)),document['addEventListener']('click',_0x29c3a4=>{!_0x3598c6['contains'](_0x29c3a4['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x515eab=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x515eab['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x26a222=new MutationObserver(()=>{this['updateDisabledState']();});_0x26a222['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x540be3=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x540be3['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x576f0d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x576f0d),this['trigger']['setAttribute']('aria-disabled',_0x576f0d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x576f0d?'-1':'0'),_0x576f0d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x51bb13=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x3dd48e=_0x51bb13['filter'](_0x282bc2=>!_0x282bc2['disabled']&&!_0x282bc2['hidden']);_0x51bb13['forEach']((_0x5033ad,_0x46f45b)=>{const _0x402b89=document['createElement']('div');_0x402b89['className']='custom-select-option',_0x402b89['textContent']=_0x5033ad['textContent'],_0x402b89['setAttribute']('data-value',_0x5033ad['value']),_0x402b89['setAttribute']('data-index',_0x46f45b),_0x402b89['setAttribute']('role','option'),_0x5033ad['disabled']?_0x402b89['classList']['add']('disabled'):_0x402b89['addEventListener']('click',()=>this['select'](_0x5033ad['value'])),_0x5033ad['value']===this['selectedValue']&&_0x402b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x402b89),this['allOptions']['push']({'element':_0x402b89,'text':_0x5033ad['textContent']['toLowerCase'](),'value':_0x5033ad['value'],'disabled':_0x5033ad['disabled']});});if(this['searchable']&&this['searchInput']){const _0xbb1852=this['searchInput']['parentElement'];_0x3dd48e['length']>0x3?_0xbb1852['style']['display']='':_0xbb1852['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x54c16a=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x5d88ff=>{if(!_0x54c16a||_0x5d88ff['disabled'])_0x5d88ff['element']['style']['display']='';else{const _0x1d93c4=_0x5d88ff['text']['includes'](_0x54c16a);_0x5d88ff['element']['style']['display']=_0x1d93c4?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x235200){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x235200,this['nativeSelect']['value']=_0x235200;const _0x4571ec=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x4571ec),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x38fd18=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x38fd18&&(this['triggerText']['textContent']=_0x38fd18['textContent'],_0x38fd18['disabled']||_0x38fd18['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4a151e=>{_0x4a151e['getAttribute']('data-value')===this['selectedValue']?_0x4a151e['classList']['add']('selected'):_0x4a151e['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 _0x889f4b=window['getComputedStyle'](this['dropdown']);if(_0x889f4b['position']==='fixed'){const _0x1549e3=this['trigger']['getBoundingClientRect'](),_0x16cd38=parseInt(_0x889f4b['maxHeight'])||0xc8,_0x550481=window['innerHeight'],_0x313251=_0x550481-_0x1549e3['bottom'],_0x3055bd=_0x1549e3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x2e781f;_0x313251<_0x16cd38&&_0x3055bd>_0x313251?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x550481-_0x1549e3['top']+'px',_0x2e781f=Math['min'](_0x16cd38,_0x3055bd-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x1549e3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x2e781f=Math['min'](_0x16cd38,_0x313251-0xa),this['dropdown']['style']['maxHeight']=_0x2e781f+'px');if(this['optionsContainer']){let _0x25fcfa=_0x2e781f;if(this['searchInput']){const _0x165c5f=this['searchInput']['parentElement'];_0x165c5f&&(_0x25fcfa-=_0x165c5f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x25fcfa)+'px';}this['dropdown']['style']['left']=_0x1549e3['left']+'px',this['dropdown']['style']['width']=_0x1549e3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x52ec90=this['searchInput']['parentElement'];_0x52ec90&&_0x52ec90['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'](_0x3d1dc3){if(this['nativeSelect']['disabled'])return;if(_0x3d1dc3['key']==='Enter'||_0x3d1dc3['key']==='\x20')_0x3d1dc3['preventDefault'](),this['toggle']();else _0x3d1dc3['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2ccfcf='\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',_0x2ccfcf),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x42fc3f=document['getElementById']('confirm-dialog-close'),_0x1e6d67=document['getElementById']('confirm-dialog-cancel'),_0x1c8b5b=document['getElementById']('confirm-dialog-confirm'),_0x7f57a2=this['_modal']['querySelector']('.modal-overlay');_0x42fc3f['addEventListener']('click',()=>this['_resolve'](![])),_0x1e6d67['addEventListener']('click',()=>this['_resolve'](![])),_0x1c8b5b['addEventListener']('click',()=>this['_resolve'](!![])),_0x7f57a2['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x50773e=>{if(_0x50773e['key']==='Escape')_0x50773e['preventDefault'](),this['_resolve'](![]);else _0x50773e['key']==='Enter'&&(_0x50773e['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x346bbd,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x34be55=>{this['_resolvePromise']=_0x34be55,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x346bbd;const _0x2b1bcf=document['getElementById']('confirm-dialog-cancel'),_0x1ffc71=document['getElementById']('confirm-dialog-confirm');_0x2b1bcf['textContent']=cancelText,_0x1ffc71['textContent']=confirmText,_0x1ffc71['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1ffc71['focus']();});},'_resolve'(_0x358d3f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x358d3f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x141111,_0x1b64d5={}){this['container']=_0x141111,this['options']={'placeholder':_0x1b64d5['placeholder']||'Type\x20to\x20search...','maxItems':_0x1b64d5['maxItems']||0x64,'loadItems':_0x1b64d5['loadItems']||(async()=>[]),'renderItem':_0x1b64d5['renderItem']||(_0x593557=>({'primary':String(_0x593557),'secondary':''})),'onSelect':_0x1b64d5['onSelect']||(()=>{}),'filterItems':_0x1b64d5['filterItems']||null,'getItemValue':_0x1b64d5['getItemValue']||(_0x1d0482=>_0x1d0482),'sortItems':_0x1b64d5['sortItems']||null,'debounceMs':_0x1b64d5['debounceMs']||0xc8,'minCharsForSearch':_0x1b64d5['minCharsForSearch']||0x0,'emptyMessage':_0x1b64d5['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1b64d5['loadingMessage']||'Loading...','preload':_0x1b64d5['preload']!==![],'searchMode':_0x1b64d5['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',_0x29735b=>this['onBlur'](_0x29735b)),this['input']['addEventListener']('input',_0x5e3d85=>this['onInput'](_0x5e3d85)),this['input']['addEventListener']('keydown',_0x199555=>this['onKeydown'](_0x199555)),this['clearBtn']['addEventListener']('mousedown',_0x37d126=>{_0x37d126['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x43ade5=>{_0x43ade5['preventDefault']();}),document['addEventListener']('click',_0xc7d31c=>{!this['wrapper']['contains'](_0xc7d31c['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(_0x294182){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x294182);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x466dc9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xe4717a){const _0x2b80c9=_0xe4717a['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b80c9);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b80c9):this['loadAndShow'](_0x2b80c9);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4108c8){switch(_0x4108c8['key']){case'ArrowDown':_0x4108c8['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4108c8['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4108c8['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4108c8['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5c8e8e){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x5d3899=this['selectedIndex']+_0x5c8e8e;if(_0x5d3899>=0x0&&_0x5d3899<this['filteredItems']['length']){this['selectedIndex']=_0x5d3899,this['updateSelectionHighlight']();const _0xaddc73=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xaddc73[this['selectedIndex']]&&_0xaddc73[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4ab843=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4ab843['forEach']((_0x1b3e06,_0x1f7f1a)=>{_0x1b3e06['classList']['toggle']('keyboard-selected',_0x1f7f1a===this['selectedIndex']);});}async['loadAndShow'](_0x2db2ab){this['showLoading']();try{const _0x44af0a=await this['options']['loadItems'](_0x2db2ab);if(this['options']['searchMode']==='server'){let _0x3b42da=_0x44af0a;this['options']['sortItems']&&(_0x3b42da=this['options']['sortItems']([..._0x44af0a]));this['filteredItems']=_0x3b42da;const _0x13121a=this['filteredItems']['length']>=this['options']['maxItems'];_0x13121a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x13121a),this['open']();}else this['allItems']=_0x44af0a,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2db2ab);}catch(_0x14501f){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x14501f),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x419a75){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x419a75):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x23e326=this['filteredItems']['length']>=this['options']['maxItems'];_0x23e326&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x23e326),this['open']();}['renderItems'](_0x279744){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']((_0x352472,_0x4beccd)=>{const _0x4809fa=document['createElement']('div');_0x4809fa['className']='autocomplete-select-item',_0x4809fa['setAttribute']('role','option'),_0x4809fa['setAttribute']('data-index',_0x4beccd);const _0x22bf2b=this['options']['renderItem'](_0x352472);let _0x4cbf4e='';_0x22bf2b['icon']&&(_0x4cbf4e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x22bf2b['iconClass']||'')+'\x22>'+_0x22bf2b['icon']+'</span>'),_0x4809fa['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4cbf4e+'\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'](_0x22bf2b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x22bf2b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x22bf2b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x4809fa['addEventListener']('click',()=>{this['selectItem'](_0x352472);}),_0x4809fa['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4beccd,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x4809fa);}),_0x279744?(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'](_0x530be6){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x530be6)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x510cd1){this['selectedItem']=_0x510cd1;const _0xe1a64f=this['options']['renderItem'](_0x510cd1);this['input']['value']=_0xe1a64f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x510cd1);}['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'](_0x5ba19a){if(_0x5ba19a){this['selectedItem']=_0x5ba19a;const _0x4d4127=this['options']['renderItem'](_0x5ba19a);this['input']['value']=_0x4d4127['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x57ffea){this['allItems']=_0x57ffea,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'](_0x3ed5eb){this['input']['placeholder']=_0x3ed5eb;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x56aa56=null){const _0x2c6bbf=document['getElementById']('admin-menu-container'),_0x11c762=document['getElementById']('admin-menu-btn'),_0x386884=document['getElementById']('admin-menu');if(!_0x2c6bbf||!_0x11c762||!_0x386884)return;try{!_0x56aa56&&(_0x56aa56=await API['getCurrentUser']());if(_0x56aa56){const _0x533d04=window['Permissions'],_0x4daa09=_0x533d04['hasServerPermission'](_0x56aa56,'*')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:manage')||_0x533d04['hasServerPermission'](_0x56aa56,'users:create')||_0x533d04['hasTeamPermission'](_0x56aa56,'teams:manage')||_0x533d04['hasEnvPermission'](_0x56aa56,'environments:view_details');if(!_0x4daa09)return;_0x2c6bbf['hidden']=![];if(!_0x533d04['hasServerPermission'](_0x56aa56,'*')){const _0x2a67e3=_0x386884['querySelectorAll']('.admin-menu-item');_0x2a67e3['forEach'](_0x217945=>{const _0x425597=_0x217945['querySelector']('.option-text')?.['textContent']?.['trim']();_0x425597==='Users'&&!_0x533d04['hasServerPermission'](_0x56aa56,'users:create')&&(_0x217945['hidden']=!![]),_0x425597==='Skills'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Settings'&&(_0x217945['hidden']=!![]),_0x425597==='Server\x20Health'&&(_0x217945['hidden']=!![]),_0x425597==='Git\x20History'&&(_0x217945['hidden']=!![]),_0x425597==='Roles'&&(_0x217945['hidden']=!![]);});}_0x11c762['addEventListener']('click',_0x38a687=>{_0x38a687['stopPropagation']();const _0x1fa77c=document['getElementById']('actions-menu');if(_0x1fa77c)_0x1fa77c['hidden']=!![];_0x386884['hidden']=!_0x386884['hidden'];}),document['addEventListener']('click',_0x53d25f=>{!_0x386884['hidden']&&!_0x11c762['contains'](_0x53d25f['target'])&&!_0x386884['contains'](_0x53d25f['target'])&&(_0x386884['hidden']=!![]);}),document['addEventListener']('keydown',_0x77422d=>{_0x77422d['key']==='Escape'&&!_0x386884['hidden']&&(_0x386884['hidden']=!![]);});const _0x28c159=document['getElementById']('server-health-btn');_0x28c159&&_0x28c159['addEventListener']('click',async()=>{_0x386884['hidden']=!![];const {openServerHealthModal:_0x1097a9}=await import('./server-health.js');_0x1097a9();});}}catch(_0x431d7f){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x431d7f['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 _0x1e6a3c=window['location']['pathname'],_0x5db90e=_0x1e6a3c['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5db90e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5db90e[0x1]),_0x5db90e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x430f73={}){const _0x3f1e82=new URLSearchParams();_0x430f73['userId']&&_0x3f1e82['set']('userId',String(_0x430f73['userId']));_0x430f73['automation']&&_0x3f1e82['set']('automation',String(_0x430f73['automation']));const _0x914179=API_BASE+'/tasks/stats'+(_0x3f1e82['toString']()?'?'+_0x3f1e82['toString']():''),_0xd11ad2=await fetch(_0x914179);if(!_0xd11ad2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0xd11ad2['statusText']);return await _0xd11ad2['json']();},async 'getTasks'(_0x44bc65={}){const _0x31903b=new URLSearchParams();_0x44bc65['status']&&_0x31903b['set']('status',String(_0x44bc65['status']));_0x44bc65['environment']&&_0x31903b['set']('environment',String(_0x44bc65['environment']));_0x44bc65['automation']&&_0x31903b['set']('automation',String(_0x44bc65['automation']));if(_0x44bc65['include']){const _0x2b8bf6=Array['isArray'](_0x44bc65['include'])?_0x44bc65['include']['join'](','):String(_0x44bc65['include']);_0x2b8bf6&&_0x31903b['set']('include',_0x2b8bf6);}_0x44bc65['filter']&&_0x31903b['set']('filter',String(_0x44bc65['filter']));_0x44bc65['page']&&_0x31903b['set']('page',String(_0x44bc65['page']));_0x44bc65['limit']&&_0x31903b['set']('limit',String(_0x44bc65['limit']));_0x44bc65['userId']&&_0x31903b['set']('userId',String(_0x44bc65['userId']));_0x44bc65['search']&&_0x31903b['set']('search',String(_0x44bc65['search']));_0x44bc65['includeChildTasks']&&_0x31903b['set']('includeChildTasks','true');const _0x44fc61=API_BASE+'/tasks'+(_0x31903b['toString']()?'?'+_0x31903b['toString']():''),_0x277454=await fetch(_0x44fc61);if(!_0x277454['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x277454['statusText']);return await _0x277454['json']();},async 'getAutomations'(_0x46f0dd={}){const _0x452f9e=new URLSearchParams();_0x46f0dd['environment']&&_0x452f9e['set']('environment',String(_0x46f0dd['environment']));const _0x1f929a=await fetch(API_BASE+'/api/automations'+(_0x452f9e['toString']()?'?'+_0x452f9e['toString']():''));if(!_0x1f929a['ok']){const _0x3e41da=await _0x1f929a['json']()['catch'](()=>({}));throw new Error(_0x3e41da['message']||_0x3e41da['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1f929a['statusText']);}return await _0x1f929a['json']();},async 'getAutomation'(_0x318948){const _0x4ff062=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x318948));if(!_0x4ff062['ok']){const _0x11f55f=await _0x4ff062['json']()['catch'](()=>({}));throw new Error(_0x11f55f['message']||_0x11f55f['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4ff062['statusText']);}return await _0x4ff062['json']();},async 'createAutomation'(_0x54cc2b){const _0x168115=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54cc2b||{})});if(!_0x168115['ok']){const _0x57c20f=await _0x168115['json']()['catch'](()=>({}));throw new Error(_0x57c20f['message']||_0x57c20f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x168115['statusText']);}return await _0x168115['json']();},async 'updateAutomation'(_0x92645c,_0x18bef0){const _0x404712=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x92645c),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18bef0||{})});if(!_0x404712['ok']){const _0xe96de4=await _0x404712['json']()['catch'](()=>({}));throw new Error(_0xe96de4['message']||_0xe96de4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x404712['statusText']);}return await _0x404712['json']();},async 'deleteAutomation'(_0x41ad48){const _0x352edb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x41ad48),{'method':'DELETE'});if(!_0x352edb['ok']){const _0x41a849=await _0x352edb['json']()['catch'](()=>({}));throw new Error(_0x41a849['message']||_0x41a849['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x352edb['statusText']);}return await _0x352edb['json']();},async 'triggerAutomation'(_0x1c365e){const _0x5692=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c365e)+'/trigger',{'method':'POST'});if(!_0x5692['ok']){const _0x197d40=await _0x5692['json']()['catch'](()=>({}));throw new Error(_0x197d40['message']||_0x197d40['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x5692['statusText']);}return await _0x5692['json']();},async 'setAutomationEnabled'(_0x2036c4,_0x435fcf){const _0xe6e202=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2036c4)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x435fcf})});if(!_0xe6e202['ok']){const _0x573266=await _0xe6e202['json']()['catch'](()=>({}));throw new Error(_0x573266['message']||_0x573266['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0xe6e202['statusText']);}return await _0xe6e202['json']();},async 'getAutomationHistory'(_0x4f3c70,_0x2ec000=0x32){const _0x575e08=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4f3c70)+'/history?limit='+encodeURIComponent(String(_0x2ec000)));if(!_0x575e08['ok']){const _0x511465=await _0x575e08['json']()['catch'](()=>({}));throw new Error(_0x511465['message']||_0x511465['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x575e08['statusText']);}return await _0x575e08['json']();},async 'getTask'(_0x982e53,_0x520697={}){const _0x20d6d2=new URLSearchParams();if(_0x520697['include']){const _0x387938=Array['isArray'](_0x520697['include'])?_0x520697['include']['join'](','):String(_0x520697['include']);if(_0x387938)_0x20d6d2['set']('include',_0x387938);}const _0xc2644f=await fetch(API_BASE+'/tasks/'+_0x982e53+(_0x20d6d2['toString']()?'?'+_0x20d6d2['toString']():''));if(!_0xc2644f['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xc2644f['statusText']);return await _0xc2644f['json']();},async 'getTaskResults'(_0x42542f){const _0x9f87bc=await fetch(API_BASE+'/tasks/'+_0x42542f+'/results');if(!_0x9f87bc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x9f87bc['statusText']);return await _0x9f87bc['json']();},async 'getTaskPatches'(_0x1f93fc){const _0x4b5457=await fetch(API_BASE+'/tasks/'+_0x1f93fc+'/patches');if(!_0x4b5457['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x4b5457['statusText']);return await _0x4b5457['json']();},async 'getTaskAttachments'(_0x2b808b){const _0x4bbf21=await fetch(API_BASE+'/tasks/'+_0x2b808b+'/attachments');if(!_0x4bbf21['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x4bbf21['statusText']);return await _0x4bbf21['json']();},async 'uploadAttachments'(_0x3f2dc2,_0x1a3ce9){const _0xc322b5=new FormData();for(const _0x258973 of _0x1a3ce9){_0xc322b5['append']('attachments',_0x258973);}const _0x493a22=await fetch(API_BASE+'/tasks/'+_0x3f2dc2+'/attachments',{'method':'POST','body':_0xc322b5});if(!_0x493a22['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x493a22['statusText']);return await _0x493a22['json']();},async 'isAINameGenerationAvailable'(){try{const _0x381225=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x381225['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x381225['json']();}catch(_0x4df15b){return{'available':![],'reason':_0x4df15b['message']};}},async 'generateTaskName'(_0x167fc9){try{const _0x4865c9=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x167fc9})});return await _0x4865c9['json']();}catch(_0x1b5c7c){return{'success':![],'error':_0x1b5c7c['message']};}},async 'createTask'(_0x18f614){let _0x520c87,_0x19c4ee={};if(_0x18f614['files']&&_0x18f614['files']['length']>0x0){const _0x59e40a=new FormData();for(const [_0xd52e81,_0x5d967d]of Object['entries'](_0x18f614)){if(_0xd52e81!=='files'){if(_0x5d967d==null)continue;typeof _0x5d967d==='object'?_0x59e40a['append'](_0xd52e81,JSON['stringify'](_0x5d967d)):_0x59e40a['append'](_0xd52e81,String(_0x5d967d));}}for(const _0x3d6f2d of _0x18f614['files']){_0x59e40a['append']('attachments',_0x3d6f2d);}_0x520c87=_0x59e40a;}else _0x19c4ee['Content-Type']='application/json',_0x520c87=JSON['stringify'](_0x18f614);const _0x534bb4=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x19c4ee,'body':_0x520c87});if(!_0x534bb4['ok']){const _0x56d6a0=await _0x534bb4['json'](),_0x1cbaae=new Error(_0x56d6a0['error']||'Failed\x20to\x20create\x20task:\x20'+_0x534bb4['statusText']),{message:_0x38770d,..._0x272558}=_0x56d6a0;Object['assign'](_0x1cbaae,_0x272558);throw _0x1cbaae;}return await _0x534bb4['json']();},async 'createTestTask'(_0x3b6713){const _0x484500=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b6713)});if(!_0x484500['ok']){const _0xff60f2=await _0x484500['json']();throw new Error(_0xff60f2['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x484500['statusText']);}return await _0x484500['json']();},async 'createEphemeralTest'(_0x18cfd0){const _0x35e077=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18cfd0)});if(!_0x35e077['ok']){const _0x37b9ad=await _0x35e077['json']();throw new Error(_0x37b9ad['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35e077['statusText']);}return await _0x35e077['json']();},async 'createDeployTask'(_0x634cc9){const _0x509703=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x634cc9)});if(!_0x509703['ok']){const _0x267354=await _0x509703['json']();throw new Error(_0x267354['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x509703['statusText']);}return await _0x509703['json']();},async 'getEnvironments'(){const _0x441c1e=await fetch(API_BASE+'/environments');if(!_0x441c1e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x441c1e['statusText']);return await _0x441c1e['json']();},async 'getEnvironment'(_0x319809){const _0x126a94=await fetch(API_BASE+'/environments/'+_0x319809);if(!_0x126a94['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x126a94['statusText']);return await _0x126a94['json']();},async 'getEnvironmentRepoHistory'(_0x331d40,_0x58c336,_0x160d41={}){if(!_0x331d40||!_0x58c336)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x9f3fba=new URLSearchParams();if(_0x160d41['limit'])_0x9f3fba['set']('limit',String(_0x160d41['limit']));if(_0x160d41['offset'])_0x9f3fba['set']('offset',String(_0x160d41['offset']));if(_0x160d41['search'])_0x9f3fba['set']('search',String(_0x160d41['search']));if(_0x160d41['branch'])_0x9f3fba['set']('branch',String(_0x160d41['branch']));const _0xe027fa=API_BASE+'/environments/'+encodeURIComponent(_0x331d40)+'/repos/'+encodeURIComponent(_0x58c336)+'/git/history',_0x7e19ff=await fetch(''+_0xe027fa+(_0x9f3fba['toString']()?'?'+_0x9f3fba['toString']():''));if(!_0x7e19ff['ok']){const _0x173c54=await _0x7e19ff['json']()['catch'](()=>({}));throw new Error(_0x173c54['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x7e19ff['statusText']);}return await _0x7e19ff['json']();},async 'getEnvironmentRepoCommit'(_0x5240f5,_0x9ed95d,_0x47379d){if(!_0x5240f5||!_0x9ed95d||!_0x47379d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x11455a=API_BASE+'/environments/'+encodeURIComponent(_0x5240f5)+'/repos/'+encodeURIComponent(_0x9ed95d)+'/git/commits/'+encodeURIComponent(_0x47379d),_0x333aeb=await fetch(_0x11455a);if(!_0x333aeb['ok']){const _0x4c4372=await _0x333aeb['json']()['catch'](()=>({}));throw new Error(_0x4c4372['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x333aeb['statusText']);}return await _0x333aeb['json']();},async 'getEnvironmentRepoBranches'(_0x2aa913,_0x4940c9){if(!_0x2aa913||!_0x4940c9)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x433169=API_BASE+'/environments/'+encodeURIComponent(_0x2aa913)+'/repos/'+encodeURIComponent(_0x4940c9)+'/git/branches',_0x4fa38b=await fetch(_0x433169);if(!_0x4fa38b['ok']){const _0x1e3d57=await _0x4fa38b['json']()['catch'](()=>({}));throw new Error(_0x1e3d57['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x4fa38b['statusText']);}return await _0x4fa38b['json']();},async 'revertEnvironmentRepoCommit'(_0x262ff8,_0x1211bd,_0x1ec5ce,_0x13c2a4={}){if(!_0x262ff8||!_0x1211bd||!_0x1ec5ce)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x38b19f=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x262ff8)+'/repos/'+encodeURIComponent(_0x1211bd)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1ec5ce,..._0x13c2a4})});if(!_0x38b19f['ok']){const _0x5a1966=await _0x38b19f['json']()['catch'](()=>({}));throw new Error(_0x5a1966['message']||_0x5a1966['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x38b19f['statusText']);}return await _0x38b19f['json']();},async 'getTemplates'(_0x11e597={}){const _0x5a342d=new URLSearchParams();if(_0x11e597['include']){const _0x1497ea=Array['isArray'](_0x11e597['include'])?_0x11e597['include']['join'](','):String(_0x11e597['include']);if(_0x1497ea)_0x5a342d['set']('include',_0x1497ea);}const _0x4c3c37=await fetch(API_BASE+'/templates'+(_0x5a342d['toString']()?'?'+_0x5a342d['toString']():''));if(!_0x4c3c37['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4c3c37['statusText']);return await _0x4c3c37['json']();},async 'getTemplatesForEnvironment'(_0x281c55,_0x1e8102={}){if(!_0x281c55)throw new Error('Environment\x20name\x20is\x20required');const _0x5c353d=new URLSearchParams();if(_0x1e8102['include']){const _0x1205b5=Array['isArray'](_0x1e8102['include'])?_0x1e8102['include']['join'](','):String(_0x1e8102['include']);if(_0x1205b5)_0x5c353d['set']('include',_0x1205b5);}const _0x31973d=await fetch(API_BASE+'/templates/'+_0x281c55+(_0x5c353d['toString']()?'?'+_0x5c353d['toString']():''));if(!_0x31973d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x281c55+':\x20'+_0x31973d['statusText']);return await _0x31973d['json']();},async 'getTemplate'(_0x2eaf7e,_0x5ceec8,_0x17cfc3={}){if(!_0x2eaf7e||!_0x5ceec8)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x312961=new URLSearchParams();if(_0x17cfc3['include']){const _0x4987f9=Array['isArray'](_0x17cfc3['include'])?_0x17cfc3['include']['join'](','):String(_0x17cfc3['include']);if(_0x4987f9)_0x312961['set']('include',_0x4987f9);}const _0x215bb0=await fetch(API_BASE+'/templates/'+_0x2eaf7e+'/'+_0x5ceec8+(_0x312961['toString']()?'?'+_0x312961['toString']():''));if(!_0x215bb0['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x215bb0['statusText']);return await _0x215bb0['json']();},async 'getTaskLogs'(_0xf48b7b,_0xe2a088={}){if(!_0xf48b7b)throw new Error('Task\x20ID\x20is\x20required');const _0x36c855=new URLSearchParams();_0xe2a088['tail']&&_0x36c855['set']('tail',String(_0xe2a088['tail']));const _0x105b3e=await fetch(API_BASE+'/tasks/'+_0xf48b7b+'/logs'+(_0x36c855['toString']()?'?'+_0x36c855['toString']():''));if(!_0x105b3e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x105b3e['statusText']);return await _0x105b3e['text']();},async 'getContainers'(){const _0x5d0a4f=await fetch(API_BASE+'/containers');if(!_0x5d0a4f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5d0a4f['statusText']);return await _0x5d0a4f['json']();},async 'getContainer'(_0x4b9a80){const _0x14e10d=await fetch(API_BASE+'/containers/'+_0x4b9a80);if(!_0x14e10d['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x14e10d['statusText']);return await _0x14e10d['json']();},async 'startInteractiveContainer'(_0x5b6e11){const _0xcca4c4=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b6e11)});if(!_0xcca4c4['ok']){const _0x3d5860=await _0xcca4c4['json']()['catch'](()=>({}));throw new Error(_0x3d5860['message']||'Failed\x20to\x20start\x20container:\x20'+_0xcca4c4['statusText']);}return await _0xcca4c4['json']();},async 'startContainerCodeServer'(_0x148086,_0x3d3320={}){if(!_0x148086)throw new Error('Container\x20ID\x20is\x20required');const _0x127986=new URLSearchParams();_0x3d3320['theme']&&_0x127986['set']('theme',_0x3d3320['theme']);const _0x4a6d53=await fetch(API_BASE+'/containers/'+_0x148086+'/code-server'+(_0x127986['toString']()?'?'+_0x127986['toString']():'')),_0x277d9e=await _0x4a6d53['json']()['catch'](()=>({}));if(!_0x4a6d53['ok'])throw new Error(_0x277d9e['message']||_0x277d9e['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x4a6d53['statusText']);return _0x277d9e;},async 'stopContainer'(_0x208835){const _0x154633=await fetch(API_BASE+'/containers/'+_0x208835,{'method':'DELETE'});if(!_0x154633['ok']){const _0x39294d=await _0x154633['json']()['catch'](()=>({}));throw new Error(_0x39294d['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x154633['statusText']);}return await _0x154633['json']();},async 'stopTask'(_0x1a1347){if(!_0x1a1347)throw new Error('Task\x20ID\x20is\x20required');const _0x5305a7=await fetch(API_BASE+'/tasks/'+_0x1a1347+'/stop',{'method':'POST'});if(!_0x5305a7['ok']){const _0x12e819=await _0x5305a7['json']()['catch'](()=>({}));throw new Error(_0x12e819['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x5305a7['statusText']);}return await _0x5305a7['json']();},async 'interruptTask'(_0xdd167){if(!_0xdd167)throw new Error('Task\x20ID\x20is\x20required');const _0x3ea45c=await fetch(API_BASE+'/tasks/'+_0xdd167+'/interrupt',{'method':'POST'});if(!_0x3ea45c['ok']){const _0x1d7722=await _0x3ea45c['json']()['catch'](()=>({}));throw new Error(_0x1d7722['error']||_0x1d7722['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3ea45c['statusText']);}return await _0x3ea45c['json']();},async 'startTask'(_0x1c6151){if(!_0x1c6151)throw new Error('Task\x20ID\x20is\x20required');const _0x5b6381=await fetch(API_BASE+'/tasks/'+_0x1c6151+'/start',{'method':'POST'});if(!_0x5b6381['ok']){const _0x2fb715=await _0x5b6381['json']()['catch'](()=>({}));throw new Error(_0x2fb715['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5b6381['statusText']);}return await _0x5b6381['json']();},async 'deleteTask'(_0x40883c){if(!_0x40883c)throw new Error('Task\x20ID\x20is\x20required');const _0x580bdb=await fetch(API_BASE+'/tasks/'+_0x40883c,{'method':'DELETE'});if(!_0x580bdb['ok']){const _0x29a164=await _0x580bdb['json']()['catch'](()=>({}));throw new Error(_0x29a164['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x580bdb['statusText']);}return await _0x580bdb['json']();},async 'refreshTasksFromDisk'(){const _0x3c89ec=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3c89ec['ok']){const _0x414648=await _0x3c89ec['json']()['catch'](()=>({}));throw new Error(_0x414648['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3c89ec['statusText']);}return await _0x3c89ec['json']();},async 'approveTask'(_0x3d6343,_0x323866={}){if(!_0x3d6343)throw new Error('Task\x20ID\x20is\x20required');const _0x231ed3={'commit_message':_0x323866['commit_message']||'','pull':_0x323866['pull']??![],'push':_0x323866['push']??![]};_0x323866['new_branch']&&(_0x231ed3['new_branch']=_0x323866['new_branch']);const _0x18d5fd=await fetch(API_BASE+'/tasks/'+_0x3d6343+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x231ed3)});if(!_0x18d5fd['ok']){const _0x2b60fb=await _0x18d5fd['json']()['catch'](()=>({}));let _0xbf364=_0x2b60fb['error']||_0x2b60fb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x18d5fd['statusText'];if(_0x2b60fb['results']&&Array['isArray'](_0x2b60fb['results'])){const _0x507946=_0x2b60fb['results']['filter'](_0x31561f=>!_0x31561f['success']&&_0x31561f['error']);_0x507946['length']>0x0&&(_0xbf364=_0x507946[0x0]['error']);}throw new Error(_0xbf364);}return await _0x18d5fd['json']();},async 'getPullRequestInfo'(_0x31443d){if(!_0x31443d)throw new Error('Task\x20ID\x20is\x20required');const _0x632b23=await fetch(API_BASE+'/tasks/'+_0x31443d+'/pull-request-info');if(!_0x632b23['ok']){const _0x1829eb=await _0x632b23['json']()['catch'](()=>({}));throw new Error(_0x1829eb['error']||_0x1829eb['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x632b23['statusText']);}return await _0x632b23['json']();},async 'createPullRequests'(_0x50a8fe,_0x419a81){if(!_0x50a8fe)throw new Error('Task\x20ID\x20is\x20required');if(!_0x419a81||!Array['isArray'](_0x419a81))throw new Error('repos\x20array\x20is\x20required');const _0x409eff=await fetch(API_BASE+'/tasks/'+_0x50a8fe+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x419a81})});if(!_0x409eff['ok']){const _0x4b3108=await _0x409eff['json']()['catch'](()=>({}));let _0x312954=_0x4b3108['error']||_0x4b3108['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x409eff['statusText'];if(_0x4b3108['results']&&Array['isArray'](_0x4b3108['results'])){const _0x34745e=_0x4b3108['results']['filter'](_0x54a77b=>!_0x54a77b['success']&&_0x54a77b['error']);_0x34745e['length']>0x0&&(_0x312954=_0x34745e[0x0]['error']);}throw new Error(_0x312954);}return await _0x409eff['json']();},async 'syncRepos'(_0x485d62){if(!_0x485d62)throw new Error('Task\x20ID\x20is\x20required');const _0xdf726a=await fetch(API_BASE+'/tasks/'+_0x485d62+'/sync-repos',{'method':'POST'});if(!_0xdf726a['ok']){const _0x3b106f=await _0xdf726a['json']()['catch'](()=>({}));throw new Error(_0x3b106f['error']||_0x3b106f['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xdf726a['statusText']);}return await _0xdf726a['json']();},async 'getIbmiSyncInfo'(_0x3543e3){if(!_0x3543e3)throw new Error('Task\x20ID\x20is\x20required');const _0x25d179=await fetch(API_BASE+'/tasks/'+_0x3543e3+'/ibmi-sync-info');if(!_0x25d179['ok']){const _0x18f64d=await _0x25d179['json']()['catch'](()=>({}));throw new Error(_0x18f64d['error']||_0x18f64d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x25d179['json']();},async 'getSyncFiles'(_0x3d85e1){if(!_0x3d85e1)throw new Error('Task\x20ID\x20is\x20required');const _0x45906e=await fetch(API_BASE+'/tasks/'+_0x3d85e1+'/sync-to-ibmi/files');if(!_0x45906e['ok']){const _0x3a2524=await _0x45906e['json']()['catch'](()=>({}));throw new Error(_0x3a2524['error']||_0x3a2524['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x45906e['json']();},async 'syncToIbmi'(_0x105fa8,_0x41e58e,_0x8d6ae8=null,_0x2899a5=null,_0x491580=null){if(!_0x105fa8)throw new Error('Task\x20ID\x20is\x20required');const _0x50a2b7={'library':_0x41e58e};if(_0x8d6ae8)_0x50a2b7['user']=_0x8d6ae8;if(_0x2899a5)_0x50a2b7['password']=_0x2899a5;if(_0x491580)_0x50a2b7['files']=_0x491580;const _0x3b9b04=await fetch(API_BASE+'/tasks/'+_0x105fa8+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50a2b7)});if(!_0x3b9b04['ok']){const _0x81417f=await _0x3b9b04['json']()['catch'](()=>({}));throw new Error(_0x81417f['error']||_0x81417f['message']||'Sync\x20failed');}return await _0x3b9b04['json']();},async 'getIbmiSyncLog'(_0x3f44af){if(!_0x3f44af)throw new Error('Task\x20ID\x20is\x20required');const _0x2647a1=await fetch(API_BASE+'/tasks/'+_0x3f44af+'/ibmi-sync-log');if(!_0x2647a1['ok']){const _0x499ffa=await _0x2647a1['json']()['catch'](()=>({}));throw new Error(_0x499ffa['error']||_0x499ffa['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x2647a1['json']();},async 'pullChanges'(_0x1e7346){if(!_0x1e7346)throw new Error('Task\x20ID\x20is\x20required');const _0x5acc04=await fetch(API_BASE+'/tasks/'+_0x1e7346+'/pull-changes',{'method':'POST'});if(!_0x5acc04['ok']){const _0x26a586=await _0x5acc04['json']()['catch'](()=>({}));throw new Error(_0x26a586['error']||_0x26a586['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5acc04['statusText']);}return await _0x5acc04['json']();},async 'readFile'(_0x2e0eea,_0x3940b4){if(!_0x2e0eea)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3940b4)throw new Error('File\x20path\x20is\x20required');const _0x19c9b7=await fetch(API_BASE+'/tasks/'+_0x2e0eea+'/files?path='+encodeURIComponent(_0x3940b4));if(!_0x19c9b7['ok']){const _0x5a21f6=await _0x19c9b7['json']()['catch'](()=>({}));throw new Error(_0x5a21f6['error']||_0x5a21f6['message']||'Failed\x20to\x20read\x20file:\x20'+_0x19c9b7['statusText']);}return await _0x19c9b7['json']();},'getTaskFileDownloadUrl'(_0x296a7c,_0x1a5844){if(!_0x296a7c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a5844)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x296a7c+'/files/download?path='+encodeURIComponent(_0x1a5844);},async 'writeFile'(_0x52daf0,_0x50a940,_0x2d26b0){if(!_0x52daf0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50a940)throw new Error('File\x20path\x20is\x20required');if(_0x2d26b0===undefined)throw new Error('Content\x20is\x20required');const _0x185777=await fetch(API_BASE+'/tasks/'+_0x52daf0+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x50a940,'content':_0x2d26b0})});if(!_0x185777['ok']){const _0x53a33b=await _0x185777['json']()['catch'](()=>({}));throw new Error(_0x53a33b['error']||_0x53a33b['message']||'Failed\x20to\x20write\x20file:\x20'+_0x185777['statusText']);}return await _0x185777['json']();},async 'uploadTaskFiles'(_0x572842,_0x245446,_0x3539c2){if(!_0x572842)throw new Error('Task\x20ID\x20is\x20required');if(!_0x245446)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3539c2||_0x3539c2['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x32b10f=new FormData();_0x32b10f['append']('targetDir',_0x245446);for(const _0xa7cc8 of _0x3539c2){_0x32b10f['append']('files',_0xa7cc8,_0xa7cc8['name']);}const _0x516fa5=await fetch(API_BASE+'/tasks/'+_0x572842+'/files/upload',{'method':'POST','body':_0x32b10f});if(!_0x516fa5['ok']){const _0x2962e7=await _0x516fa5['json']()['catch'](()=>({}));throw new Error(_0x2962e7['error']||_0x2962e7['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x516fa5['statusText']);}return await _0x516fa5['json']();},async 'createDirectory'(_0x1c1ff3,_0x731597){if(!_0x1c1ff3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x731597)throw new Error('Directory\x20path\x20is\x20required');const _0x16ddc3=await fetch(API_BASE+'/tasks/'+_0x1c1ff3+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x731597})});if(!_0x16ddc3['ok']){const _0x2aea00=await _0x16ddc3['json']()['catch'](()=>({}));throw new Error(_0x2aea00['error']||_0x2aea00['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x16ddc3['statusText']);}return await _0x16ddc3['json']();},async 'renamePath'(_0x597b21,_0x59ed0e,_0x5f02e2){if(!_0x597b21)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59ed0e)throw new Error('Source\x20path\x20is\x20required');if(!_0x5f02e2)throw new Error('Destination\x20path\x20is\x20required');const _0x2b60a1=await fetch(API_BASE+'/tasks/'+_0x597b21+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x59ed0e,'newPath':_0x5f02e2})});if(!_0x2b60a1['ok']){const _0x7cb617=await _0x2b60a1['json']()['catch'](()=>({}));throw new Error(_0x7cb617['error']||_0x7cb617['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x2b60a1['statusText']);}return await _0x2b60a1['json']();},async 'deleteFile'(_0x511a65,_0x2c7708){if(!_0x511a65)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c7708)throw new Error('File\x20path\x20is\x20required');const _0x283d23=await fetch(API_BASE+'/tasks/'+_0x511a65+'/files?path='+encodeURIComponent(_0x2c7708),{'method':'DELETE'});if(!_0x283d23['ok']){const _0x3c0aed=await _0x283d23['json']()['catch'](()=>({}));throw new Error(_0x3c0aed['error']||_0x3c0aed['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x283d23['statusText']);}return await _0x283d23['json']();},async 'deleteDirectory'(_0x1f2af3,_0x5326d3){if(!_0x1f2af3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5326d3)throw new Error('Directory\x20path\x20is\x20required');const _0x9cafd0=await fetch(API_BASE+'/tasks/'+_0x1f2af3+'/files/directory?path='+encodeURIComponent(_0x5326d3),{'method':'DELETE'});if(!_0x9cafd0['ok']){const _0x4daa2e=await _0x9cafd0['json']()['catch'](()=>({}));throw new Error(_0x4daa2e['error']||_0x4daa2e['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x9cafd0['statusText']);}return await _0x9cafd0['json']();},async 'discardFile'(_0x5e821f,_0xccc511,_0x537898){if(!_0x5e821f)throw new Error('Task\x20ID\x20is\x20required');if(!_0xccc511)throw new Error('File\x20path\x20is\x20required');if(!_0x537898)throw new Error('Repository\x20path\x20is\x20required');const _0x4fd24d=await fetch(API_BASE+'/tasks/'+_0x5e821f+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xccc511,'repoPath':_0x537898})});if(!_0x4fd24d['ok']){const _0x80fc30=await _0x4fd24d['json']()['catch'](()=>({}));throw new Error(_0x80fc30['error']||_0x80fc30['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4fd24d['statusText']);}return await _0x4fd24d['json']();},async 'followUpTask'(_0xdd7193,_0x3d5341={}){if(!_0xdd7193)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3d5341['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x47e3ec,_0x3686b4={};if(_0x3d5341['files']&&_0x3d5341['files']['length']>0x0){const _0x347144=new FormData();_0x347144['append']('instructions',_0x3d5341['instructions']);for(const _0x45a874 of _0x3d5341['files']){_0x347144['append']('attachments',_0x45a874);}_0x47e3ec=_0x347144;}else _0x3686b4['Content-Type']='application/json',_0x47e3ec=JSON['stringify']({'instructions':_0x3d5341['instructions']});const _0x243dd4=await fetch(API_BASE+'/tasks/'+_0xdd7193+'/follow-up',{'method':'POST','headers':_0x3686b4,'body':_0x47e3ec});if(!_0x243dd4['ok']){const _0x2b5b93=await _0x243dd4['json']()['catch'](()=>({}));throw new Error(_0x2b5b93['error']||_0x2b5b93['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x243dd4['statusText']);}return await _0x243dd4['json']();},async 'getTaskRewindPoints'(_0x1c86d5){if(!_0x1c86d5)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8556=await fetch(API_BASE+'/tasks/'+_0x1c86d5+'/rewind-points');if(!_0x4f8556['ok']){const _0x57af8b=await _0x4f8556['json']()['catch'](()=>({}));throw new Error(_0x57af8b['error']||_0x57af8b['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4f8556['statusText']);}return await _0x4f8556['json']();},async 'rewindTask'(_0x33b593,_0x1da609={}){if(!_0x33b593)throw new Error('Task\x20ID\x20is\x20required');const _0x18450e=Number['isInteger'](_0x1da609['targetFollowUpCount'])?_0x1da609['targetFollowUpCount']:0x0,_0x1d33b3={'targetFollowUpCount':_0x18450e};typeof _0x1da609['instructions']==='string'&&_0x1da609['instructions']['trim']()&&(_0x1d33b3['instructions']=_0x1da609['instructions']['trim']());typeof _0x1da609['rewindFiles']==='boolean'&&(_0x1d33b3['rewindFiles']=_0x1da609['rewindFiles']);const _0x518b2c=await fetch(API_BASE+'/tasks/'+_0x33b593+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d33b3)});if(!_0x518b2c['ok']){const _0x30010d=await _0x518b2c['json']()['catch'](()=>({}));throw new Error(_0x30010d['error']||_0x30010d['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x518b2c['statusText']);}return await _0x518b2c['json']();},async 'login'(_0x3616f6,_0x57fbcf){const _0x542a14=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x3616f6,'password':_0x57fbcf})});if(!_0x542a14['ok']){const _0x419a24=await _0x542a14['json']();throw new Error(_0x419a24['message']||'Login\x20failed');}return await _0x542a14['json']();},async 'logout'(){const _0x25a662=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x25a662['ok']){const _0x2db4d2=await _0x25a662['json']();throw new Error(_0x2db4d2['message']||'Logout\x20failed');}return await _0x25a662['json']();},async 'getCurrentUser'(){const _0x136c34=await fetch(API_BASE+'/auth/me');if(!_0x136c34['ok'])throw new Error('Not\x20authenticated');const _0x2a1a2a=await _0x136c34['json']();return _0x2a1a2a['user'];},async 'getRolesInfo'(){const _0x30e3cd=await fetch(API_BASE+'/users/roles');if(!_0x30e3cd['ok']){const _0x168a22=await _0x30e3cd['json']();throw new Error(_0x168a22['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x30e3cd['json']();},async 'getUsers'(){const _0x2fd2e2=await fetch(API_BASE+'/users');if(!_0x2fd2e2['ok']){const _0x447921=await _0x2fd2e2['json']();throw new Error(_0x447921['message']||'Failed\x20to\x20get\x20users');}return await _0x2fd2e2['json']();},async 'getUser'(_0xd084d3){const _0x14bb9f=await fetch(API_BASE+'/users/'+_0xd084d3);if(!_0x14bb9f['ok']){const _0x346011=await _0x14bb9f['json']();throw new Error(_0x346011['message']||'Failed\x20to\x20get\x20user');}return await _0x14bb9f['json']();},async 'createUser'(_0x60a3c6){const _0x5bd8b=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x60a3c6)});if(!_0x5bd8b['ok']){const _0x42cd71=await _0x5bd8b['json']();throw new Error(_0x42cd71['message']||'Failed\x20to\x20create\x20user');}return await _0x5bd8b['json']();},async 'updateUser'(_0x13e40c,_0x2d0e95){const _0x48e4a4=await fetch(API_BASE+'/users/'+_0x13e40c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d0e95)});if(!_0x48e4a4['ok']){const _0x32e11d=await _0x48e4a4['json']();throw new Error(_0x32e11d['message']||'Failed\x20to\x20update\x20user');}return await _0x48e4a4['json']();},async 'deleteUser'(_0x4245f7){const _0x4b41b5=await fetch(API_BASE+'/users/'+_0x4245f7,{'method':'DELETE'});if(!_0x4b41b5['ok']){const _0x38e594=await _0x4b41b5['json']();throw new Error(_0x38e594['message']||'Failed\x20to\x20delete\x20user');}return await _0x4b41b5['json']();},async 'stopAllContainers'(){const _0x526a40=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4599ff=await _0x526a40['json']()['catch'](()=>({}));if(!_0x526a40['ok'])throw new Error(_0x4599ff['message']||_0x4599ff['error']||'Failed\x20to\x20stop\x20containers');return _0x4599ff;},async 'removeStoppedContainers'(){const _0x35f4b6=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2e7d3c=await _0x35f4b6['json']()['catch'](()=>({}));if(!_0x35f4b6['ok'])throw new Error(_0x2e7d3c['message']||_0x2e7d3c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2e7d3c;},async 'pruneDockerResources'(){const _0x4f13f2=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x5137a1=await _0x4f13f2['json']()['catch'](()=>({}));if(!_0x4f13f2['ok'])throw new Error(_0x5137a1['message']||_0x5137a1['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x5137a1;},async 'createPasswordToken'(_0x41900f,_0x68e631='setup',_0x8b308=![]){const _0xe139e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x41900f,'type':_0x68e631,'sendEmail':_0x8b308})});if(!_0xe139e['ok']){const _0x34d9b9=await _0xe139e['json']();throw new Error(_0x34d9b9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0xe139e['json']();},async 'getEmailConfig'(){const _0x5ac18d=await fetch(API_BASE+'/password/email-config');if(!_0x5ac18d['ok']){const _0x5eb349=await _0x5ac18d['json']();throw new Error(_0x5eb349['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5ac18d['json']();},async 'updateTaskName'(_0x1d1c37,_0x4f13c3){const _0xa47a3a=await fetch(API_BASE+'/tasks/'+_0x1d1c37,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4f13c3})});if(!_0xa47a3a['ok']){const _0x3a12cf=await _0xa47a3a['json']();throw new Error(_0x3a12cf['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0xa47a3a['json']();},async 'pinTask'(_0x1e7f56,_0x32c572,_0x5cf71a=null){if(!_0x1e7f56)throw new Error('Task\x20ID\x20is\x20required');const _0x336dfb={'pinned':_0x32c572};_0x5cf71a&&_0x5cf71a['length']>0x0&&(_0x336dfb['additionalTaskIds']=_0x5cf71a);const _0x38525c=await fetch(API_BASE+'/tasks/'+_0x1e7f56+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x336dfb)});if(!_0x38525c['ok']){const _0x25c458=await _0x38525c['json']();throw new Error(_0x25c458['error']||'Failed\x20to\x20pin\x20task');}return await _0x38525c['json']();},async 'setTaskWinner'(_0x361d1,_0x30f783,_0x1fa7fb=[]){if(!_0x361d1)throw new Error('Task\x20ID\x20is\x20required');const _0x599d03=await fetch(API_BASE+'/tasks/'+_0x361d1+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x30f783,'siblings':_0x1fa7fb})});if(!_0x599d03['ok']){const _0x41a56c=await _0x599d03['json']();throw new Error(_0x41a56c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x599d03['json']();},async 'setTaskLoser'(_0x433e91,_0x5a1ce9){if(!_0x433e91)throw new Error('Task\x20ID\x20is\x20required');const _0x56dab9=await fetch(API_BASE+'/tasks/'+_0x433e91+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x5a1ce9})});if(!_0x56dab9['ok']){const _0x4fe12a=await _0x56dab9['json']();throw new Error(_0x4fe12a['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x56dab9['json']();},async 'createTaskGroup'(_0x200c2e){const _0x38b8cc=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x200c2e)});if(!_0x38b8cc['ok']){const _0x37d6ec=await _0x38b8cc['json']();throw new Error(_0x37d6ec['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x38b8cc['json']();},async 'getTaskGroups'(_0x31856f={}){const _0x318a88=new URLSearchParams();if(_0x31856f['userId'])_0x318a88['set']('userId',String(_0x31856f['userId']));if(_0x31856f['status'])_0x318a88['set']('status',String(_0x31856f['status']));if(_0x31856f['limit'])_0x318a88['set']('limit',String(_0x31856f['limit']));const _0x15c498=API_BASE+'/tasks/groups'+(_0x318a88['toString']()?'?'+_0x318a88['toString']():''),_0x5cd2dc=await fetch(_0x15c498);if(!_0x5cd2dc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x5cd2dc['json']();},async 'getTaskGroup'(_0x30a7c2){const _0x35f342=await fetch(API_BASE+'/tasks/groups/'+_0x30a7c2);if(!_0x35f342['ok']){const _0x5ceb39=await _0x35f342['json']();throw new Error(_0x5ceb39['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x35f342['json']();},async 'updateTaskGroup'(_0x1856e1,_0xe93bc2,_0x49ed08){const _0x36c0ac=await fetch(API_BASE+'/tasks/'+_0x1856e1+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xe93bc2,'groupIndex':_0x49ed08})});if(!_0x36c0ac['ok']){const _0x5adbd3=await _0x36c0ac['json']();throw new Error(_0x5adbd3['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x36c0ac['json']();},async 'removeTaskFromGroup'(_0x66381c){return this['updateTaskGroup'](_0x66381c,null,null);},async 'deleteTaskGroup'(_0x1392f4,_0x20ec5c=![]){const _0x287523=_0x20ec5c?'?deleteTasks=true':'',_0x31b4a0=await fetch(API_BASE+'/tasks/groups/'+_0x1392f4+_0x287523,{'method':'DELETE'});if(!_0x31b4a0['ok']){const _0x3fabf7=await _0x31b4a0['json']();throw new Error(_0x3fabf7['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x321775,_0x3f935a){const _0x1a39ff=await fetch(API_BASE+'/tasks/groups/'+_0x321775+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3f935a})});if(!_0x1a39ff['ok']){const _0x382dd6=await _0x1a39ff['json']();throw new Error(_0x382dd6['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1a39ff['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5a628e){if(!_0x5a628e)throw new Error('Task\x20ID\x20is\x20required');const _0x162eff=await fetch(API_BASE+'/tasks/'+_0x5a628e+'/comments');if(!_0x162eff['ok']){const _0x5ef375=await _0x162eff['json']()['catch'](()=>({}));throw new Error(_0x5ef375['error']||'Failed\x20to\x20get\x20comments');}return await _0x162eff['json']();},async 'addComment'(_0x4a3be8,_0x11e2bb){if(!_0x4a3be8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x11e2bb)throw new Error('Comment\x20content\x20is\x20required');const _0x5f7ffb=await fetch(API_BASE+'/tasks/'+_0x4a3be8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x11e2bb})});if(!_0x5f7ffb['ok']){const _0x575c7d=await _0x5f7ffb['json']()['catch'](()=>({}));throw new Error(_0x575c7d['error']||'Failed\x20to\x20add\x20comment');}return await _0x5f7ffb['json']();},async 'updateComment'(_0x5922e7,_0x34a3bc,_0xdd4235){if(!_0x5922e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34a3bc)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xdd4235)throw new Error('Comment\x20content\x20is\x20required');const _0x55b6af=await fetch(API_BASE+'/tasks/'+_0x5922e7+'/comments/'+_0x34a3bc,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xdd4235})});if(!_0x55b6af['ok']){const _0x585d29=await _0x55b6af['json']()['catch'](()=>({}));throw new Error(_0x585d29['error']||'Failed\x20to\x20update\x20comment');}return await _0x55b6af['json']();},async 'deleteComment'(_0x270bc9,_0x20ff2b){if(!_0x270bc9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20ff2b)throw new Error('Comment\x20ID\x20is\x20required');const _0xd03eb0=await fetch(API_BASE+'/tasks/'+_0x270bc9+'/comments/'+_0x20ff2b,{'method':'DELETE'});if(!_0xd03eb0['ok']){const _0x30b1f9=await _0xd03eb0['json']()['catch'](()=>({}));throw new Error(_0x30b1f9['error']||'Failed\x20to\x20delete\x20comment');}return await _0xd03eb0['json']();},async 'createObjective'(_0x56285c){const _0xb1d630={'objective':!![],'name':_0x56285c['name']||'','environment':_0x56285c['environment']||null,'agents':_0x56285c['agents']||[],'branches':_0x56285c['branches']||{},'isPinned':_0x56285c['isPinned']||![],'parentObjectiveId':_0x56285c['parentObjectiveId']||null,'env_vars':_0x56285c['envVars']||{},'parameters':{'instructions':_0x56285c['instructions']||''},'files':_0x56285c['files']||[],'jira':_0x56285c['jira']||null};return this['createTask'](_0xb1d630);},async 'updateObjective'(_0x32e9eb,_0x1f61d8,_0x2d51e1=[],_0x185981=[]){let _0x3f5a36,_0x230f74={};const _0x2be22d={..._0x1f61d8};_0x185981&&_0x185981['length']>0x0&&(_0x2be22d['removeAttachments']=_0x185981);if(_0x2d51e1&&_0x2d51e1['length']>0x0){const _0x38d1f8=new FormData();for(const [_0x12b710,_0x554682]of Object['entries'](_0x2be22d)){if(_0x554682==null)continue;typeof _0x554682==='object'?_0x38d1f8['append'](_0x12b710,JSON['stringify'](_0x554682)):_0x38d1f8['append'](_0x12b710,String(_0x554682));}for(const _0x6b3f10 of _0x2d51e1){_0x38d1f8['append']('attachments',_0x6b3f10);}_0x3f5a36=_0x38d1f8;}else _0x230f74['Content-Type']='application/json',_0x3f5a36=JSON['stringify'](_0x2be22d);const _0xf7dcff=await fetch(API_BASE+'/tasks/'+_0x32e9eb,{'method':'PATCH','headers':_0x230f74,'body':_0x3f5a36});if(!_0xf7dcff['ok']){const _0x359689=await _0xf7dcff['json']();throw new Error(_0x359689['error']||'Failed\x20to\x20update\x20objective');}return await _0xf7dcff['json']();},async 'deleteObjective'(_0xb971bc){return this['deleteTask'](_0xb971bc);},async 'launchObjective'(_0x4c34e1,_0x3daf03={}){const _0x2ab453=await fetch(API_BASE+'/tasks/'+_0x4c34e1+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3daf03)});if(!_0x2ab453['ok']){const _0x20f3f6=await _0x2ab453['json']();throw new Error(_0x20f3f6['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2ab453['json']();},async 'getObjectiveAttachments'(_0x3402ae){return this['getTaskAttachments'](_0x3402ae);},async 'createJudgeTask'({environment:_0x337f4f,judgeAgent:_0x94d580,groupId:_0x73276f,taskIds:_0x43c90f,judgeCustomInstructions:_0x13aff3,isPinned:_0x4790af}){const _0x46e271=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x337f4f,'judgeAgent':_0x94d580,'groupId':_0x73276f,'taskIds':_0x43c90f,'judgeCustomInstructions':_0x13aff3,'isPinned':_0x4790af})});if(!_0x46e271['ok']){const _0x189786=await _0x46e271['json']();throw new Error(_0x189786['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x46e271['json']();},async 'getJudgeTasks'(_0x1b0504){const _0xa14825=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1b0504));if(!_0xa14825['ok']){const _0x57f21d=await _0xa14825['json']();throw new Error(_0x57f21d['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xa14825['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x499256,_0x555fdf,_0x17efc0=''){const _0x320d6b=await fetch(API_BASE+'/tasks/'+_0x499256+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x555fdf,'customPreamble':_0x17efc0})});if(!_0x320d6b['ok']){const _0x4feca6=await _0x320d6b['json']();throw new Error(_0x4feca6['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x320d6b['json']();},async 'getJiraConfig'(){const _0x335794=await fetch(API_BASE+'/jira/config');if(!_0x335794['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x335794['json']();},async 'getJiraIssue'(_0x539f0b){const _0x35f045=await fetch(API_BASE+'/jira/issues/'+_0x539f0b);if(!_0x35f045['ok']){const _0x2639e7=await _0x35f045['json']()['catch'](()=>({}));throw new Error(_0x2639e7['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x35f045['statusText']);}return await _0x35f045['json']();},async 'searchJiraIssues'(_0x2f9897,_0x579381=0x14){const _0x3c2199=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2f9897,'maxResults':_0x579381})});if(!_0x3c2199['ok']){const _0x630d9b=await _0x3c2199['json']()['catch'](()=>({}));throw new Error(_0x630d9b['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x3c2199['statusText']);}return await _0x3c2199['json']();},async 'postJiraComment'(_0x5df791,_0x5c7c88){const _0x33b82b=await fetch(API_BASE+'/jira/issues/'+_0x5df791+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x5c7c88})});if(!_0x33b82b['ok']){const _0x41edf2=await _0x33b82b['json']()['catch'](()=>({}));throw new Error(_0x41edf2['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x33b82b['statusText']);}return await _0x33b82b['json']();},async 'getJiraComments'(_0x17b571){const _0x1f7489=await fetch(API_BASE+'/jira/issues/'+_0x17b571+'/comments');if(!_0x1f7489['ok']){const _0x2a92a0=await _0x1f7489['json']()['catch'](()=>({}));throw new Error(_0x2a92a0['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x1f7489['statusText']);}return await _0x1f7489['json']();},async 'promptParameter'({environment:_0x57053e,command:_0x5c4d3a,parser:parser='json'}){const _0x2ca69b=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x57053e,'command':_0x5c4d3a,'parser':parser})});if(!_0x2ca69b['ok']){const _0x2c7fa7=await _0x2ca69b['json']()['catch'](()=>({}));throw new Error(_0x2c7fa7['message']||_0x2c7fa7['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2ca69b['statusText']);}return await _0x2ca69b['json']();},async 'promptParameterStream'(_0x2b8818,_0x28b695){const _0x2ee1eb=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b8818)});if(!_0x2ee1eb['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2ee1eb['statusText']);const _0x17952a=_0x2ee1eb['body']['getReader'](),_0x5c35ef=new TextDecoder();let _0x3910e9='';return new Promise((_0x3e5d11,_0x26f050)=>{const _0x234c4f=async()=>{try{const {done:_0x1d4bdb,value:_0x35584e}=await _0x17952a['read']();if(_0x1d4bdb)return;_0x3910e9+=_0x5c35ef['decode'](_0x35584e,{'stream':!![]});const _0x3686f8=_0x3910e9['split']('\x0a\x0a');_0x3910e9=_0x3686f8['pop']()||'';for(const _0x3f4894 of _0x3686f8){if(!_0x3f4894['trim']())continue;const _0x453f6d=_0x3f4894['split']('\x0a');let _0x5069e0='message',_0x5379a5='';for(const _0x11a549 of _0x453f6d){if(_0x11a549['startsWith']('event:'))_0x5069e0=_0x11a549['substring'](0x6)['trim']();else _0x11a549['startsWith']('data:')&&(_0x5379a5=_0x11a549['substring'](0x5)['trim']());}if(!_0x5379a5)continue;try{const _0x1971c6=JSON['parse'](_0x5379a5);if(_0x5069e0==='progress'&&_0x28b695)_0x28b695(_0x1971c6['stage'],_0x1971c6['message']);else{if(_0x5069e0==='result'){_0x3e5d11(_0x1971c6);return;}else{if(_0x5069e0==='error'){let _0x23ad08=_0x1971c6['message']||_0x1971c6['error']||'Prompt\x20command\x20failed';_0x1971c6['rawOutput']&&(_0x23ad08+='\x0a\x0aRaw\x20output:\x0a'+_0x1971c6['rawOutput']);_0x26f050(new Error(_0x23ad08));return;}}}}catch(_0x635457){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x635457),console['error']('Event\x20type:',_0x5069e0),console['error']('Event\x20data:',_0x5379a5),console['error']('First\x20200\x20chars:',_0x5379a5['substring'](0x0,0xc8)),_0x26f050(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x635457['message']+'\x0a\x0aData:\x20'+_0x5379a5['substring'](0x0,0x1f4)));return;}}_0x234c4f();}catch(_0x29c25c){_0x26f050(_0x29c25c);}};_0x234c4f();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x4a0f47){const _0x4d97e7=await fetch(''+API_BASE+_0x4a0f47);if(!_0x4d97e7['ok']){const _0x8d1ce7=await _0x4d97e7['json']()['catch'](()=>({'error':_0x4d97e7['statusText']})),_0x722cd1=new Error(_0x8d1ce7['error']||_0x8d1ce7['message']||_0x4d97e7['statusText']);if(_0x8d1ce7['detail']!==undefined)_0x722cd1['detail']=_0x8d1ce7['detail'];throw _0x722cd1;}return await _0x4d97e7['json']();},async 'post'(_0xd5996b,_0x1057ff){const _0x5d313b=await fetch(''+API_BASE+_0xd5996b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1057ff)});if(!_0x5d313b['ok']){const _0x214e2c=await _0x5d313b['json']()['catch'](()=>({'error':_0x5d313b['statusText']})),_0x1de51c=new Error(_0x214e2c['error']||_0x214e2c['message']||_0x5d313b['statusText']);if(_0x214e2c['detail']!==undefined)_0x1de51c['detail']=_0x214e2c['detail'];throw _0x1de51c;}return await _0x5d313b['json']();},async 'put'(_0x1fdf69,_0x4c15d9){const _0xd9c45c=await fetch(''+API_BASE+_0x1fdf69,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c15d9)});if(!_0xd9c45c['ok']){const _0x56a523=await _0xd9c45c['json']()['catch'](()=>({'error':_0xd9c45c['statusText']})),_0x14dafa=new Error(_0x56a523['error']||_0x56a523['message']||_0xd9c45c['statusText']);if(_0x56a523['detail']!==undefined)_0x14dafa['detail']=_0x56a523['detail'];throw _0x14dafa;}return await _0xd9c45c['json']();},async 'delete'(_0x44b2c0,_0x46708a){const _0x4002e4={'method':'DELETE'};_0x46708a&&(_0x4002e4['headers']={'Content-Type':'application/json'},_0x4002e4['body']=JSON['stringify'](_0x46708a));const _0x553380=await fetch(''+API_BASE+_0x44b2c0,_0x4002e4);if(!_0x553380['ok']){const _0x3b18b8=await _0x553380['json']()['catch'](()=>({'error':_0x553380['statusText']})),_0x2a6ace=new Error(_0x3b18b8['error']||_0x3b18b8['message']||_0x553380['statusText']);if(_0x3b18b8['detail']!==undefined)_0x2a6ace['detail']=_0x3b18b8['detail'];throw _0x2a6ace;}return await _0x553380['json']();},async 'getSkills'(){const _0x36680a=await fetch(API_BASE+'/skills');if(!_0x36680a['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x36680a['statusText']);return await _0x36680a['json']();},async 'getSkill'(_0x472c69){const _0x5039ca=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x472c69));if(!_0x5039ca['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5039ca['statusText']);return await _0x5039ca['json']();},async 'createSkill'(_0x3007a5){const _0x2a4d44=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3007a5)});if(!_0x2a4d44['ok']){const _0x3a36cc=await _0x2a4d44['json']()['catch'](()=>({'error':_0x2a4d44['statusText']})),_0xac267a=new Error(_0x3a36cc['error']||_0x3a36cc['message']||_0x2a4d44['statusText']);if(_0x3a36cc['detail']!==undefined)_0xac267a['detail']=_0x3a36cc['detail'];throw _0xac267a;}return await _0x2a4d44['json']();},async 'updateSkill'(_0x3f0d11,_0x1a138b){const _0x15201b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f0d11),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a138b)});if(!_0x15201b['ok']){const _0x2aaa00=await _0x15201b['json']()['catch'](()=>({'error':_0x15201b['statusText']})),_0x111b4f=new Error(_0x2aaa00['error']||_0x2aaa00['message']||_0x15201b['statusText']);if(_0x2aaa00['detail']!==undefined)_0x111b4f['detail']=_0x2aaa00['detail'];throw _0x111b4f;}return await _0x15201b['json']();},async 'deleteSkill'(_0x4bfae8){const _0x5a9d72=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4bfae8),{'method':'DELETE'});if(!_0x5a9d72['ok']){const _0x1bb453=await _0x5a9d72['json']()['catch'](()=>({'error':_0x5a9d72['statusText']})),_0x3237a7=new Error(_0x1bb453['error']||_0x1bb453['message']||_0x5a9d72['statusText']);if(_0x1bb453['detail']!==undefined)_0x3237a7['detail']=_0x1bb453['detail'];throw _0x3237a7;}return await _0x5a9d72['json']();},async 'getSkillFile'(_0x3f5f5b,_0x2d03e8){const _0x3820e9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f5f5b)+'/files/'+_0x2d03e8);if(!_0x3820e9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3820e9['statusText']);return await _0x3820e9['json']();},async 'saveSkillFile'(_0x5386ce,_0x1b5bc0,_0x3db41b){const _0x19c63f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5386ce)+'/files/'+_0x1b5bc0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3db41b})});if(!_0x19c63f['ok']){const _0x44f43c=await _0x19c63f['json']()['catch'](()=>({'error':_0x19c63f['statusText']})),_0x3737da=new Error(_0x44f43c['error']||_0x44f43c['message']||_0x19c63f['statusText']);if(_0x44f43c['detail']!==undefined)_0x3737da['detail']=_0x44f43c['detail'];throw _0x3737da;}return await _0x19c63f['json']();},async 'deleteSkillFile'(_0x52e558,_0x356cbd){const _0x437a54=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x52e558)+'/files/'+_0x356cbd,{'method':'DELETE'});if(!_0x437a54['ok']){const _0x2879eb=await _0x437a54['json']()['catch'](()=>({'error':_0x437a54['statusText']})),_0x4ab9d7=new Error(_0x2879eb['error']||_0x2879eb['message']||_0x437a54['statusText']);if(_0x2879eb['detail']!==undefined)_0x4ab9d7['detail']=_0x2879eb['detail'];throw _0x4ab9d7;}return await _0x437a54['json']();},async 'pullSkills'(){const _0x5487df=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5487df['ok']){const _0x1c62d3=await _0x5487df['json']()['catch'](()=>({'error':_0x5487df['statusText']})),_0x5006c0=new Error(_0x1c62d3['error']||_0x1c62d3['message']||_0x5487df['statusText']);if(_0x1c62d3['detail']!==undefined)_0x5006c0['detail']=_0x1c62d3['detail'];throw _0x5006c0;}return await _0x5487df['json']();},async 'commitSkills'(_0x52fea4,_0x30d27e={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x30d27e,_0x343b22=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x52fea4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x343b22['ok']){const _0xf8e2b=await _0x343b22['json']()['catch'](()=>({'error':_0x343b22['statusText']})),_0x23f0bc=new Error(_0xf8e2b['error']||_0xf8e2b['message']||_0x343b22['statusText']);if(_0xf8e2b['detail']!==undefined)_0x23f0bc['detail']=_0xf8e2b['detail'];throw _0x23f0bc;}return await _0x343b22['json']();},async 'discardSkillsChanges'(){const _0x33f2f9=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x33f2f9['ok']){const _0x21b221=await _0x33f2f9['json']()['catch'](()=>({'error':_0x33f2f9['statusText']})),_0x5ef455=new Error(_0x21b221['error']||_0x21b221['message']||_0x33f2f9['statusText']);if(_0x21b221['detail']!==undefined)_0x5ef455['detail']=_0x21b221['detail'];throw _0x5ef455;}return await _0x33f2f9['json']();},async 'getSkillCatalog'(){const _0x46e959=await fetch(API_BASE+'/external-skills/catalog');if(!_0x46e959['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x46e959['statusText']);return await _0x46e959['json']();},async 'getImportedSkillsRegistry'(){const _0x356015=await fetch(API_BASE+'/external-skills/registry');if(!_0x356015['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x356015['statusText']);return await _0x356015['json']();},async 'importCatalogSkill'(_0x228f50){const _0x5cd30a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x228f50})});if(!_0x5cd30a['ok']){const _0x30b5e6=await _0x5cd30a['json']()['catch'](()=>({'error':_0x5cd30a['statusText']})),_0x4d39a8=new Error(_0x30b5e6['error']||_0x30b5e6['message']||_0x5cd30a['statusText']);if(_0x30b5e6['detail']!==undefined)_0x4d39a8['detail']=_0x30b5e6['detail'];throw _0x4d39a8;}return await _0x5cd30a['json']();},async 'importSkillFromGit'(_0xf3f95f,_0x76872f,_0x236ce2='main',_0x219e15=null){const _0x341989=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xf3f95f,'skillPath':_0x76872f,'branch':_0x236ce2,'skillId':_0x219e15})});if(!_0x341989['ok']){const _0x405764=await _0x341989['json']()['catch'](()=>({'error':_0x341989['statusText']})),_0x22f3b8=new Error(_0x405764['error']||_0x405764['message']||_0x341989['statusText']);if(_0x405764['detail']!==undefined)_0x22f3b8['detail']=_0x405764['detail'];throw _0x22f3b8;}return await _0x341989['json']();},async 'probeMarketplace'(_0xbcf83e,_0x4064dd='main'){const _0x38c107=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xbcf83e,'branch':_0x4064dd})});if(!_0x38c107['ok']){const _0x349074=await _0x38c107['json']()['catch'](()=>({'error':_0x38c107['statusText']})),_0x4e6225=new Error(_0x349074['error']||_0x349074['message']||_0x38c107['statusText']);if(_0x349074['detail']!==undefined)_0x4e6225['detail']=_0x349074['detail'];throw _0x4e6225;}return await _0x38c107['json']();},async 'importMarketplaceBundle'(_0x1b0466,_0x1ae16a,_0x37f3e7,_0x55d6dd=null){const _0x54b4c0=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x1b0466,'branch':_0x1ae16a,'bundleId':_0x37f3e7,'selectedSkills':_0x55d6dd})});if(!_0x54b4c0['ok']){const _0x818199=await _0x54b4c0['json']()['catch'](()=>({'error':_0x54b4c0['statusText']})),_0x45953c=new Error(_0x818199['error']||_0x818199['message']||_0x54b4c0['statusText']);if(_0x818199['detail']!==undefined)_0x45953c['detail']=_0x818199['detail'];throw _0x45953c;}return await _0x54b4c0['json']();},async 'importSkillFromFolder'(_0x157c86,_0x29fbf9=null){const _0xf4365a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x157c86,'skillId':_0x29fbf9})});if(!_0xf4365a['ok']){const _0x5c13df=await _0xf4365a['json']()['catch'](()=>({'error':_0xf4365a['statusText']})),_0x510281=new Error(_0x5c13df['error']||_0x5c13df['message']||_0xf4365a['statusText']);if(_0x5c13df['detail']!==undefined)_0x510281['detail']=_0x5c13df['detail'];throw _0x510281;}return await _0xf4365a['json']();},async 'importSkillFromNpm'(_0x3ed15f,_0x3f6dfd='latest',_0x9477a5=null,_0x4e452c=null){const _0x408f12=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3ed15f,'version':_0x3f6dfd,'skillId':_0x9477a5,'registry':_0x4e452c})});if(!_0x408f12['ok']){const _0x42d8a3=await _0x408f12['json']()['catch'](()=>({'error':_0x408f12['statusText']})),_0x178b96=new Error(_0x42d8a3['error']||_0x42d8a3['message']||_0x408f12['statusText']);if(_0x42d8a3['detail']!==undefined)_0x178b96['detail']=_0x42d8a3['detail'];throw _0x178b96;}return await _0x408f12['json']();},async 'checkSkillUpdates'(_0x7b36aa){const _0x59e06f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x7b36aa)+'/check-updates',{'method':'POST'});if(!_0x59e06f['ok']){const _0x114e08=await _0x59e06f['json']()['catch'](()=>({'error':_0x59e06f['statusText']})),_0x29a844=new Error(_0x114e08['error']||_0x114e08['message']||_0x59e06f['statusText']);if(_0x114e08['detail']!==undefined)_0x29a844['detail']=_0x114e08['detail'];throw _0x29a844;}return await _0x59e06f['json']();},async 'updateExternalSkill'(_0x57a7aa){const _0x4aeb76=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x57a7aa)+'/update',{'method':'POST'});if(!_0x4aeb76['ok']){const _0x53d311=await _0x4aeb76['json']()['catch'](()=>({'error':_0x4aeb76['statusText']})),_0x3f9e08=new Error(_0x53d311['error']||_0x53d311['message']||_0x4aeb76['statusText']);if(_0x53d311['detail']!==undefined)_0x3f9e08['detail']=_0x53d311['detail'];throw _0x3f9e08;}return await _0x4aeb76['json']();},async 'updateSkillFlags'(_0x237e64,_0x5595a7){const _0x51ad94=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x237e64)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x5595a7})});if(!_0x51ad94['ok']){const _0x4f80fb=await _0x51ad94['json']()['catch'](()=>({'error':_0x51ad94['statusText']})),_0x45704a=new Error(_0x4f80fb['error']||_0x4f80fb['message']||_0x51ad94['statusText']);if(_0x4f80fb['detail']!==undefined)_0x45704a['detail']=_0x4f80fb['detail'];throw _0x45704a;}return await _0x51ad94['json']();},async 'removeFromImportedRegistry'(_0x1b6d28){const _0x3fda05=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1b6d28)+'/registry',{'method':'DELETE'});if(!_0x3fda05['ok']){const _0x458188=await _0x3fda05['json']()['catch'](()=>({'error':_0x3fda05['statusText']})),_0x3c024e=new Error(_0x458188['error']||_0x458188['message']||_0x3fda05['statusText']);if(_0x458188['detail']!==undefined)_0x3c024e['detail']=_0x458188['detail'];throw _0x3c024e;}return await _0x3fda05['json']();},async 'getTeams'(){const _0xaf34b1=await fetch(API_BASE+'/teams');if(!_0xaf34b1['ok']){const _0x1e1311=await _0xaf34b1['json']()['catch'](()=>({'message':_0xaf34b1['statusText']}));throw new Error(_0x1e1311['message']||'Failed\x20to\x20get\x20teams');}return await _0xaf34b1['json']();},async 'getTeam'(_0x1c5f23){const _0x1d4b85=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1c5f23));if(!_0x1d4b85['ok']){const _0x232d2e=await _0x1d4b85['json']()['catch'](()=>({'message':_0x1d4b85['statusText']}));throw new Error(_0x232d2e['message']||'Failed\x20to\x20get\x20team');}return await _0x1d4b85['json']();},async 'createTeam'(_0xe79924){const _0x3494c=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe79924)});if(!_0x3494c['ok']){const _0x2fdfba=await _0x3494c['json']()['catch'](()=>({'message':_0x3494c['statusText']}));throw new Error(_0x2fdfba['message']||'Failed\x20to\x20create\x20team');}return await _0x3494c['json']();},async 'updateTeam'(_0x29f38b,_0xc37a32){const _0x4c5099=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x29f38b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc37a32)});if(!_0x4c5099['ok']){const _0x3d4798=await _0x4c5099['json']()['catch'](()=>({'message':_0x4c5099['statusText']}));throw new Error(_0x3d4798['message']||'Failed\x20to\x20update\x20team');}return await _0x4c5099['json']();},async 'deleteTeam'(_0x4a0558){const _0x47e191=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4a0558),{'method':'DELETE'});if(!_0x47e191['ok']){const _0x39f517=await _0x47e191['json']()['catch'](()=>({'message':_0x47e191['statusText']}));throw new Error(_0x39f517['message']||'Failed\x20to\x20delete\x20team');}return await _0x47e191['json']();},async 'addTeamMember'(_0x528f3e,_0x41c604){const _0x4de119=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x528f3e)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x41c604})});if(!_0x4de119['ok']){const _0x111f36=await _0x4de119['json']()['catch'](()=>({'message':_0x4de119['statusText']}));throw new Error(_0x111f36['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x4de119['json']();},async 'removeTeamMember'(_0x2156e7,_0x420d30){const _0x110f2e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2156e7)+'/members/'+encodeURIComponent(_0x420d30),{'method':'DELETE'});if(!_0x110f2e['ok']){const _0x394372=await _0x110f2e['json']()['catch'](()=>({'message':_0x110f2e['statusText']}));throw new Error(_0x394372['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x110f2e['json']();},async 'getBindings'(_0x1eba9e={}){const _0x19e40e=new URLSearchParams();if(_0x1eba9e['resource_type'])_0x19e40e['set']('resource_type',_0x1eba9e['resource_type']);if(_0x1eba9e['resource_id'])_0x19e40e['set']('resource_id',_0x1eba9e['resource_id']);if(_0x1eba9e['subject_type'])_0x19e40e['set']('subject_type',_0x1eba9e['subject_type']);if(_0x1eba9e['subject_id'])_0x19e40e['set']('subject_id',_0x1eba9e['subject_id']);const _0x49d126=_0x19e40e['toString'](),_0x5edfa2=await fetch(API_BASE+'/bindings'+(_0x49d126?'?'+_0x49d126:''));if(!_0x5edfa2['ok']){const _0x168c38=await _0x5edfa2['json']()['catch'](()=>({'message':_0x5edfa2['statusText']}));throw new Error(_0x168c38['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5edfa2['json']();},async 'createBinding'(_0x1aa2ce){const _0x324dcd=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1aa2ce)});if(!_0x324dcd['ok']){const _0x23d7f6=await _0x324dcd['json']()['catch'](()=>({'message':_0x324dcd['statusText']}));throw new Error(_0x23d7f6['message']||'Failed\x20to\x20create\x20binding');}return await _0x324dcd['json']();},async 'updateBinding'(_0x475cf3,_0xe7fd3a){const _0x5996b0=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x475cf3),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe7fd3a)});if(!_0x5996b0['ok']){const _0x4bbf23=await _0x5996b0['json']()['catch'](()=>({'message':_0x5996b0['statusText']}));throw new Error(_0x4bbf23['message']||'Failed\x20to\x20update\x20binding');}return await _0x5996b0['json']();},async 'deleteBinding'(_0x2dca62){const _0x5134d8=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2dca62),{'method':'DELETE'});if(!_0x5134d8['ok']){const _0x4305af=await _0x5134d8['json']()['catch'](()=>({'message':_0x5134d8['statusText']}));throw new Error(_0x4305af['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5134d8['json']();},async 'getRoleDefinitions'(){const _0xafae0d=await fetch(API_BASE+'/roles');if(!_0xafae0d['ok']){const _0x2f039e=await _0xafae0d['json']()['catch'](()=>({'message':_0xafae0d['statusText']}));throw new Error(_0x2f039e['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xafae0d['json']();},async 'getRoleDefinition'(_0x420a50){const _0x50efa4=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x420a50));if(!_0x50efa4['ok']){const _0x201208=await _0x50efa4['json']()['catch'](()=>({'message':_0x50efa4['statusText']}));throw new Error(_0x201208['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x50efa4['json']();},async 'createRoleDefinition'(_0xd6df1e){const _0x5a0732=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd6df1e)});if(!_0x5a0732['ok']){const _0x24a475=await _0x5a0732['json']()['catch'](()=>({'message':_0x5a0732['statusText']}));throw new Error(_0x24a475['message']||_0x24a475['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x5a0732['json']();},async 'updateRoleDefinition'(_0x52b281,_0x576b15){const _0xa24955=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x52b281),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x576b15)});if(!_0xa24955['ok']){const _0x4274af=await _0xa24955['json']()['catch'](()=>({'message':_0xa24955['statusText']}));throw new Error(_0x4274af['message']||_0x4274af['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0xa24955['json']();},async 'deleteRoleDefinition'(_0xb45d0d){const _0x55cc04=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xb45d0d),{'method':'DELETE'});if(!_0x55cc04['ok']){const _0x5535c5=await _0x55cc04['json']()['catch'](()=>({'message':_0x55cc04['statusText']}));throw new Error(_0x5535c5['message']||_0x5535c5['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x55cc04['json']();},async 'getAvailablePermissions'(){const _0x133e5a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x133e5a['ok']){const _0x4eb424=await _0x133e5a['json']()['catch'](()=>({'message':_0x133e5a['statusText']}));throw new Error(_0x4eb424['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x133e5a['json']();},async 'getGitProviderAllowedTeams'(_0x1ab1c8){const _0x3271eb=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x1ab1c8)+'/allowed-teams');if(!_0x3271eb['ok']){const _0x3a29e7=await _0x3271eb['json']()['catch'](()=>({'message':_0x3271eb['statusText']}));throw new Error(_0x3a29e7['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3271eb['json']();},async 'setGitProviderAllowedTeams'(_0x31bacf,_0x28df32){const _0x4af8ae=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x31bacf)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x28df32})});if(!_0x4af8ae['ok']){const _0x3a4697=await _0x4af8ae['json']()['catch'](()=>({'message':_0x4af8ae['statusText']}));throw new Error(_0x3a4697['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x4af8ae['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 _0x366de=toastState['baseBottom'];toastState['toasts']['forEach'](_0x56ae12=>{_0x56ae12['el']['style']['bottom']=_0x366de+'px';const _0x215be0=_0x56ae12['el']['offsetHeight']||toastState['defaultHeight'];_0x366de+=_0x215be0+toastState['gap'];});});}function removeToastById(_0x9af826){const _0x108450=toastState['toasts']['findIndex'](_0x13aec6=>_0x13aec6['id']===_0x9af826);if(_0x108450===-0x1)return;const _0x53c886=toastState['toasts'][_0x108450];if(_0x53c886['timeoutId'])clearTimeout(_0x53c886['timeoutId']);_0x53c886['el']['classList']['remove']('show'),setTimeout(()=>_0x53c886['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x108450,0x1),repositionAllToasts();}function registerToast(_0x469f58){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x469f58),repositionAllToasts(),_0x469f58['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(_0x2c74d0){if(_0x2c74d0===null||_0x2c74d0===undefined)return'';return String(_0x2c74d0)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x3b98e4,_0x2de194){if(_0x3b98e4&&typeof _0x3b98e4==='object'&&!Array['isArray'](_0x3b98e4))return{'code':typeof _0x3b98e4['text']==='string'?_0x3b98e4['text']:'','language':typeof _0x3b98e4['lang']==='string'?_0x3b98e4['lang']:''};return{'code':typeof _0x3b98e4==='string'?_0x3b98e4:'','language':typeof _0x2de194==='string'?_0x2de194:''};}function buildMermaidBlock(_0x18d657){const _0x45a44b=String(_0x18d657||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x45a44b))+'\x22>'+escapeHtmlValue(_0x45a44b)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x3d9c1a=new marked['Renderer'](),_0x195199=_0x3d9c1a['code']['bind'](_0x3d9c1a);return _0x3d9c1a['code']=function(_0x20f370,_0x40a0f7,..._0x502e8a){const {code:_0x223801,language:_0xd7b632}=getMarkdownCodeBlockPayload(_0x20f370,_0x40a0f7),_0x4e3468=String(_0xd7b632||'')['trim']()['toLowerCase']();if(_0x4e3468==='mermaid')return buildMermaidBlock(_0x223801);const _0x51f221=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x51f221&&_0x4e3468)try{const _0x4b2450=_0x51f221['getLanguage'](_0x4e3468)?_0x4e3468:'plaintext',_0x2662cc=_0x51f221['highlight'](_0x223801,{'language':_0x4b2450})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4e3468)+'\x22>'+_0x2662cc+'</code></pre>';}catch(_0x516f8e){console['error']('Syntax\x20highlighting\x20error:',_0x516f8e);}return _0x195199(_0x20f370,_0x40a0f7,..._0x502e8a);},sharedMarkedRenderer=_0x3d9c1a,_0x3d9c1a;}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 _0x366d6f=window['mermaid'];if(!_0x366d6f||typeof _0x366d6f['initialize']!=='function')return _0x366d6f||null;return _0x366d6f['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x366d6f;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x44d719,_0x399197)=>{const _0x411dcc=()=>_0x44d719(configureMermaidInstance()),_0x55a977=()=>{mermaidLoadPromise=null,_0x399197(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x393b07=document['getElementById'](MERMAID_SCRIPT_ID);!_0x393b07&&(_0x393b07=document['createElement']('script'),_0x393b07['id']=MERMAID_SCRIPT_ID,_0x393b07['src']=MERMAID_SCRIPT_SRC,_0x393b07['async']=!![],document['head']['appendChild'](_0x393b07));if(window['mermaid']){_0x411dcc();return;}_0x393b07['addEventListener']('load',_0x411dcc,{'once':!![]}),_0x393b07['addEventListener']('error',_0x55a977,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x54e44c){const _0x7c7d45=_0x54e44c['getAttribute']('data-mermaid-source');if(!_0x7c7d45)return null;let _0x140948=_0x7c7d45;try{_0x140948=decodeURIComponent(_0x7c7d45);}catch{}return _0x54e44c['textContent']=_0x140948,_0x54e44c['removeAttribute']('data-processed'),_0x54e44c['removeAttribute']('aria-roledescription'),_0x54e44c['removeAttribute']('role'),_0x54e44c['removeAttribute']('aria-label'),_0x140948;}function collectMermaidNodes(_0x364c3a,_0x52e0cf){if(!(_0x364c3a instanceof Element))return;_0x364c3a['matches']('.mermaid[data-mermaid-source]')&&_0x52e0cf['add'](_0x364c3a),_0x364c3a['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x58e187=>{_0x52e0cf['add'](_0x58e187);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x288f45=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x3ce0ed=>setTimeout(_0x3ce0ed,0x0);_0x288f45(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x209420=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x209420);});});}function queueMermaidRender(_0x46f47c){const _0x7c4f8a=new Set();_0x46f47c instanceof Document||_0x46f47c instanceof DocumentFragment?_0x46f47c['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1598df=>_0x7c4f8a['add'](_0x1598df)):collectMermaidNodes(_0x46f47c,_0x7c4f8a);if(_0x7c4f8a['size']===0x0)return;_0x7c4f8a['forEach'](_0x3bf17c=>pendingMermaidNodes['add'](_0x3bf17c)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x2de556=Array['from'](pendingMermaidNodes)['filter'](_0x4fd188=>_0x4fd188['isConnected']);pendingMermaidNodes['clear']();if(_0x2de556['length']===0x0)return;const _0x5727eb=await loadMermaid();if(!_0x5727eb)return;configureMermaidInstance();const _0x2ec0ce=getMermaidTheme();for(const _0x171276 of _0x2de556){const _0x5493ae=_0x171276['getAttribute']('data-mermaid-source');if(!_0x5493ae)continue;const _0xb70166=_0x171276['getAttribute']('data-processed')==='true';if(_0xb70166&&_0x171276['dataset']['mermaidTheme']===_0x2ec0ce)continue;restoreMermaidSource(_0x171276);try{if(typeof _0x5727eb['run']==='function')await _0x5727eb['run']({'nodes':[_0x171276]});else typeof _0x5727eb['init']==='function'&&_0x5727eb['init'](undefined,[_0x171276]);_0x171276['dataset']['mermaidTheme']=_0x2ec0ce,delete _0x171276['dataset']['mermaidError'];}catch(_0x2349db){console['error']('Mermaid\x20render\x20failed:',_0x2349db),restoreMermaidSource(_0x171276),_0x171276['dataset']['mermaidError']='true',delete _0x171276['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3efbca=>{_0x3efbca['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3efbca);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x180505=>{_0x180505['forEach'](_0x160b79=>{_0x160b79['addedNodes']['forEach'](_0x49c0b2=>{_0x49c0b2['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x49c0b2);});});}),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'(_0x926315){const _0x14ba4b=new Date(_0x926315),_0x449e7e=new Date(),_0x5b7ce2=_0x449e7e-_0x14ba4b,_0x2545b5=Math['floor'](_0x5b7ce2/0x3e8),_0x51181a=Math['floor'](_0x2545b5/0x3c),_0x3eac43=Math['floor'](_0x51181a/0x3c),_0x3f438a=Math['floor'](_0x3eac43/0x18);if(_0x2545b5<0x3c)return'now';if(_0x51181a<0x3c)return _0x51181a+'m\x20ago';if(_0x3eac43<0x18)return _0x3eac43+'h\x20ago';return _0x3f438a+'d\x20ago';},'getStatusIcon'(_0x19ddb6){switch(_0x19ddb6){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x535b82){switch(_0x535b82){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'(_0x557b5f,_0x303e98=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2d8f41={};_0x2d8f41['text/plain']=new Blob([_0x557b5f],{'type':'text/plain'});_0x303e98&&(_0x2d8f41['text/html']=new Blob([_0x303e98],{'type':'text/html'}));const _0x53d62b=new ClipboardItem(_0x2d8f41);return await navigator['clipboard']['write']([_0x53d62b]),!![];}catch(_0x35d51f){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x35d51f);}try{const _0x101c88=_0x374c89=>{_0x374c89['preventDefault'](),_0x374c89['clipboardData']['setData']('text/plain',_0x557b5f),_0x303e98&&_0x374c89['clipboardData']['setData']('text/html',_0x303e98);};document['addEventListener']('copy',_0x101c88);const _0x59d023=document['execCommand']('copy');document['removeEventListener']('copy',_0x101c88);if(_0x59d023)return!![];}catch(_0xcae0c5){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xcae0c5);}try{const _0x59d132=document['createElement']('textarea');_0x59d132['value']=_0x557b5f,_0x59d132['style']['position']='fixed',_0x59d132['style']['opacity']='0',_0x59d132['style']['pointerEvents']='none',document['body']['appendChild'](_0x59d132),_0x59d132['select']();const _0x576592=document['execCommand']('copy');return document['body']['removeChild'](_0x59d132),_0x576592;}catch(_0x296190){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x296190),![];}},'showToast'(_0x267a47,_0x438b4a='info'){const _0x3427d7=getNextToastId(),_0x513494=document['createElement']('div');_0x513494['className']='toast\x20toast-'+_0x438b4a,_0x513494['textContent']=_0x267a47,_0x513494['dataset']['toastId']=_0x3427d7,document['body']['appendChild'](_0x513494);const _0x4ac15f=_0x438b4a==='error'?0x2710:0xbb8,_0x27bb30=setTimeout(()=>{removeToastById(_0x3427d7);},_0x4ac15f),_0x258065={'id':_0x3427d7,'el':_0x513494,'timeoutId':_0x27bb30};return registerToast(_0x258065),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x513494['classList']['add']('show');});}),_0x3427d7;},'showError'(_0x40a1f5){console['error'](_0x40a1f5);const _0x5ab662=typeof _0x40a1f5==='string'?_0x40a1f5:_0x40a1f5['message']||'An\x20error\x20occurred';this['showToast'](_0x5ab662,'error');},'showSuccess'(_0x4a349c){this['showToast'](_0x4a349c,'success');},'capitalize'(_0x22c11a){if(!_0x22c11a)return'';return _0x22c11a['charAt'](0x0)['toUpperCase']()+_0x22c11a['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x814cdb){return escapeHtmlValue(_0x814cdb);},'ansiToHtml'(_0x2783e7){if(_0x2783e7===null||_0x2783e7===undefined)return'';let _0x57895c=this['escapeHtml'](_0x2783e7);const _0x3be8fb={'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'},_0x4394db={'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 _0x47560a=0x0;return _0x57895c=_0x57895c['replace'](/\x1b\[([0-9;]*)m/g,(_0x3ee0b5,_0x6688eb)=>{if(!_0x6688eb||_0x6688eb==='0'){const _0x408a64='</span>'['repeat'](_0x47560a);return _0x47560a=0x0,_0x408a64;}const _0x540ce3=_0x6688eb['split'](';'),_0x2ef24d=[];for(const _0x3d36c1 of _0x540ce3){if(_0x3d36c1==='1')_0x2ef24d['push']('font-weight:bold');else{if(_0x3d36c1==='2')_0x2ef24d['push']('opacity:0.7');else{if(_0x3d36c1==='3')_0x2ef24d['push']('font-style:italic');else{if(_0x3d36c1==='4')_0x2ef24d['push']('text-decoration:underline');else{if(_0x3d36c1==='9')_0x2ef24d['push']('text-decoration:line-through');else{if(_0x3be8fb[_0x3d36c1])_0x2ef24d['push']('color:'+_0x3be8fb[_0x3d36c1]);else{if(_0x4394db[_0x3d36c1])_0x2ef24d['push']('background-color:'+_0x4394db[_0x3d36c1]);}}}}}}}if(_0x2ef24d['length']>0x0)return _0x47560a++,'<span\x20style=\x22'+_0x2ef24d['join'](';')+'\x22>';return'';}),_0x57895c+='</span>'['repeat'](_0x47560a),_0x57895c=_0x57895c['replace'](/\\u001b\[([0-9;]*)m/g,(_0x5c57c9,_0x22004a)=>{if(!_0x22004a||_0x22004a==='0')return'';const _0x124498=_0x22004a['split'](';'),_0x170c7e=[];for(const _0x5f099e of _0x124498){if(_0x5f099e==='1')_0x170c7e['push']('font-weight:bold');else{if(_0x3be8fb[_0x5f099e])_0x170c7e['push']('color:'+_0x3be8fb[_0x5f099e]);else{if(_0x4394db[_0x5f099e])_0x170c7e['push']('background-color:'+_0x4394db[_0x5f099e]);}}}if(_0x170c7e['length']>0x0)return'<span\x20style=\x22'+_0x170c7e['join'](';')+'\x22>';return'';}),_0x57895c;},'showModal'({title:_0x219334,content:_0x1cca3f,buttons:buttons=[]}){const _0x426786='\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'](_0x219334)+'</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'+_0x1cca3f+'\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']((_0x644974,_0x4e61eb)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x644974['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4e61eb+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x644974['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',_0x3bda3d=document['createElement']('div');_0x3bda3d['id']='utils-modal',_0x3bda3d['className']='modal',_0x3bda3d['innerHTML']=_0x426786,document['body']['appendChild'](_0x3bda3d);const _0x43bc41=document['getElementById']('utils-modal-close');_0x43bc41&&_0x43bc41['addEventListener']('click',()=>this['hideModal']());const _0x5896f9=_0x3bda3d['querySelectorAll']('[data-btn-index]');_0x5896f9['forEach'](_0x5ec379=>{const _0x53bb8f=parseInt(_0x5ec379['dataset']['btnIndex']);buttons[_0x53bb8f]?.['onClick']&&_0x5ec379['addEventListener']('click',buttons[_0x53bb8f]['onClick']);});const _0x15185f=document['getElementById']('utils-modal-overlay');_0x15185f&&_0x15185f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x217ef3=document['getElementById']('utils-modal');_0x217ef3&&_0x217ef3['remove']();},'parseKeyValuePairs'(_0x40c1cb){const _0x392409={};if(!_0x40c1cb)return _0x392409;return _0x40c1cb['split'](/\r?\n/)['map'](_0x981111=>_0x981111['trim']())['filter'](Boolean)['forEach'](_0x394456=>{const _0x5bb2d9=_0x394456['indexOf']('=');if(_0x5bb2d9>0x0){const _0x4affb1=_0x394456['slice'](0x0,_0x5bb2d9)['trim'](),_0x196754=_0x394456['slice'](_0x5bb2d9+0x1)['trim']();if(_0x4affb1)_0x392409[_0x4affb1]=_0x196754;}}),_0x392409;},'debounce'(_0x1b0a7c,_0x20bee6=0xfa){let _0x5d32fb=null;return(..._0x890240)=>{clearTimeout(_0x5d32fb),_0x5d32fb=setTimeout(()=>_0x1b0a7c['apply'](this,_0x890240),_0x20bee6);};},'formatTimestamp'(_0x216c69){if(!_0x216c69)return'N/A';const _0x299691=new Date(_0x216c69);return _0x299691['toLocaleDateString']()+'\x20'+_0x299691['toLocaleTimeString']();},'getQueryParams'(){const _0x26e1d9=new URLSearchParams(window['location']['search']),_0x5747c3={};for(const [_0x4a69aa,_0x31e7f6]of _0x26e1d9){_0x5747c3[_0x4a69aa]=_0x31e7f6;}return _0x5747c3;},'formatDuration'(_0x5e1188,_0x27ebd0){if(!_0x5e1188)return'N/A';const _0x1480b1=new Date(_0x5e1188),_0x435c44=_0x27ebd0?new Date(_0x27ebd0):new Date(),_0x91dd6=_0x435c44-_0x1480b1;if(_0x91dd6<0x0)return'0s';const _0x5e304c=Math['floor'](_0x91dd6/0x3e8),_0x5b705f=Math['floor'](_0x5e304c/0x3c),_0x35c58c=Math['floor'](_0x5b705f/0x3c),_0x131810=Math['floor'](_0x35c58c/0x18);if(_0x5e304c<0x3c)return _0x5e304c+'s';if(_0x5b705f<0x3c)return _0x5b705f+'m\x20'+_0x5e304c%0x3c+'s';if(_0x35c58c<0x18)return _0x35c58c+'h\x20'+_0x5b705f%0x3c+'m\x20'+_0x5e304c%0x3c+'s';return _0x131810+'d\x20'+_0x35c58c%0x18+'h\x20'+_0x5b705f%0x3c+'m';},'renderMarkdown'(_0x27a9d3,_0x56fd0b={}){if(!_0x27a9d3)return'';_0x27a9d3=this['rewriteAttachmentLinks'](_0x27a9d3,_0x56fd0b),_0x27a9d3=this['rewriteColorSyntax'](_0x27a9d3);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x27a9d3,_0x56fd0b);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x27a9d3);}catch(_0x4e871e){return console['error']('Markdown\x20parsing\x20error:',_0x4e871e),this['renderMarkdownFallback'](_0x27a9d3,_0x56fd0b);}},'rewriteAttachmentLinks'(_0x96086e,_0x288f3c={}){const _0x3b8552=typeof _0x288f3c['resolveAttachmentUrl']==='function'?_0x288f3c['resolveAttachmentUrl']:_0x288f3c['taskId']?_0x3015e4=>API_BASE+'/tasks/'+_0x288f3c['taskId']+'/attachments/'+encodeURIComponent(_0x3015e4):null;if(!_0x3b8552)return _0x96086e;return String(_0x96086e)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x5a111c,_0xe55239)=>{const _0x15f570=String(_0xe55239||'')['trim']();if(!_0x15f570)return _0x5a111c;let _0x108118=_0x15f570;try{_0x108118=decodeURIComponent(_0x15f570);}catch{}const _0x16d77d=_0x3b8552(_0x108118);if(!_0x16d77d)return _0x5a111c;return']('+_0x16d77d+')';});},'rewriteColorSyntax'(_0x1c4660){if(!_0x1c4660)return _0x1c4660;return String(_0x1c4660)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x144a45,_0x1b0d60,_0x262316)=>{const _0x1eba8c=this['rewriteColorSyntax'](_0x262316);return'<span\x20style=\x22color:\x20'+_0x1b0d60+'\x22>'+_0x1eba8c+'</span>';});},'renderMarkdownFallback'(_0xb2afdb,_0x5df316={}){if(!_0xb2afdb)return'';_0xb2afdb=_0xb2afdb['replace'](/\r\n/g,'\x0a'),_0xb2afdb=_0xb2afdb['replace'](/\r/g,'\x0a'),_0xb2afdb=this['rewriteAttachmentLinks'](_0xb2afdb,_0x5df316);let _0x3ac967=this['escapeHtml'](_0xb2afdb);return _0x3ac967=_0x3ac967['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3ac967=_0x3ac967['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3ac967=_0x3ac967['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3ac967=_0x3ac967['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3ac967=_0x3ac967['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3ac967=_0x3ac967['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3ac967=_0x3ac967['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3ac967=_0x3ac967['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3ac967=_0x3ac967['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3ac967=_0x3ac967['replace'](/\n\n/g,'</p><p>'),_0x3ac967=_0x3ac967['replace'](/\n/g,'<br>'),'<p>'+_0x3ac967+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1af418=new Uint8Array(0x10);crypto['getRandomValues'](_0x1af418),_0x1af418[0x6]=_0x1af418[0x6]&0xf|0x40,_0x1af418[0x8]=_0x1af418[0x8]&0x3f|0x80;const _0x4967ab=Array['from'](_0x1af418,_0x3d1a59=>_0x3d1a59['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x4967ab['slice'](0x0,0x8)+'-'+_0x4967ab['slice'](0x8,0xc)+'-'+_0x4967ab['slice'](0xc,0x10)+'-'+_0x4967ab['slice'](0x10,0x14)+'-'+_0x4967ab['slice'](0x14);}};export class CustomSelect{constructor(_0x2e912e,_0x55dfed={}){this['nativeSelect']=_0x2e912e,this['options']=_0x55dfed,this['isOpen']=![],this['selectedValue']=_0x2e912e['value']||'',this['searchable']=_0x55dfed['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4a3f89=document['createElement']('div');_0x4a3f89['className']='custom-select';const _0x4bf089=document['createElement']('div');_0x4bf089['className']='custom-select-trigger',_0x4bf089['setAttribute']('tabindex','0'),_0x4bf089['setAttribute']('role','button'),_0x4bf089['setAttribute']('aria-haspopup','listbox');const _0xca6ed2=document['createElement']('span');_0xca6ed2['className']='custom-select-trigger-text';const _0x7ef89e=document['createElement']('span');_0x7ef89e['className']='custom-select-arrow',_0x7ef89e['textContent']='▼',_0x4bf089['appendChild'](_0xca6ed2),_0x4bf089['appendChild'](_0x7ef89e);const _0x57a994=document['createElement']('div');_0x57a994['className']='custom-select-dropdown',_0x57a994['setAttribute']('role','listbox');if(this['searchable']){const _0x570b47=document['createElement']('div');_0x570b47['className']='custom-select-search';const _0x354c16=document['createElement']('input');_0x354c16['type']='text',_0x354c16['className']='custom-select-search-input',_0x354c16['placeholder']='Type\x20to\x20search...',_0x354c16['setAttribute']('aria-label','Search\x20options'),_0x354c16['addEventListener']('input',_0x9b14ab=>{this['searchQuery']=_0x9b14ab['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x354c16['addEventListener']('keydown',_0x2e9513=>{if(_0x2e9513['key']==='Escape')_0x2e9513['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x2e9513['key']==='Enter'){_0x2e9513['preventDefault'](),_0x2e9513['stopPropagation']();const _0x3208b9=_0x57a994['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x3208b9){const _0x2b8cd5=_0x3208b9['getAttribute']('data-value');this['select'](_0x2b8cd5);}}}}),_0x570b47['appendChild'](_0x354c16),_0x57a994['appendChild'](_0x570b47),this['searchInput']=_0x354c16;}const _0x4fb228=document['createElement']('div');_0x4fb228['className']='custom-select-options',_0x57a994['appendChild'](_0x4fb228),_0x4a3f89['appendChild'](_0x4bf089),_0x4a3f89['appendChild'](_0x57a994),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4a3f89,this['nativeSelect']),this['wrapper']=_0x4a3f89,this['trigger']=_0x4bf089,this['triggerText']=_0xca6ed2,this['dropdown']=_0x57a994,this['optionsContainer']=_0x4fb228,_0x4bf089['addEventListener']('click',()=>this['toggle']()),_0x4bf089['addEventListener']('keydown',_0x36fb0e=>this['handleKeydown'](_0x36fb0e)),document['addEventListener']('click',_0x2e1685=>{!_0x4a3f89['contains'](_0x2e1685['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x3379c0=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x3379c0['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2b3e02=new MutationObserver(()=>{this['updateDisabledState']();});_0x2b3e02['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x31b90d=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x31b90d['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x384125=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x384125),this['trigger']['setAttribute']('aria-disabled',_0x384125?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x384125?'-1':'0'),_0x384125&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x5e4d91=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4f90fc=_0x5e4d91['filter'](_0x540161=>!_0x540161['disabled']&&!_0x540161['hidden']);_0x5e4d91['forEach']((_0x3902f4,_0x91ba40)=>{const _0x1f36a3=document['createElement']('div');_0x1f36a3['className']='custom-select-option',_0x1f36a3['textContent']=_0x3902f4['textContent'],_0x1f36a3['setAttribute']('data-value',_0x3902f4['value']),_0x1f36a3['setAttribute']('data-index',_0x91ba40),_0x1f36a3['setAttribute']('role','option'),_0x3902f4['disabled']?_0x1f36a3['classList']['add']('disabled'):_0x1f36a3['addEventListener']('click',()=>this['select'](_0x3902f4['value'])),_0x3902f4['value']===this['selectedValue']&&_0x1f36a3['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1f36a3),this['allOptions']['push']({'element':_0x1f36a3,'text':_0x3902f4['textContent']['toLowerCase'](),'value':_0x3902f4['value'],'disabled':_0x3902f4['disabled']});});if(this['searchable']&&this['searchInput']){const _0x5c9641=this['searchInput']['parentElement'];_0x4f90fc['length']>0x3?_0x5c9641['style']['display']='':_0x5c9641['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2a8366=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x9297e8=>{if(!_0x2a8366||_0x9297e8['disabled'])_0x9297e8['element']['style']['display']='';else{const _0x3866e2=_0x9297e8['text']['includes'](_0x2a8366);_0x9297e8['element']['style']['display']=_0x3866e2?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x51a4ed){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x51a4ed,this['nativeSelect']['value']=_0x51a4ed;const _0x39bc52=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x39bc52),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x478bef=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x478bef&&(this['triggerText']['textContent']=_0x478bef['textContent'],_0x478bef['disabled']||_0x478bef['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1fcc04=>{_0x1fcc04['getAttribute']('data-value')===this['selectedValue']?_0x1fcc04['classList']['add']('selected'):_0x1fcc04['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 _0x213a6a=window['getComputedStyle'](this['dropdown']);if(_0x213a6a['position']==='fixed'){const _0x5a896c=this['trigger']['getBoundingClientRect'](),_0xafe616=parseInt(_0x213a6a['maxHeight'])||0xc8,_0x3e10cc=window['innerHeight'],_0x223e19=_0x3e10cc-_0x5a896c['bottom'],_0x64c1e6=_0x5a896c['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x44a9c3;_0x223e19<_0xafe616&&_0x64c1e6>_0x223e19?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3e10cc-_0x5a896c['top']+'px',_0x44a9c3=Math['min'](_0xafe616,_0x64c1e6-0xa),this['dropdown']['style']['maxHeight']=_0x44a9c3+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5a896c['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x44a9c3=Math['min'](_0xafe616,_0x223e19-0xa),this['dropdown']['style']['maxHeight']=_0x44a9c3+'px');if(this['optionsContainer']){let _0x35dbaa=_0x44a9c3;if(this['searchInput']){const _0x23cde9=this['searchInput']['parentElement'];_0x23cde9&&(_0x35dbaa-=_0x23cde9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x35dbaa)+'px';}this['dropdown']['style']['left']=_0x5a896c['left']+'px',this['dropdown']['style']['width']=_0x5a896c['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x5d16fa=this['searchInput']['parentElement'];_0x5d16fa&&_0x5d16fa['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'](_0x4d2406){if(this['nativeSelect']['disabled'])return;if(_0x4d2406['key']==='Enter'||_0x4d2406['key']==='\x20')_0x4d2406['preventDefault'](),this['toggle']();else _0x4d2406['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x3b584f='\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',_0x3b584f),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xb54913=document['getElementById']('confirm-dialog-close'),_0x474da2=document['getElementById']('confirm-dialog-cancel'),_0x3745a2=document['getElementById']('confirm-dialog-confirm'),_0x3b6694=this['_modal']['querySelector']('.modal-overlay');_0xb54913['addEventListener']('click',()=>this['_resolve'](![])),_0x474da2['addEventListener']('click',()=>this['_resolve'](![])),_0x3745a2['addEventListener']('click',()=>this['_resolve'](!![])),_0x3b6694['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x344c2a=>{if(_0x344c2a['key']==='Escape')_0x344c2a['preventDefault'](),this['_resolve'](![]);else _0x344c2a['key']==='Enter'&&(_0x344c2a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x2cb8d3,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x45a0c2=>{this['_resolvePromise']=_0x45a0c2,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x2cb8d3;const _0x1ebaeb=document['getElementById']('confirm-dialog-cancel'),_0x3a488f=document['getElementById']('confirm-dialog-confirm');_0x1ebaeb['textContent']=cancelText,_0x3a488f['textContent']=confirmText,_0x3a488f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x3a488f['focus']();});},'_resolve'(_0x59be6d){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x59be6d),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x210ac6,_0x2a8063={}){this['container']=_0x210ac6,this['options']={'placeholder':_0x2a8063['placeholder']||'Type\x20to\x20search...','maxItems':_0x2a8063['maxItems']||0x64,'loadItems':_0x2a8063['loadItems']||(async()=>[]),'renderItem':_0x2a8063['renderItem']||(_0x38ce37=>({'primary':String(_0x38ce37),'secondary':''})),'onSelect':_0x2a8063['onSelect']||(()=>{}),'filterItems':_0x2a8063['filterItems']||null,'getItemValue':_0x2a8063['getItemValue']||(_0x3aa59a=>_0x3aa59a),'sortItems':_0x2a8063['sortItems']||null,'debounceMs':_0x2a8063['debounceMs']||0xc8,'minCharsForSearch':_0x2a8063['minCharsForSearch']||0x0,'emptyMessage':_0x2a8063['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x2a8063['loadingMessage']||'Loading...','preload':_0x2a8063['preload']!==![],'searchMode':_0x2a8063['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',_0x5716d9=>this['onBlur'](_0x5716d9)),this['input']['addEventListener']('input',_0xa57a47=>this['onInput'](_0xa57a47)),this['input']['addEventListener']('keydown',_0x4b13d8=>this['onKeydown'](_0x4b13d8)),this['clearBtn']['addEventListener']('mousedown',_0x3a7fcf=>{_0x3a7fcf['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x14ae91=>{_0x14ae91['preventDefault']();}),document['addEventListener']('click',_0x424dd1=>{!this['wrapper']['contains'](_0x424dd1['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(_0x37c6a4){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x37c6a4);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2ff0bf){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x4891ac){const _0x4787f6=_0x4891ac['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x4787f6);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x4787f6):this['loadAndShow'](_0x4787f6);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x50f691){switch(_0x50f691['key']){case'ArrowDown':_0x50f691['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x50f691['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x50f691['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x50f691['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x436bdf){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x1f1a79=this['selectedIndex']+_0x436bdf;if(_0x1f1a79>=0x0&&_0x1f1a79<this['filteredItems']['length']){this['selectedIndex']=_0x1f1a79,this['updateSelectionHighlight']();const _0x5e69ba=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5e69ba[this['selectedIndex']]&&_0x5e69ba[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2222b5=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2222b5['forEach']((_0x4ce9b1,_0x2b63ef)=>{_0x4ce9b1['classList']['toggle']('keyboard-selected',_0x2b63ef===this['selectedIndex']);});}async['loadAndShow'](_0x43bfc3){this['showLoading']();try{const _0x3763cd=await this['options']['loadItems'](_0x43bfc3);if(this['options']['searchMode']==='server'){let _0x26f1a4=_0x3763cd;this['options']['sortItems']&&(_0x26f1a4=this['options']['sortItems']([..._0x3763cd]));this['filteredItems']=_0x26f1a4;const _0x4ac324=this['filteredItems']['length']>=this['options']['maxItems'];_0x4ac324&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4ac324),this['open']();}else this['allItems']=_0x3763cd,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x43bfc3);}catch(_0x347d9c){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x347d9c),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x1db7d6){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x1db7d6):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x85530c=this['filteredItems']['length']>=this['options']['maxItems'];_0x85530c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x85530c),this['open']();}['renderItems'](_0x30f721){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']((_0x8a9108,_0x19c414)=>{const _0x5dea22=document['createElement']('div');_0x5dea22['className']='autocomplete-select-item',_0x5dea22['setAttribute']('role','option'),_0x5dea22['setAttribute']('data-index',_0x19c414);const _0x921088=this['options']['renderItem'](_0x8a9108);let _0x51c7db='';_0x921088['icon']&&(_0x51c7db='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x921088['iconClass']||'')+'\x22>'+_0x921088['icon']+'</span>'),_0x5dea22['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x51c7db+'\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'](_0x921088['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x921088['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x921088['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x5dea22['addEventListener']('click',()=>{this['selectItem'](_0x8a9108);}),_0x5dea22['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x19c414,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x5dea22);}),_0x30f721?(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'](_0x56ac4e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x56ac4e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x962139){this['selectedItem']=_0x962139;const _0x55e7f6=this['options']['renderItem'](_0x962139);this['input']['value']=_0x55e7f6['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x962139);}['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'](_0x944fb5){if(_0x944fb5){this['selectedItem']=_0x944fb5;const _0x249eed=this['options']['renderItem'](_0x944fb5);this['input']['value']=_0x249eed['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4a9811){this['allItems']=_0x4a9811,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'](_0xce9cc9){this['input']['placeholder']=_0xce9cc9;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x4fe137=null){const _0x1f4a44=document['getElementById']('admin-menu-container'),_0x28d363=document['getElementById']('admin-menu-btn'),_0x507c9c=document['getElementById']('admin-menu');if(!_0x1f4a44||!_0x28d363||!_0x507c9c)return;try{!_0x4fe137&&(_0x4fe137=await API['getCurrentUser']());if(_0x4fe137){const _0x1e4e7a=window['Permissions'],_0x4fff8e=_0x1e4e7a['hasServerPermission'](_0x4fe137,'*')||_0x1e4e7a['hasEnvPermission'](_0x4fe137,'environments:manage')||_0x1e4e7a['hasServerPermission'](_0x4fe137,'users:create')||_0x1e4e7a['hasTeamPermission'](_0x4fe137,'teams:manage')||_0x1e4e7a['hasEnvPermission'](_0x4fe137,'environments:view_details');if(!_0x4fff8e)return;_0x1f4a44['hidden']=![];if(!_0x1e4e7a['hasServerPermission'](_0x4fe137,'*')){const _0x41e648=_0x507c9c['querySelectorAll']('.admin-menu-item');_0x41e648['forEach'](_0x4ad9f1=>{const _0x2bde1f=_0x4ad9f1['querySelector']('.option-text')?.['textContent']?.['trim']();_0x2bde1f==='Users'&&!_0x1e4e7a['hasServerPermission'](_0x4fe137,'users:create')&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Skills'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Server\x20Settings'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Server\x20Health'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Git\x20History'&&(_0x4ad9f1['hidden']=!![]),_0x2bde1f==='Roles'&&(_0x4ad9f1['hidden']=!![]);});}_0x28d363['addEventListener']('click',_0x302cfe=>{_0x302cfe['stopPropagation']();const _0x2af135=document['getElementById']('actions-menu');if(_0x2af135)_0x2af135['hidden']=!![];_0x507c9c['hidden']=!_0x507c9c['hidden'];}),document['addEventListener']('click',_0xfbe65d=>{!_0x507c9c['hidden']&&!_0x28d363['contains'](_0xfbe65d['target'])&&!_0x507c9c['contains'](_0xfbe65d['target'])&&(_0x507c9c['hidden']=!![]);}),document['addEventListener']('keydown',_0x26b9a3=>{_0x26b9a3['key']==='Escape'&&!_0x507c9c['hidden']&&(_0x507c9c['hidden']=!![]);});const _0x5ecb7e=document['getElementById']('server-health-btn');_0x5ecb7e&&_0x5ecb7e['addEventListener']('click',async()=>{_0x507c9c['hidden']=!![];const {openServerHealthModal:_0x3120ca}=await import('./server-health.js');_0x3120ca();});}}catch(_0x301d05){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x301d05['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};