@profoundlogic/coderflow-server 0.8.2 → 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/compression-filter.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-container-init.js +1 -1
  87. package/dist/lib/task-context-usage.js +1 -1
  88. package/dist/lib/task-name-format.js +1 -1
  89. package/dist/lib/task-name-generator.js +1 -1
  90. package/dist/lib/task-source-metadata.js +1 -1
  91. package/dist/lib/teams.js +1 -1
  92. package/dist/lib/user-git-oauth.js +1 -1
  93. package/dist/lib/user-git-tokens.js +1 -1
  94. package/dist/lib/users.js +1 -1
  95. package/dist/middleware/requireAuth.js +1 -1
  96. package/dist/middleware/requireInit.js +1 -1
  97. package/dist/middleware/requirePermission.js +1 -1
  98. package/dist/package.json +1 -1
  99. package/dist/playwright.config.js +1 -1
  100. package/dist/playwright.task-terminal.config.js +1 -1
  101. package/dist/routes/apiKeys.js +1 -1
  102. package/dist/routes/auth-oidc.js +1 -1
  103. package/dist/routes/auth.js +1 -1
  104. package/dist/routes/automations.js +1 -1
  105. package/dist/routes/bindings.js +1 -1
  106. package/dist/routes/build.js +1 -1
  107. package/dist/routes/containers.js +1 -1
  108. package/dist/routes/deploy-task.js +1 -1
  109. package/dist/routes/environment-management.js +1 -1
  110. package/dist/routes/environments.js +1 -1
  111. package/dist/routes/external-skills.js +1 -1
  112. package/dist/routes/git-credentials.js +1 -1
  113. package/dist/routes/git-oauth.js +1 -1
  114. package/dist/routes/git-provider-setup.js +1 -1
  115. package/dist/routes/health.js +1 -1
  116. package/dist/routes/jira.js +1 -1
  117. package/dist/routes/logs.js +1 -1
  118. package/dist/routes/objective-management.js +1 -1
  119. package/dist/routes/password.js +1 -1
  120. package/dist/routes/prompt.js +1 -1
  121. package/dist/routes/provider-auth.js +1 -1
  122. package/dist/routes/qa.js +1 -1
  123. package/dist/routes/roles.js +1 -1
  124. package/dist/routes/settings.js +1 -1
  125. package/dist/routes/skill-management.js +1 -1
  126. package/dist/routes/skills.js +1 -1
  127. package/dist/routes/stats.js +1 -1
  128. package/dist/routes/tasks.js +1 -1
  129. package/dist/routes/teams.js +1 -1
  130. package/dist/routes/templates.js +1 -1
  131. package/dist/routes/test-task.js +1 -1
  132. package/dist/routes/test.js +1 -1
  133. package/dist/routes/users.js +1 -1
  134. package/dist/routes/visualizations.js +1 -1
  135. package/dist/scripts/create-user.js +1 -1
  136. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  137. package/dist/start.js +1 -1
  138. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  139. package/dist/web-ui/public/activity-feed.js +1 -1
  140. package/dist/web-ui/public/activity-formatters.js +1 -1
  141. package/dist/web-ui/public/admin.js +1 -1
  142. package/dist/web-ui/public/agent-event-parser.js +1 -1
  143. package/dist/web-ui/public/app.js +1 -1
  144. package/dist/web-ui/public/approve-dialog.js +1 -1
  145. package/dist/web-ui/public/automation-links.js +1 -1
  146. package/dist/web-ui/public/automation-schedule.js +1 -1
  147. package/dist/web-ui/public/comments-widget.js +1 -1
  148. package/dist/web-ui/public/diff-utils.js +1 -1
  149. package/dist/web-ui/public/environments.html +19 -0
  150. package/dist/web-ui/public/environments.js +1 -1
  151. package/dist/web-ui/public/feedback-widget.js +1 -1
  152. package/dist/web-ui/public/file-selection-tree.js +1 -1
  153. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  154. package/dist/web-ui/public/git-history.js +1 -1
  155. package/dist/web-ui/public/git-status.js +1 -1
  156. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  157. package/dist/web-ui/public/index.js +1 -1
  158. package/dist/web-ui/public/login.js +1 -1
  159. package/dist/web-ui/public/markdown-editor.js +1 -1
  160. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  161. package/dist/web-ui/public/modal-maximize.js +1 -1
  162. package/dist/web-ui/public/notifications.js +1 -1
  163. package/dist/web-ui/public/permissions.js +1 -1
  164. package/dist/web-ui/public/pr-dialog.js +1 -1
  165. package/dist/web-ui/public/roles.js +1 -1
  166. package/dist/web-ui/public/settings.js +1 -1
  167. package/dist/web-ui/public/setup-password.js +1 -1
  168. package/dist/web-ui/public/skills.js +1 -1
  169. package/dist/web-ui/public/sse-client.js +1 -1
  170. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  171. package/dist/web-ui/public/styles.css +10 -0
  172. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  173. package/dist/web-ui/public/task.js +1 -1
  174. package/dist/web-ui/public/teams.js +1 -1
  175. package/dist/web-ui/public/terminal.js +1 -1
  176. package/dist/web-ui/public/theme.js +1 -1
  177. package/dist/web-ui/public/users.js +1 -1
  178. package/dist/web-ui/public/variant-grouping.js +1 -1
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0xe60347=window['location']['pathname'],_0x4e5baf=_0xe60347['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x4e5baf)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x4e5baf[0x1]),_0x4e5baf[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xf02f52={}){const _0x5c72d5=new URLSearchParams();_0xf02f52['userId']&&_0x5c72d5['set']('userId',String(_0xf02f52['userId']));_0xf02f52['automation']&&_0x5c72d5['set']('automation',String(_0xf02f52['automation']));const _0x2d024f=API_BASE+'/tasks/stats'+(_0x5c72d5['toString']()?'?'+_0x5c72d5['toString']():''),_0x102d61=await fetch(_0x2d024f);if(!_0x102d61['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x102d61['statusText']);return await _0x102d61['json']();},async 'getTasks'(_0x1d0cc3={}){const _0x433a40=new URLSearchParams();_0x1d0cc3['status']&&_0x433a40['set']('status',String(_0x1d0cc3['status']));_0x1d0cc3['environment']&&_0x433a40['set']('environment',String(_0x1d0cc3['environment']));_0x1d0cc3['automation']&&_0x433a40['set']('automation',String(_0x1d0cc3['automation']));if(_0x1d0cc3['include']){const _0x1c4525=Array['isArray'](_0x1d0cc3['include'])?_0x1d0cc3['include']['join'](','):String(_0x1d0cc3['include']);_0x1c4525&&_0x433a40['set']('include',_0x1c4525);}_0x1d0cc3['filter']&&_0x433a40['set']('filter',String(_0x1d0cc3['filter']));_0x1d0cc3['page']&&_0x433a40['set']('page',String(_0x1d0cc3['page']));_0x1d0cc3['limit']&&_0x433a40['set']('limit',String(_0x1d0cc3['limit']));_0x1d0cc3['userId']&&_0x433a40['set']('userId',String(_0x1d0cc3['userId']));_0x1d0cc3['search']&&_0x433a40['set']('search',String(_0x1d0cc3['search']));_0x1d0cc3['includeChildTasks']&&_0x433a40['set']('includeChildTasks','true');const _0x51ffb5=API_BASE+'/tasks'+(_0x433a40['toString']()?'?'+_0x433a40['toString']():''),_0x555d2c=await fetch(_0x51ffb5);if(!_0x555d2c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x555d2c['statusText']);return await _0x555d2c['json']();},async 'getAutomations'(_0x47be7c={}){const _0x2912b1=new URLSearchParams();_0x47be7c['environment']&&_0x2912b1['set']('environment',String(_0x47be7c['environment']));const _0xc3bf79=await fetch(API_BASE+'/api/automations'+(_0x2912b1['toString']()?'?'+_0x2912b1['toString']():''));if(!_0xc3bf79['ok']){const _0x56fb5f=await _0xc3bf79['json']()['catch'](()=>({}));throw new Error(_0x56fb5f['message']||_0x56fb5f['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xc3bf79['statusText']);}return await _0xc3bf79['json']();},async 'getAutomation'(_0x15ba31){const _0x4c1b89=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x15ba31));if(!_0x4c1b89['ok']){const _0x4077e2=await _0x4c1b89['json']()['catch'](()=>({}));throw new Error(_0x4077e2['message']||_0x4077e2['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4c1b89['statusText']);}return await _0x4c1b89['json']();},async 'createAutomation'(_0x233012){const _0x54489c=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x233012||{})});if(!_0x54489c['ok']){const _0x266bb8=await _0x54489c['json']()['catch'](()=>({}));throw new Error(_0x266bb8['message']||_0x266bb8['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x54489c['statusText']);}return await _0x54489c['json']();},async 'updateAutomation'(_0x1fc2b7,_0xeb4ab6){const _0x5b3518=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1fc2b7),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xeb4ab6||{})});if(!_0x5b3518['ok']){const _0x25fddc=await _0x5b3518['json']()['catch'](()=>({}));throw new Error(_0x25fddc['message']||_0x25fddc['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x5b3518['statusText']);}return await _0x5b3518['json']();},async 'deleteAutomation'(_0x54d9e1){const _0x38a4eb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x54d9e1),{'method':'DELETE'});if(!_0x38a4eb['ok']){const _0x563176=await _0x38a4eb['json']()['catch'](()=>({}));throw new Error(_0x563176['message']||_0x563176['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x38a4eb['statusText']);}return await _0x38a4eb['json']();},async 'triggerAutomation'(_0x4d2170){const _0x44b585=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4d2170)+'/trigger',{'method':'POST'});if(!_0x44b585['ok']){const _0x66d305=await _0x44b585['json']()['catch'](()=>({}));throw new Error(_0x66d305['message']||_0x66d305['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x44b585['statusText']);}return await _0x44b585['json']();},async 'setAutomationEnabled'(_0x4307a9,_0x585d90){const _0x245e26=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4307a9)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x585d90})});if(!_0x245e26['ok']){const _0x2ff61f=await _0x245e26['json']()['catch'](()=>({}));throw new Error(_0x2ff61f['message']||_0x2ff61f['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x245e26['statusText']);}return await _0x245e26['json']();},async 'getAutomationHistory'(_0x57b199,_0x24f577=0x32){const _0x466c5d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x57b199)+'/history?limit='+encodeURIComponent(String(_0x24f577)));if(!_0x466c5d['ok']){const _0x2f99cb=await _0x466c5d['json']()['catch'](()=>({}));throw new Error(_0x2f99cb['message']||_0x2f99cb['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x466c5d['statusText']);}return await _0x466c5d['json']();},async 'getTask'(_0x274f40,_0x53cedc={}){const _0x4bbf29=new URLSearchParams();if(_0x53cedc['include']){const _0x51a3bb=Array['isArray'](_0x53cedc['include'])?_0x53cedc['include']['join'](','):String(_0x53cedc['include']);if(_0x51a3bb)_0x4bbf29['set']('include',_0x51a3bb);}const _0x2d2559=await fetch(API_BASE+'/tasks/'+_0x274f40+(_0x4bbf29['toString']()?'?'+_0x4bbf29['toString']():''));if(!_0x2d2559['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x2d2559['statusText']);return await _0x2d2559['json']();},async 'getTaskResults'(_0x229952){const _0x596e39=await fetch(API_BASE+'/tasks/'+_0x229952+'/results');if(!_0x596e39['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x596e39['statusText']);return await _0x596e39['json']();},async 'getTaskPatches'(_0xd10ccc){const _0x1e2222=await fetch(API_BASE+'/tasks/'+_0xd10ccc+'/patches');if(!_0x1e2222['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x1e2222['statusText']);return await _0x1e2222['json']();},async 'getTaskAttachments'(_0x1dfae2){const _0x9640e0=await fetch(API_BASE+'/tasks/'+_0x1dfae2+'/attachments');if(!_0x9640e0['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x9640e0['statusText']);return await _0x9640e0['json']();},async 'uploadAttachments'(_0x236a68,_0x38ed5c){const _0xc063c9=new FormData();for(const _0xedbffe of _0x38ed5c){_0xc063c9['append']('attachments',_0xedbffe);}const _0x38b68d=await fetch(API_BASE+'/tasks/'+_0x236a68+'/attachments',{'method':'POST','body':_0xc063c9});if(!_0x38b68d['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x38b68d['statusText']);return await _0x38b68d['json']();},async 'isAINameGenerationAvailable'(){try{const _0x230e59=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x230e59['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x230e59['json']();}catch(_0x2fd878){return{'available':![],'reason':_0x2fd878['message']};}},async 'generateTaskName'(_0x42111a){try{const _0x2cd5fa=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x42111a})});return await _0x2cd5fa['json']();}catch(_0x570470){return{'success':![],'error':_0x570470['message']};}},async 'createTask'(_0x2b3e05){let _0x38d0b5,_0x318008={};if(_0x2b3e05['files']&&_0x2b3e05['files']['length']>0x0){const _0x560528=new FormData();for(const [_0x3d728b,_0x1cea81]of Object['entries'](_0x2b3e05)){if(_0x3d728b!=='files'){if(_0x1cea81==null)continue;typeof _0x1cea81==='object'?_0x560528['append'](_0x3d728b,JSON['stringify'](_0x1cea81)):_0x560528['append'](_0x3d728b,String(_0x1cea81));}}for(const _0x1711ac of _0x2b3e05['files']){_0x560528['append']('attachments',_0x1711ac);}_0x38d0b5=_0x560528;}else _0x318008['Content-Type']='application/json',_0x38d0b5=JSON['stringify'](_0x2b3e05);const _0x411659=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x318008,'body':_0x38d0b5});if(!_0x411659['ok']){const _0x201ab2=await _0x411659['json'](),_0x2879b5=new Error(_0x201ab2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x411659['statusText']),{message:_0x43e583,..._0x142bdb}=_0x201ab2;Object['assign'](_0x2879b5,_0x142bdb);throw _0x2879b5;}return await _0x411659['json']();},async 'createTestTask'(_0x230595){const _0x2f3096=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x230595)});if(!_0x2f3096['ok']){const _0x23463c=await _0x2f3096['json']();throw new Error(_0x23463c['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x2f3096['statusText']);}return await _0x2f3096['json']();},async 'createEphemeralTest'(_0x4baeae){const _0x493ee9=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4baeae)});if(!_0x493ee9['ok']){const _0x502a31=await _0x493ee9['json']();throw new Error(_0x502a31['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x493ee9['statusText']);}return await _0x493ee9['json']();},async 'createDeployTask'(_0x1af497){const _0x41d025=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1af497)});if(!_0x41d025['ok']){const _0x504d14=await _0x41d025['json']();throw new Error(_0x504d14['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x41d025['statusText']);}return await _0x41d025['json']();},async 'getEnvironments'(){const _0x335945=await fetch(API_BASE+'/environments');if(!_0x335945['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x335945['statusText']);return await _0x335945['json']();},async 'getEnvironment'(_0x1a034e){const _0xad6ee8=await fetch(API_BASE+'/environments/'+_0x1a034e);if(!_0xad6ee8['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0xad6ee8['statusText']);return await _0xad6ee8['json']();},async 'getEnvironmentRepoHistory'(_0x1d291f,_0x22a130,_0x294906={}){if(!_0x1d291f||!_0x22a130)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x29b9ba=new URLSearchParams();if(_0x294906['limit'])_0x29b9ba['set']('limit',String(_0x294906['limit']));if(_0x294906['offset'])_0x29b9ba['set']('offset',String(_0x294906['offset']));if(_0x294906['search'])_0x29b9ba['set']('search',String(_0x294906['search']));if(_0x294906['branch'])_0x29b9ba['set']('branch',String(_0x294906['branch']));const _0xccc3ed=API_BASE+'/environments/'+encodeURIComponent(_0x1d291f)+'/repos/'+encodeURIComponent(_0x22a130)+'/git/history',_0x293aa3=await fetch(''+_0xccc3ed+(_0x29b9ba['toString']()?'?'+_0x29b9ba['toString']():''));if(!_0x293aa3['ok']){const _0x22e588=await _0x293aa3['json']()['catch'](()=>({}));throw new Error(_0x22e588['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x293aa3['statusText']);}return await _0x293aa3['json']();},async 'getEnvironmentRepoCommit'(_0x4a425e,_0x17b3ab,_0x473e59){if(!_0x4a425e||!_0x17b3ab||!_0x473e59)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xf7c7f2=API_BASE+'/environments/'+encodeURIComponent(_0x4a425e)+'/repos/'+encodeURIComponent(_0x17b3ab)+'/git/commits/'+encodeURIComponent(_0x473e59),_0x1da249=await fetch(_0xf7c7f2);if(!_0x1da249['ok']){const _0x22c492=await _0x1da249['json']()['catch'](()=>({}));throw new Error(_0x22c492['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x1da249['statusText']);}return await _0x1da249['json']();},async 'getEnvironmentRepoBranches'(_0x26e52f,_0x251e53){if(!_0x26e52f||!_0x251e53)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5200d4=API_BASE+'/environments/'+encodeURIComponent(_0x26e52f)+'/repos/'+encodeURIComponent(_0x251e53)+'/git/branches',_0x588c46=await fetch(_0x5200d4);if(!_0x588c46['ok']){const _0x32159f=await _0x588c46['json']()['catch'](()=>({}));throw new Error(_0x32159f['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x588c46['statusText']);}return await _0x588c46['json']();},async 'revertEnvironmentRepoCommit'(_0x3dfb12,_0x4dcbc5,_0x2cadd7,_0x445dba={}){if(!_0x3dfb12||!_0x4dcbc5||!_0x2cadd7)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5c6e2a=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x3dfb12)+'/repos/'+encodeURIComponent(_0x4dcbc5)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2cadd7,..._0x445dba})});if(!_0x5c6e2a['ok']){const _0x534552=await _0x5c6e2a['json']()['catch'](()=>({}));throw new Error(_0x534552['message']||_0x534552['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5c6e2a['statusText']);}return await _0x5c6e2a['json']();},async 'getTemplates'(_0x5a1c93={}){const _0x16314c=new URLSearchParams();if(_0x5a1c93['include']){const _0x14cc65=Array['isArray'](_0x5a1c93['include'])?_0x5a1c93['include']['join'](','):String(_0x5a1c93['include']);if(_0x14cc65)_0x16314c['set']('include',_0x14cc65);}const _0x4c4383=await fetch(API_BASE+'/templates'+(_0x16314c['toString']()?'?'+_0x16314c['toString']():''));if(!_0x4c4383['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4c4383['statusText']);return await _0x4c4383['json']();},async 'getTemplatesForEnvironment'(_0x23dded,_0xdf387d={}){if(!_0x23dded)throw new Error('Environment\x20name\x20is\x20required');const _0x299d74=new URLSearchParams();if(_0xdf387d['include']){const _0x5ab807=Array['isArray'](_0xdf387d['include'])?_0xdf387d['include']['join'](','):String(_0xdf387d['include']);if(_0x5ab807)_0x299d74['set']('include',_0x5ab807);}const _0x6fde66=await fetch(API_BASE+'/templates/'+_0x23dded+(_0x299d74['toString']()?'?'+_0x299d74['toString']():''));if(!_0x6fde66['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x23dded+':\x20'+_0x6fde66['statusText']);return await _0x6fde66['json']();},async 'getTemplate'(_0x64e7aa,_0x281825,_0x157ca0={}){if(!_0x64e7aa||!_0x281825)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x574145=new URLSearchParams();if(_0x157ca0['include']){const _0x5b213d=Array['isArray'](_0x157ca0['include'])?_0x157ca0['include']['join'](','):String(_0x157ca0['include']);if(_0x5b213d)_0x574145['set']('include',_0x5b213d);}const _0x39378e=await fetch(API_BASE+'/templates/'+_0x64e7aa+'/'+_0x281825+(_0x574145['toString']()?'?'+_0x574145['toString']():''));if(!_0x39378e['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x39378e['statusText']);return await _0x39378e['json']();},async 'getTaskLogs'(_0x1d42fd,_0x523e4d={}){if(!_0x1d42fd)throw new Error('Task\x20ID\x20is\x20required');const _0x288b53=new URLSearchParams();_0x523e4d['tail']&&_0x288b53['set']('tail',String(_0x523e4d['tail']));const _0x319a8f=await fetch(API_BASE+'/tasks/'+_0x1d42fd+'/logs'+(_0x288b53['toString']()?'?'+_0x288b53['toString']():''));if(!_0x319a8f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x319a8f['statusText']);return await _0x319a8f['text']();},async 'getContainers'(){const _0x505882=await fetch(API_BASE+'/containers');if(!_0x505882['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x505882['statusText']);return await _0x505882['json']();},async 'getContainer'(_0x248763){const _0x47bf2a=await fetch(API_BASE+'/containers/'+_0x248763);if(!_0x47bf2a['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x47bf2a['statusText']);return await _0x47bf2a['json']();},async 'startInteractiveContainer'(_0x4c3bdb){const _0x3caf78=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c3bdb)});if(!_0x3caf78['ok']){const _0x1d7e1c=await _0x3caf78['json']()['catch'](()=>({}));throw new Error(_0x1d7e1c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x3caf78['statusText']);}return await _0x3caf78['json']();},async 'startContainerCodeServer'(_0x404c8e,_0xe9e765={}){if(!_0x404c8e)throw new Error('Container\x20ID\x20is\x20required');const _0x5c6b49=new URLSearchParams();_0xe9e765['theme']&&_0x5c6b49['set']('theme',_0xe9e765['theme']);const _0x2da24a=await fetch(API_BASE+'/containers/'+_0x404c8e+'/code-server'+(_0x5c6b49['toString']()?'?'+_0x5c6b49['toString']():'')),_0x3977d=await _0x2da24a['json']()['catch'](()=>({}));if(!_0x2da24a['ok'])throw new Error(_0x3977d['message']||_0x3977d['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x2da24a['statusText']);return _0x3977d;},async 'stopContainer'(_0x33beb6){const _0x4daece=await fetch(API_BASE+'/containers/'+_0x33beb6,{'method':'DELETE'});if(!_0x4daece['ok']){const _0x9d2880=await _0x4daece['json']()['catch'](()=>({}));throw new Error(_0x9d2880['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4daece['statusText']);}return await _0x4daece['json']();},async 'stopTask'(_0x5ea0d1){if(!_0x5ea0d1)throw new Error('Task\x20ID\x20is\x20required');const _0x1c2a10=await fetch(API_BASE+'/tasks/'+_0x5ea0d1+'/stop',{'method':'POST'});if(!_0x1c2a10['ok']){const _0x15939c=await _0x1c2a10['json']()['catch'](()=>({}));throw new Error(_0x15939c['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1c2a10['statusText']);}return await _0x1c2a10['json']();},async 'interruptTask'(_0x3ce681){if(!_0x3ce681)throw new Error('Task\x20ID\x20is\x20required');const _0x11630b=await fetch(API_BASE+'/tasks/'+_0x3ce681+'/interrupt',{'method':'POST'});if(!_0x11630b['ok']){const _0xc8b39d=await _0x11630b['json']()['catch'](()=>({}));throw new Error(_0xc8b39d['error']||_0xc8b39d['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x11630b['statusText']);}return await _0x11630b['json']();},async 'startTask'(_0x55e832){if(!_0x55e832)throw new Error('Task\x20ID\x20is\x20required');const _0x1889e4=await fetch(API_BASE+'/tasks/'+_0x55e832+'/start',{'method':'POST'});if(!_0x1889e4['ok']){const _0x1e9a9e=await _0x1889e4['json']()['catch'](()=>({}));throw new Error(_0x1e9a9e['error']||'Failed\x20to\x20start\x20task:\x20'+_0x1889e4['statusText']);}return await _0x1889e4['json']();},async 'deleteTask'(_0x393e53){if(!_0x393e53)throw new Error('Task\x20ID\x20is\x20required');const _0x219ce1=await fetch(API_BASE+'/tasks/'+_0x393e53,{'method':'DELETE'});if(!_0x219ce1['ok']){const _0x4d52e7=await _0x219ce1['json']()['catch'](()=>({}));throw new Error(_0x4d52e7['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x219ce1['statusText']);}return await _0x219ce1['json']();},async 'refreshTasksFromDisk'(){const _0x841006=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x841006['ok']){const _0x33a43d=await _0x841006['json']()['catch'](()=>({}));throw new Error(_0x33a43d['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x841006['statusText']);}return await _0x841006['json']();},async 'approveTask'(_0x5472d7,_0x4e1c84={}){if(!_0x5472d7)throw new Error('Task\x20ID\x20is\x20required');const _0x283c61={'commit_message':_0x4e1c84['commit_message']||'','pull':_0x4e1c84['pull']??![],'push':_0x4e1c84['push']??![],'conflict_strategy':_0x4e1c84['conflict_strategy']||'rebase'};_0x4e1c84['new_branch']&&(_0x283c61['new_branch']=_0x4e1c84['new_branch']);const _0x36a44e=await fetch(API_BASE+'/tasks/'+_0x5472d7+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x283c61)});if(!_0x36a44e['ok']){const _0x2d37d6=await _0x36a44e['json']()['catch'](()=>({}));let _0x188019=_0x2d37d6['error']||_0x2d37d6['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x36a44e['statusText'];if(_0x2d37d6['results']&&Array['isArray'](_0x2d37d6['results'])){const _0x3f906b=_0x2d37d6['results']['filter'](_0x41dffa=>!_0x41dffa['success']&&_0x41dffa['error']);_0x3f906b['length']>0x0&&(_0x188019=_0x3f906b[0x0]['error']);}const _0x563bac=new Error(_0x188019);_0x563bac['hasConflicts']=_0x2d37d6['results']?.['some'](_0x40326e=>_0x40326e['conflict'])||![];throw _0x563bac;}return await _0x36a44e['json']();},async 'getPullRequestInfo'(_0x42c683){if(!_0x42c683)throw new Error('Task\x20ID\x20is\x20required');const _0x4780bd=await fetch(API_BASE+'/tasks/'+_0x42c683+'/pull-request-info');if(!_0x4780bd['ok']){const _0x58d83e=await _0x4780bd['json']()['catch'](()=>({}));throw new Error(_0x58d83e['error']||_0x58d83e['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4780bd['statusText']);}return await _0x4780bd['json']();},async 'createPullRequests'(_0xb710de,_0x562872){if(!_0xb710de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x562872||!Array['isArray'](_0x562872))throw new Error('repos\x20array\x20is\x20required');const _0x1e24eb=await fetch(API_BASE+'/tasks/'+_0xb710de+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x562872})});if(!_0x1e24eb['ok']){const _0xc7fe26=await _0x1e24eb['json']()['catch'](()=>({}));let _0x3ca286=_0xc7fe26['error']||_0xc7fe26['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x1e24eb['statusText'];if(_0xc7fe26['results']&&Array['isArray'](_0xc7fe26['results'])){const _0x320855=_0xc7fe26['results']['filter'](_0x594b13=>!_0x594b13['success']&&_0x594b13['error']);_0x320855['length']>0x0&&(_0x3ca286=_0x320855[0x0]['error']);}throw new Error(_0x3ca286);}return await _0x1e24eb['json']();},async 'syncRepos'(_0x1b129c){if(!_0x1b129c)throw new Error('Task\x20ID\x20is\x20required');const _0x5a8a24=await fetch(API_BASE+'/tasks/'+_0x1b129c+'/sync-repos',{'method':'POST'});if(!_0x5a8a24['ok']){const _0x445bb7=await _0x5a8a24['json']()['catch'](()=>({}));throw new Error(_0x445bb7['error']||_0x445bb7['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x5a8a24['statusText']);}return await _0x5a8a24['json']();},async 'getIbmiSyncInfo'(_0xe6470d){if(!_0xe6470d)throw new Error('Task\x20ID\x20is\x20required');const _0x5360e9=await fetch(API_BASE+'/tasks/'+_0xe6470d+'/ibmi-sync-info');if(!_0x5360e9['ok']){const _0x27bd5f=await _0x5360e9['json']()['catch'](()=>({}));throw new Error(_0x27bd5f['error']||_0x27bd5f['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5360e9['json']();},async 'getSyncFiles'(_0x465e64){if(!_0x465e64)throw new Error('Task\x20ID\x20is\x20required');const _0x159e36=await fetch(API_BASE+'/tasks/'+_0x465e64+'/sync-to-ibmi/files');if(!_0x159e36['ok']){const _0x1ca8d2=await _0x159e36['json']()['catch'](()=>({}));throw new Error(_0x1ca8d2['error']||_0x1ca8d2['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x159e36['json']();},async 'syncToIbmi'(_0xadd8a2,_0x36fdd5,_0x3339b4=null,_0x1d749a=null,_0x462cd1=null){if(!_0xadd8a2)throw new Error('Task\x20ID\x20is\x20required');const _0x21ad94={'library':_0x36fdd5};if(_0x3339b4)_0x21ad94['user']=_0x3339b4;if(_0x1d749a)_0x21ad94['password']=_0x1d749a;if(_0x462cd1)_0x21ad94['files']=_0x462cd1;const _0x848c81=await fetch(API_BASE+'/tasks/'+_0xadd8a2+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ad94)});if(!_0x848c81['ok']){const _0x59d121=await _0x848c81['json']()['catch'](()=>({}));throw new Error(_0x59d121['error']||_0x59d121['message']||'Sync\x20failed');}return await _0x848c81['json']();},async 'getIbmiSyncLog'(_0x53d411){if(!_0x53d411)throw new Error('Task\x20ID\x20is\x20required');const _0x1fc7a5=await fetch(API_BASE+'/tasks/'+_0x53d411+'/ibmi-sync-log');if(!_0x1fc7a5['ok']){const _0x2dcc52=await _0x1fc7a5['json']()['catch'](()=>({}));throw new Error(_0x2dcc52['error']||_0x2dcc52['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1fc7a5['json']();},async 'pullChanges'(_0x4ebc20){if(!_0x4ebc20)throw new Error('Task\x20ID\x20is\x20required');const _0x843ff6=await fetch(API_BASE+'/tasks/'+_0x4ebc20+'/pull-changes',{'method':'POST'});if(!_0x843ff6['ok']){const _0x246f7d=await _0x843ff6['json']()['catch'](()=>({}));throw new Error(_0x246f7d['error']||_0x246f7d['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x843ff6['statusText']);}return await _0x843ff6['json']();},async 'readFile'(_0x3c16b9,_0x1872c3){if(!_0x3c16b9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1872c3)throw new Error('File\x20path\x20is\x20required');const _0xce9d50=await fetch(API_BASE+'/tasks/'+_0x3c16b9+'/files?path='+encodeURIComponent(_0x1872c3));if(!_0xce9d50['ok']){const _0xc5487c=await _0xce9d50['json']()['catch'](()=>({}));throw new Error(_0xc5487c['error']||_0xc5487c['message']||'Failed\x20to\x20read\x20file:\x20'+_0xce9d50['statusText']);}return await _0xce9d50['json']();},'getTaskFileDownloadUrl'(_0x1bcdd2,_0x18bdc4){if(!_0x1bcdd2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x18bdc4)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x1bcdd2+'/files/download?path='+encodeURIComponent(_0x18bdc4);},async 'writeFile'(_0x30c4cd,_0x6d7248,_0x300292){if(!_0x30c4cd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6d7248)throw new Error('File\x20path\x20is\x20required');if(_0x300292===undefined)throw new Error('Content\x20is\x20required');const _0x58ddf4=await fetch(API_BASE+'/tasks/'+_0x30c4cd+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x6d7248,'content':_0x300292})});if(!_0x58ddf4['ok']){const _0x1b1a92=await _0x58ddf4['json']()['catch'](()=>({}));throw new Error(_0x1b1a92['error']||_0x1b1a92['message']||'Failed\x20to\x20write\x20file:\x20'+_0x58ddf4['statusText']);}return await _0x58ddf4['json']();},async 'uploadTaskFiles'(_0x5b3f3b,_0x51163c,_0x563d54){if(!_0x5b3f3b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x51163c)throw new Error('Target\x20directory\x20is\x20required');if(!_0x563d54||_0x563d54['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x198ba0=new FormData();_0x198ba0['append']('targetDir',_0x51163c);for(const _0x414403 of _0x563d54){_0x198ba0['append']('files',_0x414403,_0x414403['name']);}const _0x5b7a33=await fetch(API_BASE+'/tasks/'+_0x5b3f3b+'/files/upload',{'method':'POST','body':_0x198ba0});if(!_0x5b7a33['ok']){const _0x73b3c1=await _0x5b7a33['json']()['catch'](()=>({}));throw new Error(_0x73b3c1['error']||_0x73b3c1['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x5b7a33['statusText']);}return await _0x5b7a33['json']();},async 'createDirectory'(_0x4c3399,_0x8835df){if(!_0x4c3399)throw new Error('Task\x20ID\x20is\x20required');if(!_0x8835df)throw new Error('Directory\x20path\x20is\x20required');const _0x36edd1=await fetch(API_BASE+'/tasks/'+_0x4c3399+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x8835df})});if(!_0x36edd1['ok']){const _0x186895=await _0x36edd1['json']()['catch'](()=>({}));throw new Error(_0x186895['error']||_0x186895['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x36edd1['statusText']);}return await _0x36edd1['json']();},async 'renamePath'(_0x4fe701,_0x12352e,_0x2cbffd){if(!_0x4fe701)throw new Error('Task\x20ID\x20is\x20required');if(!_0x12352e)throw new Error('Source\x20path\x20is\x20required');if(!_0x2cbffd)throw new Error('Destination\x20path\x20is\x20required');const _0x27ffae=await fetch(API_BASE+'/tasks/'+_0x4fe701+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x12352e,'newPath':_0x2cbffd})});if(!_0x27ffae['ok']){const _0x4f98fb=await _0x27ffae['json']()['catch'](()=>({}));throw new Error(_0x4f98fb['error']||_0x4f98fb['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x27ffae['statusText']);}return await _0x27ffae['json']();},async 'deleteFile'(_0x54b99e,_0x5b18cb){if(!_0x54b99e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b18cb)throw new Error('File\x20path\x20is\x20required');const _0x4f880a=await fetch(API_BASE+'/tasks/'+_0x54b99e+'/files?path='+encodeURIComponent(_0x5b18cb),{'method':'DELETE'});if(!_0x4f880a['ok']){const _0x1d304b=await _0x4f880a['json']()['catch'](()=>({}));throw new Error(_0x1d304b['error']||_0x1d304b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4f880a['statusText']);}return await _0x4f880a['json']();},async 'deleteDirectory'(_0x4f4aa6,_0x8ca208){if(!_0x4f4aa6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x8ca208)throw new Error('Directory\x20path\x20is\x20required');const _0x45450d=await fetch(API_BASE+'/tasks/'+_0x4f4aa6+'/files/directory?path='+encodeURIComponent(_0x8ca208),{'method':'DELETE'});if(!_0x45450d['ok']){const _0x12f881=await _0x45450d['json']()['catch'](()=>({}));throw new Error(_0x12f881['error']||_0x12f881['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x45450d['statusText']);}return await _0x45450d['json']();},async 'discardFile'(_0xf24f5d,_0x95e69f,_0x4be490){if(!_0xf24f5d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x95e69f)throw new Error('File\x20path\x20is\x20required');if(!_0x4be490)throw new Error('Repository\x20path\x20is\x20required');const _0x51acc9=await fetch(API_BASE+'/tasks/'+_0xf24f5d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x95e69f,'repoPath':_0x4be490})});if(!_0x51acc9['ok']){const _0x20c901=await _0x51acc9['json']()['catch'](()=>({}));throw new Error(_0x20c901['error']||_0x20c901['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x51acc9['statusText']);}return await _0x51acc9['json']();},async 'followUpTask'(_0x356e17,_0x178c7e={}){if(!_0x356e17)throw new Error('Task\x20ID\x20is\x20required');if(!_0x178c7e['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x58f8f1,_0x3a2ff7={};if(_0x178c7e['files']&&_0x178c7e['files']['length']>0x0){const _0x2fa21a=new FormData();_0x2fa21a['append']('instructions',_0x178c7e['instructions']);for(const _0x1a2a9b of _0x178c7e['files']){_0x2fa21a['append']('attachments',_0x1a2a9b);}_0x58f8f1=_0x2fa21a;}else _0x3a2ff7['Content-Type']='application/json',_0x58f8f1=JSON['stringify']({'instructions':_0x178c7e['instructions']});const _0x23887c=await fetch(API_BASE+'/tasks/'+_0x356e17+'/follow-up',{'method':'POST','headers':_0x3a2ff7,'body':_0x58f8f1});if(!_0x23887c['ok']){const _0x530acf=await _0x23887c['json']()['catch'](()=>({}));throw new Error(_0x530acf['error']||_0x530acf['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x23887c['statusText']);}return await _0x23887c['json']();},async 'getTaskRewindPoints'(_0x5a9976){if(!_0x5a9976)throw new Error('Task\x20ID\x20is\x20required');const _0xd3b6e1=await fetch(API_BASE+'/tasks/'+_0x5a9976+'/rewind-points');if(!_0xd3b6e1['ok']){const _0x2cd473=await _0xd3b6e1['json']()['catch'](()=>({}));throw new Error(_0x2cd473['error']||_0x2cd473['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xd3b6e1['statusText']);}return await _0xd3b6e1['json']();},async 'rewindTask'(_0x4d77dc,_0x19b9b1={}){if(!_0x4d77dc)throw new Error('Task\x20ID\x20is\x20required');const _0x47581d=Number['isInteger'](_0x19b9b1['targetFollowUpCount'])?_0x19b9b1['targetFollowUpCount']:0x0,_0x598373={'targetFollowUpCount':_0x47581d};typeof _0x19b9b1['instructions']==='string'&&_0x19b9b1['instructions']['trim']()&&(_0x598373['instructions']=_0x19b9b1['instructions']['trim']());typeof _0x19b9b1['rewindFiles']==='boolean'&&(_0x598373['rewindFiles']=_0x19b9b1['rewindFiles']);const _0x202aa6=await fetch(API_BASE+'/tasks/'+_0x4d77dc+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x598373)});if(!_0x202aa6['ok']){const _0x180998=await _0x202aa6['json']()['catch'](()=>({}));throw new Error(_0x180998['error']||_0x180998['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x202aa6['statusText']);}return await _0x202aa6['json']();},async 'login'(_0x4ba872,_0xb928fe){const _0x4cb64f=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4ba872,'password':_0xb928fe})});if(!_0x4cb64f['ok']){const _0x39ea49=await _0x4cb64f['json']();throw new Error(_0x39ea49['message']||'Login\x20failed');}return await _0x4cb64f['json']();},async 'logout'(){const _0x596fb9=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x596fb9['ok']){const _0x56ea3d=await _0x596fb9['json']();throw new Error(_0x56ea3d['message']||'Logout\x20failed');}return await _0x596fb9['json']();},async 'getCurrentUser'(){const _0x4e139e=await fetch(API_BASE+'/auth/me');if(!_0x4e139e['ok'])throw new Error('Not\x20authenticated');const _0x70336=await _0x4e139e['json']();return _0x70336['user'];},async 'getRolesInfo'(){const _0x1bbe09=await fetch(API_BASE+'/users/roles');if(!_0x1bbe09['ok']){const _0xc1bfc7=await _0x1bbe09['json']();throw new Error(_0xc1bfc7['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1bbe09['json']();},async 'getUsers'(){const _0x39b275=await fetch(API_BASE+'/users');if(!_0x39b275['ok']){const _0x4a852f=await _0x39b275['json']();throw new Error(_0x4a852f['message']||'Failed\x20to\x20get\x20users');}return await _0x39b275['json']();},async 'getUser'(_0x5e5db3){const _0x3536d9=await fetch(API_BASE+'/users/'+_0x5e5db3);if(!_0x3536d9['ok']){const _0x37ec14=await _0x3536d9['json']();throw new Error(_0x37ec14['message']||'Failed\x20to\x20get\x20user');}return await _0x3536d9['json']();},async 'createUser'(_0x3471f3){const _0x4cedc5=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3471f3)});if(!_0x4cedc5['ok']){const _0x240719=await _0x4cedc5['json']();throw new Error(_0x240719['message']||'Failed\x20to\x20create\x20user');}return await _0x4cedc5['json']();},async 'updateUser'(_0x1823a8,_0x2ca81f){const _0x3f52bd=await fetch(API_BASE+'/users/'+_0x1823a8,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ca81f)});if(!_0x3f52bd['ok']){const _0x1efe40=await _0x3f52bd['json']();throw new Error(_0x1efe40['message']||'Failed\x20to\x20update\x20user');}return await _0x3f52bd['json']();},async 'deleteUser'(_0x38b093){const _0x573371=await fetch(API_BASE+'/users/'+_0x38b093,{'method':'DELETE'});if(!_0x573371['ok']){const _0x40c283=await _0x573371['json']();throw new Error(_0x40c283['message']||'Failed\x20to\x20delete\x20user');}return await _0x573371['json']();},async 'stopAllContainers'(){const _0x5c885c=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x199df4=await _0x5c885c['json']()['catch'](()=>({}));if(!_0x5c885c['ok'])throw new Error(_0x199df4['message']||_0x199df4['error']||'Failed\x20to\x20stop\x20containers');return _0x199df4;},async 'removeStoppedContainers'(){const _0x33e60f=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x63eeb6=await _0x33e60f['json']()['catch'](()=>({}));if(!_0x33e60f['ok'])throw new Error(_0x63eeb6['message']||_0x63eeb6['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x63eeb6;},async 'pruneDockerResources'(){const _0x54ffda=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x55bc8d=await _0x54ffda['json']()['catch'](()=>({}));if(!_0x54ffda['ok'])throw new Error(_0x55bc8d['message']||_0x55bc8d['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x55bc8d;},async 'getUpdateSettings'(){const _0x496803=await fetch(API_BASE+'/health/update-settings'),_0xb0b01e=await _0x496803['json']()['catch'](()=>({}));if(!_0x496803['ok'])throw new Error(_0xb0b01e['message']||_0xb0b01e['error']||'Failed\x20to\x20load\x20update\x20settings');return _0xb0b01e;},async 'applyServerUpdate'(_0x38634b){const _0x51add4=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x38634b})}),_0x2bbc81=await _0x51add4['json']()['catch'](()=>({}));if(!_0x51add4['ok']){const _0x1dad91=new Error(_0x2bbc81['message']||_0x2bbc81['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x2bbc81['output']!==undefined)_0x1dad91['output']=_0x2bbc81['output'];if(_0x2bbc81['error']!==undefined)_0x1dad91['commandError']=_0x2bbc81['error'];throw _0x1dad91;}return _0x2bbc81;},async 'restartServer'(){const _0x2e319a=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x29f716=await _0x2e319a['json']()['catch'](()=>({}));if(!_0x2e319a['ok'])throw new Error(_0x29f716['message']||_0x29f716['error']||'Failed\x20to\x20restart\x20server');return _0x29f716;},async 'createPasswordToken'(_0x3cb2bb,_0x2dfdb7='setup',_0x2a1941=![]){const _0x255cac=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3cb2bb,'type':_0x2dfdb7,'sendEmail':_0x2a1941})});if(!_0x255cac['ok']){const _0x492e71=await _0x255cac['json']();throw new Error(_0x492e71['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x255cac['json']();},async 'getEmailConfig'(){const _0x59418e=await fetch(API_BASE+'/password/email-config');if(!_0x59418e['ok']){const _0xc4502=await _0x59418e['json']();throw new Error(_0xc4502['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x59418e['json']();},async 'updateTaskName'(_0x37b2f5,_0x381cdb){const _0x19c7c2=await fetch(API_BASE+'/tasks/'+_0x37b2f5,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x381cdb})});if(!_0x19c7c2['ok']){const _0x2ef825=await _0x19c7c2['json']();throw new Error(_0x2ef825['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x19c7c2['json']();},async 'pinTask'(_0x308461,_0x161583,_0x10fa81=null){if(!_0x308461)throw new Error('Task\x20ID\x20is\x20required');const _0x10c7a7={'pinned':_0x161583};_0x10fa81&&_0x10fa81['length']>0x0&&(_0x10c7a7['additionalTaskIds']=_0x10fa81);const _0x3f23b8=await fetch(API_BASE+'/tasks/'+_0x308461+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10c7a7)});if(!_0x3f23b8['ok']){const _0x20b350=await _0x3f23b8['json']();throw new Error(_0x20b350['error']||'Failed\x20to\x20pin\x20task');}return await _0x3f23b8['json']();},async 'setTaskWinner'(_0x13bdd8,_0x3cda45,_0x182ae1=[]){if(!_0x13bdd8)throw new Error('Task\x20ID\x20is\x20required');const _0x57edb8=await fetch(API_BASE+'/tasks/'+_0x13bdd8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3cda45,'siblings':_0x182ae1})});if(!_0x57edb8['ok']){const _0x2e11cd=await _0x57edb8['json']();throw new Error(_0x2e11cd['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x57edb8['json']();},async 'setTaskLoser'(_0x18a8c5,_0xf455ba){if(!_0x18a8c5)throw new Error('Task\x20ID\x20is\x20required');const _0x29290e=await fetch(API_BASE+'/tasks/'+_0x18a8c5+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xf455ba})});if(!_0x29290e['ok']){const _0x14ee10=await _0x29290e['json']();throw new Error(_0x14ee10['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x29290e['json']();},async 'createTaskGroup'(_0x33e727){const _0x43e1d1=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33e727)});if(!_0x43e1d1['ok']){const _0x1237ae=await _0x43e1d1['json']();throw new Error(_0x1237ae['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x43e1d1['json']();},async 'getTaskGroups'(_0x591c9f={}){const _0x532bf2=new URLSearchParams();if(_0x591c9f['userId'])_0x532bf2['set']('userId',String(_0x591c9f['userId']));if(_0x591c9f['status'])_0x532bf2['set']('status',String(_0x591c9f['status']));if(_0x591c9f['limit'])_0x532bf2['set']('limit',String(_0x591c9f['limit']));const _0x95572a=API_BASE+'/tasks/groups'+(_0x532bf2['toString']()?'?'+_0x532bf2['toString']():''),_0x55e2db=await fetch(_0x95572a);if(!_0x55e2db['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x55e2db['json']();},async 'getTaskGroup'(_0x5e716d){const _0x218b49=await fetch(API_BASE+'/tasks/groups/'+_0x5e716d);if(!_0x218b49['ok']){const _0x38adf3=await _0x218b49['json']();throw new Error(_0x38adf3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x218b49['json']();},async 'updateTaskGroup'(_0x8b9ce6,_0x3aa176,_0x40d49e){const _0x4938e8=await fetch(API_BASE+'/tasks/'+_0x8b9ce6+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x3aa176,'groupIndex':_0x40d49e})});if(!_0x4938e8['ok']){const _0x478298=await _0x4938e8['json']();throw new Error(_0x478298['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x4938e8['json']();},async 'removeTaskFromGroup'(_0x5e2192){return this['updateTaskGroup'](_0x5e2192,null,null);},async 'deleteTaskGroup'(_0x55fe0b,_0x162db0=![]){const _0x4fba52=_0x162db0?'?deleteTasks=true':'',_0x55faba=await fetch(API_BASE+'/tasks/groups/'+_0x55fe0b+_0x4fba52,{'method':'DELETE'});if(!_0x55faba['ok']){const _0x5d27bb=await _0x55faba['json']();throw new Error(_0x5d27bb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x55f0f1,_0x40cafa){const _0x2d6134=await fetch(API_BASE+'/tasks/groups/'+_0x55f0f1+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x40cafa})});if(!_0x2d6134['ok']){const _0x1736ad=await _0x2d6134['json']();throw new Error(_0x1736ad['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x2d6134['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x48c7f6){if(!_0x48c7f6)throw new Error('Task\x20ID\x20is\x20required');const _0x468a96=await fetch(API_BASE+'/tasks/'+_0x48c7f6+'/comments');if(!_0x468a96['ok']){const _0x204ec9=await _0x468a96['json']()['catch'](()=>({}));throw new Error(_0x204ec9['error']||'Failed\x20to\x20get\x20comments');}return await _0x468a96['json']();},async 'addComment'(_0xfb2efb,_0x2ab3e3){if(!_0xfb2efb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ab3e3)throw new Error('Comment\x20content\x20is\x20required');const _0x5cba18=await fetch(API_BASE+'/tasks/'+_0xfb2efb+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2ab3e3})});if(!_0x5cba18['ok']){const _0x30640e=await _0x5cba18['json']()['catch'](()=>({}));throw new Error(_0x30640e['error']||'Failed\x20to\x20add\x20comment');}return await _0x5cba18['json']();},async 'updateComment'(_0x271f38,_0x17cd17,_0x34b17e){if(!_0x271f38)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17cd17)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x34b17e)throw new Error('Comment\x20content\x20is\x20required');const _0x2a502e=await fetch(API_BASE+'/tasks/'+_0x271f38+'/comments/'+_0x17cd17,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x34b17e})});if(!_0x2a502e['ok']){const _0x3b2f7a=await _0x2a502e['json']()['catch'](()=>({}));throw new Error(_0x3b2f7a['error']||'Failed\x20to\x20update\x20comment');}return await _0x2a502e['json']();},async 'deleteComment'(_0x3ae2de,_0x13015a){if(!_0x3ae2de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x13015a)throw new Error('Comment\x20ID\x20is\x20required');const _0x4db171=await fetch(API_BASE+'/tasks/'+_0x3ae2de+'/comments/'+_0x13015a,{'method':'DELETE'});if(!_0x4db171['ok']){const _0x54aa12=await _0x4db171['json']()['catch'](()=>({}));throw new Error(_0x54aa12['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4db171['json']();},async 'createObjective'(_0x4de298){const _0x2182ba={'objective':!![],'name':_0x4de298['name']||'','environment':_0x4de298['environment']||null,'agents':_0x4de298['agents']||[],'branches':_0x4de298['branches']||{},'isPinned':_0x4de298['isPinned']||![],'parentObjectiveId':_0x4de298['parentObjectiveId']||null,'env_vars':_0x4de298['envVars']||{},'parameters':{'instructions':_0x4de298['instructions']||''},'files':_0x4de298['files']||[],'jira':_0x4de298['jira']||null};return this['createTask'](_0x2182ba);},async 'updateObjective'(_0x2d4b8d,_0x2ced43,_0x23f6dd=[],_0xf7ec09=[]){let _0x17f486,_0x251f79={};const _0x9ccfb9={..._0x2ced43};_0xf7ec09&&_0xf7ec09['length']>0x0&&(_0x9ccfb9['removeAttachments']=_0xf7ec09);if(_0x23f6dd&&_0x23f6dd['length']>0x0){const _0x5a3c53=new FormData();for(const [_0x4098bd,_0x4660a3]of Object['entries'](_0x9ccfb9)){if(_0x4660a3==null)continue;typeof _0x4660a3==='object'?_0x5a3c53['append'](_0x4098bd,JSON['stringify'](_0x4660a3)):_0x5a3c53['append'](_0x4098bd,String(_0x4660a3));}for(const _0x103282 of _0x23f6dd){_0x5a3c53['append']('attachments',_0x103282);}_0x17f486=_0x5a3c53;}else _0x251f79['Content-Type']='application/json',_0x17f486=JSON['stringify'](_0x9ccfb9);const _0xb2cb68=await fetch(API_BASE+'/tasks/'+_0x2d4b8d,{'method':'PATCH','headers':_0x251f79,'body':_0x17f486});if(!_0xb2cb68['ok']){const _0x2bb427=await _0xb2cb68['json']();throw new Error(_0x2bb427['error']||'Failed\x20to\x20update\x20objective');}return await _0xb2cb68['json']();},async 'deleteObjective'(_0xddcfd3){return this['deleteTask'](_0xddcfd3);},async 'launchObjective'(_0x13e5da,_0x41b8db={}){const _0x4c5ccd=await fetch(API_BASE+'/tasks/'+_0x13e5da+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41b8db)});if(!_0x4c5ccd['ok']){const _0x36ea0c=await _0x4c5ccd['json']();throw new Error(_0x36ea0c['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4c5ccd['json']();},async 'getObjectiveAttachments'(_0x4a6c0b){return this['getTaskAttachments'](_0x4a6c0b);},async 'createJudgeTask'({environment:_0x405bfc,judgeAgent:_0x513ecf,groupId:_0x1ae8e9,taskIds:_0x534072,judgeCustomInstructions:_0x27ee72,isPinned:_0x3dcddf}){const _0x1bb0e3=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x405bfc,'judgeAgent':_0x513ecf,'groupId':_0x1ae8e9,'taskIds':_0x534072,'judgeCustomInstructions':_0x27ee72,'isPinned':_0x3dcddf})});if(!_0x1bb0e3['ok']){const _0x22f063=await _0x1bb0e3['json']();throw new Error(_0x22f063['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x1bb0e3['json']();},async 'getJudgeTasks'(_0x249db7){const _0x59e1aa=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x249db7));if(!_0x59e1aa['ok']){const _0x5e8bc9=await _0x59e1aa['json']();throw new Error(_0x5e8bc9['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x59e1aa['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3ab438,_0x14e20b,_0x345cdd=''){const _0x407cc1=await fetch(API_BASE+'/tasks/'+_0x3ab438+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14e20b,'customPreamble':_0x345cdd})});if(!_0x407cc1['ok']){const _0xdb0d17=await _0x407cc1['json']();throw new Error(_0xdb0d17['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x407cc1['json']();},async 'getJiraConfig'(){const _0x1a5808=await fetch(API_BASE+'/jira/config');if(!_0x1a5808['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1a5808['json']();},async 'getJiraIssue'(_0x265a68){const _0x2b8581=await fetch(API_BASE+'/jira/issues/'+_0x265a68);if(!_0x2b8581['ok']){const _0x310c2f=await _0x2b8581['json']()['catch'](()=>({}));throw new Error(_0x310c2f['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x2b8581['statusText']);}return await _0x2b8581['json']();},async 'searchJiraIssues'(_0x5e3a07,_0x38fa51=0x14){const _0x5d5836=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5e3a07,'maxResults':_0x38fa51})});if(!_0x5d5836['ok']){const _0x50fb5a=await _0x5d5836['json']()['catch'](()=>({}));throw new Error(_0x50fb5a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x5d5836['statusText']);}return await _0x5d5836['json']();},async 'postJiraComment'(_0x513d89,_0x128a03){const _0xd3e2ab=await fetch(API_BASE+'/jira/issues/'+_0x513d89+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x128a03})});if(!_0xd3e2ab['ok']){const _0x11236a=await _0xd3e2ab['json']()['catch'](()=>({}));throw new Error(_0x11236a['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0xd3e2ab['statusText']);}return await _0xd3e2ab['json']();},async 'getJiraComments'(_0x4abfd3){const _0x387db4=await fetch(API_BASE+'/jira/issues/'+_0x4abfd3+'/comments');if(!_0x387db4['ok']){const _0x45064d=await _0x387db4['json']()['catch'](()=>({}));throw new Error(_0x45064d['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x387db4['statusText']);}return await _0x387db4['json']();},async 'promptParameter'({environment:_0x9c9908,command:_0x249a72,parser:parser='json'}){const _0x558698=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x9c9908,'command':_0x249a72,'parser':parser})});if(!_0x558698['ok']){const _0x25c6c8=await _0x558698['json']()['catch'](()=>({}));throw new Error(_0x25c6c8['message']||_0x25c6c8['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x558698['statusText']);}return await _0x558698['json']();},async 'promptParameterStream'(_0x2f3e7f,_0x4d5c45){const _0x189a82=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f3e7f)});if(!_0x189a82['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x189a82['statusText']);const _0x4624af=_0x189a82['body']['getReader'](),_0x1540fc=new TextDecoder();let _0xb2ecbd='';return new Promise((_0xa8a5a3,_0x3593b4)=>{const _0x25e9a2=async()=>{try{const {done:_0x558ff9,value:_0x46029d}=await _0x4624af['read']();if(_0x558ff9)return;_0xb2ecbd+=_0x1540fc['decode'](_0x46029d,{'stream':!![]});const _0x26b8e9=_0xb2ecbd['split']('\x0a\x0a');_0xb2ecbd=_0x26b8e9['pop']()||'';for(const _0x4fdc0b of _0x26b8e9){if(!_0x4fdc0b['trim']())continue;const _0x54de36=_0x4fdc0b['split']('\x0a');let _0x3656c2='message',_0x70cf57='';for(const _0x34c428 of _0x54de36){if(_0x34c428['startsWith']('event:'))_0x3656c2=_0x34c428['substring'](0x6)['trim']();else _0x34c428['startsWith']('data:')&&(_0x70cf57=_0x34c428['substring'](0x5)['trim']());}if(!_0x70cf57)continue;try{const _0x2fd831=JSON['parse'](_0x70cf57);if(_0x3656c2==='progress'&&_0x4d5c45)_0x4d5c45(_0x2fd831['stage'],_0x2fd831['message']);else{if(_0x3656c2==='result'){_0xa8a5a3(_0x2fd831);return;}else{if(_0x3656c2==='error'){let _0x4b03b4=_0x2fd831['message']||_0x2fd831['error']||'Prompt\x20command\x20failed';_0x2fd831['rawOutput']&&(_0x4b03b4+='\x0a\x0aRaw\x20output:\x0a'+_0x2fd831['rawOutput']);_0x3593b4(new Error(_0x4b03b4));return;}}}}catch(_0x382369){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x382369),console['error']('Event\x20type:',_0x3656c2),console['error']('Event\x20data:',_0x70cf57),console['error']('First\x20200\x20chars:',_0x70cf57['substring'](0x0,0xc8)),_0x3593b4(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x382369['message']+'\x0a\x0aData:\x20'+_0x70cf57['substring'](0x0,0x1f4)));return;}}_0x25e9a2();}catch(_0x1ac4fc){_0x3593b4(_0x1ac4fc);}};_0x25e9a2();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xad6369){const _0x1b079b=await fetch(''+API_BASE+_0xad6369);if(!_0x1b079b['ok']){const _0x3a0103=await _0x1b079b['json']()['catch'](()=>({'error':_0x1b079b['statusText']})),_0x560d7f=new Error(_0x3a0103['error']||_0x3a0103['message']||_0x1b079b['statusText']);if(_0x3a0103['detail']!==undefined)_0x560d7f['detail']=_0x3a0103['detail'];throw _0x560d7f;}return await _0x1b079b['json']();},async 'post'(_0x35d5cc,_0x10a324){const _0x49f7e7=await fetch(''+API_BASE+_0x35d5cc,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x10a324)});if(!_0x49f7e7['ok']){const _0x151b13=await _0x49f7e7['json']()['catch'](()=>({'error':_0x49f7e7['statusText']})),_0x5cbf7e=new Error(_0x151b13['error']||_0x151b13['message']||_0x49f7e7['statusText']);if(_0x151b13['detail']!==undefined)_0x5cbf7e['detail']=_0x151b13['detail'];throw _0x5cbf7e;}return await _0x49f7e7['json']();},async 'put'(_0x12eeb3,_0x2a2594){const _0x42af12=await fetch(''+API_BASE+_0x12eeb3,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2a2594)});if(!_0x42af12['ok']){const _0x554f53=await _0x42af12['json']()['catch'](()=>({'error':_0x42af12['statusText']})),_0x1b37f9=new Error(_0x554f53['error']||_0x554f53['message']||_0x42af12['statusText']);if(_0x554f53['detail']!==undefined)_0x1b37f9['detail']=_0x554f53['detail'];throw _0x1b37f9;}return await _0x42af12['json']();},async 'delete'(_0x5bd2b0,_0x464709){const _0x4a043f={'method':'DELETE'};_0x464709&&(_0x4a043f['headers']={'Content-Type':'application/json'},_0x4a043f['body']=JSON['stringify'](_0x464709));const _0x341b22=await fetch(''+API_BASE+_0x5bd2b0,_0x4a043f);if(!_0x341b22['ok']){const _0x33b116=await _0x341b22['json']()['catch'](()=>({'error':_0x341b22['statusText']})),_0x40c4d0=new Error(_0x33b116['error']||_0x33b116['message']||_0x341b22['statusText']);if(_0x33b116['detail']!==undefined)_0x40c4d0['detail']=_0x33b116['detail'];throw _0x40c4d0;}return await _0x341b22['json']();},async 'getSkills'(){const _0x44ed7e=await fetch(API_BASE+'/skills');if(!_0x44ed7e['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x44ed7e['statusText']);return await _0x44ed7e['json']();},async 'getSkill'(_0x31ad30){const _0x362372=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x31ad30));if(!_0x362372['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x362372['statusText']);return await _0x362372['json']();},async 'createSkill'(_0x37499e){const _0x6f34c7=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37499e)});if(!_0x6f34c7['ok']){const _0x1b5b4d=await _0x6f34c7['json']()['catch'](()=>({'error':_0x6f34c7['statusText']})),_0xaf3524=new Error(_0x1b5b4d['error']||_0x1b5b4d['message']||_0x6f34c7['statusText']);if(_0x1b5b4d['detail']!==undefined)_0xaf3524['detail']=_0x1b5b4d['detail'];throw _0xaf3524;}return await _0x6f34c7['json']();},async 'updateSkill'(_0x1e4b70,_0x3b18a4){const _0x5c4ce7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1e4b70),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b18a4)});if(!_0x5c4ce7['ok']){const _0x88b78d=await _0x5c4ce7['json']()['catch'](()=>({'error':_0x5c4ce7['statusText']})),_0x531016=new Error(_0x88b78d['error']||_0x88b78d['message']||_0x5c4ce7['statusText']);if(_0x88b78d['detail']!==undefined)_0x531016['detail']=_0x88b78d['detail'];throw _0x531016;}return await _0x5c4ce7['json']();},async 'deleteSkill'(_0x57a88b){const _0x2eadff=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x57a88b),{'method':'DELETE'});if(!_0x2eadff['ok']){const _0x369c99=await _0x2eadff['json']()['catch'](()=>({'error':_0x2eadff['statusText']})),_0x41c06e=new Error(_0x369c99['error']||_0x369c99['message']||_0x2eadff['statusText']);if(_0x369c99['detail']!==undefined)_0x41c06e['detail']=_0x369c99['detail'];throw _0x41c06e;}return await _0x2eadff['json']();},async 'getSkillFile'(_0x136a78,_0x596406){const _0xb92939=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x136a78)+'/files/'+_0x596406);if(!_0xb92939['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0xb92939['statusText']);return await _0xb92939['json']();},async 'saveSkillFile'(_0x291b28,_0x25bb10,_0x565ec3){const _0x37c0d4=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x291b28)+'/files/'+_0x25bb10,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x565ec3})});if(!_0x37c0d4['ok']){const _0x307604=await _0x37c0d4['json']()['catch'](()=>({'error':_0x37c0d4['statusText']})),_0x3354b3=new Error(_0x307604['error']||_0x307604['message']||_0x37c0d4['statusText']);if(_0x307604['detail']!==undefined)_0x3354b3['detail']=_0x307604['detail'];throw _0x3354b3;}return await _0x37c0d4['json']();},async 'deleteSkillFile'(_0x228592,_0xae2192){const _0x223a6e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x228592)+'/files/'+_0xae2192,{'method':'DELETE'});if(!_0x223a6e['ok']){const _0xbd4390=await _0x223a6e['json']()['catch'](()=>({'error':_0x223a6e['statusText']})),_0x1225e4=new Error(_0xbd4390['error']||_0xbd4390['message']||_0x223a6e['statusText']);if(_0xbd4390['detail']!==undefined)_0x1225e4['detail']=_0xbd4390['detail'];throw _0x1225e4;}return await _0x223a6e['json']();},async 'pullSkills'(){const _0x5e3933=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5e3933['ok']){const _0x213cb4=await _0x5e3933['json']()['catch'](()=>({'error':_0x5e3933['statusText']})),_0x28cc01=new Error(_0x213cb4['error']||_0x213cb4['message']||_0x5e3933['statusText']);if(_0x213cb4['detail']!==undefined)_0x28cc01['detail']=_0x213cb4['detail'];throw _0x28cc01;}return await _0x5e3933['json']();},async 'commitSkills'(_0x31de65,_0x461aef={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x461aef,_0x15eb1e=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x31de65,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x15eb1e['ok']){const _0x25733b=await _0x15eb1e['json']()['catch'](()=>({'error':_0x15eb1e['statusText']})),_0x31c701=new Error(_0x25733b['error']||_0x25733b['message']||_0x15eb1e['statusText']);if(_0x25733b['detail']!==undefined)_0x31c701['detail']=_0x25733b['detail'];throw _0x31c701;}return await _0x15eb1e['json']();},async 'discardSkillsChanges'(){const _0x38757b=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x38757b['ok']){const _0x1e4d3c=await _0x38757b['json']()['catch'](()=>({'error':_0x38757b['statusText']})),_0x53169c=new Error(_0x1e4d3c['error']||_0x1e4d3c['message']||_0x38757b['statusText']);if(_0x1e4d3c['detail']!==undefined)_0x53169c['detail']=_0x1e4d3c['detail'];throw _0x53169c;}return await _0x38757b['json']();},async 'getSkillCatalog'(){const _0x519bac=await fetch(API_BASE+'/external-skills/catalog');if(!_0x519bac['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x519bac['statusText']);return await _0x519bac['json']();},async 'getImportedSkillsRegistry'(){const _0x526834=await fetch(API_BASE+'/external-skills/registry');if(!_0x526834['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x526834['statusText']);return await _0x526834['json']();},async 'importCatalogSkill'(_0x47d41a){const _0x4ea4b2=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x47d41a})});if(!_0x4ea4b2['ok']){const _0x5439ff=await _0x4ea4b2['json']()['catch'](()=>({'error':_0x4ea4b2['statusText']})),_0x3d33c7=new Error(_0x5439ff['error']||_0x5439ff['message']||_0x4ea4b2['statusText']);if(_0x5439ff['detail']!==undefined)_0x3d33c7['detail']=_0x5439ff['detail'];throw _0x3d33c7;}return await _0x4ea4b2['json']();},async 'importSkillFromGit'(_0x373771,_0x100e1f,_0x2d4d78='main',_0x296925=null){const _0x587abe=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x373771,'skillPath':_0x100e1f,'branch':_0x2d4d78,'skillId':_0x296925})});if(!_0x587abe['ok']){const _0x331041=await _0x587abe['json']()['catch'](()=>({'error':_0x587abe['statusText']})),_0x29cbbb=new Error(_0x331041['error']||_0x331041['message']||_0x587abe['statusText']);if(_0x331041['detail']!==undefined)_0x29cbbb['detail']=_0x331041['detail'];throw _0x29cbbb;}return await _0x587abe['json']();},async 'probeMarketplace'(_0x41b634,_0x4f2e36='main'){const _0x4e4749=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x41b634,'branch':_0x4f2e36})});if(!_0x4e4749['ok']){const _0x6b1a15=await _0x4e4749['json']()['catch'](()=>({'error':_0x4e4749['statusText']})),_0x2ac5ce=new Error(_0x6b1a15['error']||_0x6b1a15['message']||_0x4e4749['statusText']);if(_0x6b1a15['detail']!==undefined)_0x2ac5ce['detail']=_0x6b1a15['detail'];throw _0x2ac5ce;}return await _0x4e4749['json']();},async 'importMarketplaceBundle'(_0x4f8393,_0x4add69,_0x73ef87,_0x47f512=null){const _0xd89374=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4f8393,'branch':_0x4add69,'bundleId':_0x73ef87,'selectedSkills':_0x47f512})});if(!_0xd89374['ok']){const _0x45bd8a=await _0xd89374['json']()['catch'](()=>({'error':_0xd89374['statusText']})),_0x2870c1=new Error(_0x45bd8a['error']||_0x45bd8a['message']||_0xd89374['statusText']);if(_0x45bd8a['detail']!==undefined)_0x2870c1['detail']=_0x45bd8a['detail'];throw _0x2870c1;}return await _0xd89374['json']();},async 'importSkillFromFolder'(_0x5947dd,_0x34fc25=null){const _0x5dfce7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x5947dd,'skillId':_0x34fc25})});if(!_0x5dfce7['ok']){const _0x2d53d5=await _0x5dfce7['json']()['catch'](()=>({'error':_0x5dfce7['statusText']})),_0x1f40b7=new Error(_0x2d53d5['error']||_0x2d53d5['message']||_0x5dfce7['statusText']);if(_0x2d53d5['detail']!==undefined)_0x1f40b7['detail']=_0x2d53d5['detail'];throw _0x1f40b7;}return await _0x5dfce7['json']();},async 'importSkillFromNpm'(_0x24411,_0x1b00da='latest',_0x34e1db=null,_0x4f7da6=null){const _0x1668d5=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x24411,'version':_0x1b00da,'skillId':_0x34e1db,'registry':_0x4f7da6})});if(!_0x1668d5['ok']){const _0x2c62e4=await _0x1668d5['json']()['catch'](()=>({'error':_0x1668d5['statusText']})),_0x5be4f9=new Error(_0x2c62e4['error']||_0x2c62e4['message']||_0x1668d5['statusText']);if(_0x2c62e4['detail']!==undefined)_0x5be4f9['detail']=_0x2c62e4['detail'];throw _0x5be4f9;}return await _0x1668d5['json']();},async 'checkSkillUpdates'(_0x514a2f){const _0x31b305=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x514a2f)+'/check-updates',{'method':'POST'});if(!_0x31b305['ok']){const _0x5a3d96=await _0x31b305['json']()['catch'](()=>({'error':_0x31b305['statusText']})),_0x24c296=new Error(_0x5a3d96['error']||_0x5a3d96['message']||_0x31b305['statusText']);if(_0x5a3d96['detail']!==undefined)_0x24c296['detail']=_0x5a3d96['detail'];throw _0x24c296;}return await _0x31b305['json']();},async 'updateExternalSkill'(_0x1652e5){const _0x534e42=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1652e5)+'/update',{'method':'POST'});if(!_0x534e42['ok']){const _0x17a201=await _0x534e42['json']()['catch'](()=>({'error':_0x534e42['statusText']})),_0x20309c=new Error(_0x17a201['error']||_0x17a201['message']||_0x534e42['statusText']);if(_0x17a201['detail']!==undefined)_0x20309c['detail']=_0x17a201['detail'];throw _0x20309c;}return await _0x534e42['json']();},async 'updateSkillFlags'(_0x467dda,_0x2789b2){const _0x41e8eb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x467dda)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x2789b2})});if(!_0x41e8eb['ok']){const _0x178fec=await _0x41e8eb['json']()['catch'](()=>({'error':_0x41e8eb['statusText']})),_0x23ad42=new Error(_0x178fec['error']||_0x178fec['message']||_0x41e8eb['statusText']);if(_0x178fec['detail']!==undefined)_0x23ad42['detail']=_0x178fec['detail'];throw _0x23ad42;}return await _0x41e8eb['json']();},async 'removeFromImportedRegistry'(_0x102544){const _0x4ffb23=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x102544)+'/registry',{'method':'DELETE'});if(!_0x4ffb23['ok']){const _0x2aea81=await _0x4ffb23['json']()['catch'](()=>({'error':_0x4ffb23['statusText']})),_0x2fc942=new Error(_0x2aea81['error']||_0x2aea81['message']||_0x4ffb23['statusText']);if(_0x2aea81['detail']!==undefined)_0x2fc942['detail']=_0x2aea81['detail'];throw _0x2fc942;}return await _0x4ffb23['json']();},async 'getTeams'(){const _0x2a5468=await fetch(API_BASE+'/teams');if(!_0x2a5468['ok']){const _0x54a9f2=await _0x2a5468['json']()['catch'](()=>({'message':_0x2a5468['statusText']}));throw new Error(_0x54a9f2['message']||'Failed\x20to\x20get\x20teams');}return await _0x2a5468['json']();},async 'getTeam'(_0x296583){const _0x65b182=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x296583));if(!_0x65b182['ok']){const _0x46fd80=await _0x65b182['json']()['catch'](()=>({'message':_0x65b182['statusText']}));throw new Error(_0x46fd80['message']||'Failed\x20to\x20get\x20team');}return await _0x65b182['json']();},async 'createTeam'(_0x31dbff){const _0x575781=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31dbff)});if(!_0x575781['ok']){const _0x157a96=await _0x575781['json']()['catch'](()=>({'message':_0x575781['statusText']}));throw new Error(_0x157a96['message']||'Failed\x20to\x20create\x20team');}return await _0x575781['json']();},async 'updateTeam'(_0x56d781,_0x21d1a8){const _0x5e9b79=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x56d781),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21d1a8)});if(!_0x5e9b79['ok']){const _0x4dfb18=await _0x5e9b79['json']()['catch'](()=>({'message':_0x5e9b79['statusText']}));throw new Error(_0x4dfb18['message']||'Failed\x20to\x20update\x20team');}return await _0x5e9b79['json']();},async 'deleteTeam'(_0x285605){const _0x10af48=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x285605),{'method':'DELETE'});if(!_0x10af48['ok']){const _0x4e8537=await _0x10af48['json']()['catch'](()=>({'message':_0x10af48['statusText']}));throw new Error(_0x4e8537['message']||'Failed\x20to\x20delete\x20team');}return await _0x10af48['json']();},async 'addTeamMember'(_0x14d4f4,_0x13f34f){const _0x5d00ec=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x14d4f4)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x13f34f})});if(!_0x5d00ec['ok']){const _0x218f0d=await _0x5d00ec['json']()['catch'](()=>({'message':_0x5d00ec['statusText']}));throw new Error(_0x218f0d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5d00ec['json']();},async 'removeTeamMember'(_0x4964a1,_0x1cc0e4){const _0x2f6674=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4964a1)+'/members/'+encodeURIComponent(_0x1cc0e4),{'method':'DELETE'});if(!_0x2f6674['ok']){const _0x3e5908=await _0x2f6674['json']()['catch'](()=>({'message':_0x2f6674['statusText']}));throw new Error(_0x3e5908['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x2f6674['json']();},async 'getBindings'(_0x1e1ddb={}){const _0x3afedf=new URLSearchParams();if(_0x1e1ddb['resource_type'])_0x3afedf['set']('resource_type',_0x1e1ddb['resource_type']);if(_0x1e1ddb['resource_id'])_0x3afedf['set']('resource_id',_0x1e1ddb['resource_id']);if(_0x1e1ddb['subject_type'])_0x3afedf['set']('subject_type',_0x1e1ddb['subject_type']);if(_0x1e1ddb['subject_id'])_0x3afedf['set']('subject_id',_0x1e1ddb['subject_id']);const _0x2299fa=_0x3afedf['toString'](),_0x274a00=await fetch(API_BASE+'/bindings'+(_0x2299fa?'?'+_0x2299fa:''));if(!_0x274a00['ok']){const _0x3d6c6d=await _0x274a00['json']()['catch'](()=>({'message':_0x274a00['statusText']}));throw new Error(_0x3d6c6d['message']||'Failed\x20to\x20get\x20bindings');}return await _0x274a00['json']();},async 'createBinding'(_0x576abf){const _0x1dae5c=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x576abf)});if(!_0x1dae5c['ok']){const _0xaffd24=await _0x1dae5c['json']()['catch'](()=>({'message':_0x1dae5c['statusText']}));throw new Error(_0xaffd24['message']||'Failed\x20to\x20create\x20binding');}return await _0x1dae5c['json']();},async 'updateBinding'(_0x11c1da,_0x5040a9){const _0x2b5cf9=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x11c1da),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5040a9)});if(!_0x2b5cf9['ok']){const _0x21557f=await _0x2b5cf9['json']()['catch'](()=>({'message':_0x2b5cf9['statusText']}));throw new Error(_0x21557f['message']||'Failed\x20to\x20update\x20binding');}return await _0x2b5cf9['json']();},async 'deleteBinding'(_0x759586){const _0x4b431e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x759586),{'method':'DELETE'});if(!_0x4b431e['ok']){const _0x4d4778=await _0x4b431e['json']()['catch'](()=>({'message':_0x4b431e['statusText']}));throw new Error(_0x4d4778['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4b431e['json']();},async 'getRoleDefinitions'(){const _0x2b37e6=await fetch(API_BASE+'/roles');if(!_0x2b37e6['ok']){const _0x5376f5=await _0x2b37e6['json']()['catch'](()=>({'message':_0x2b37e6['statusText']}));throw new Error(_0x5376f5['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2b37e6['json']();},async 'getRoleDefinition'(_0x2b37ae){const _0x249b6d=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2b37ae));if(!_0x249b6d['ok']){const _0x4ef403=await _0x249b6d['json']()['catch'](()=>({'message':_0x249b6d['statusText']}));throw new Error(_0x4ef403['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x249b6d['json']();},async 'createRoleDefinition'(_0x35cd2a){const _0x4d06c7=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x35cd2a)});if(!_0x4d06c7['ok']){const _0x3d6ac7=await _0x4d06c7['json']()['catch'](()=>({'message':_0x4d06c7['statusText']}));throw new Error(_0x3d6ac7['message']||_0x3d6ac7['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x4d06c7['json']();},async 'updateRoleDefinition'(_0x263623,_0x3acc2c){const _0x3666f0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x263623),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3acc2c)});if(!_0x3666f0['ok']){const _0x2b6d5a=await _0x3666f0['json']()['catch'](()=>({'message':_0x3666f0['statusText']}));throw new Error(_0x2b6d5a['message']||_0x2b6d5a['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x3666f0['json']();},async 'deleteRoleDefinition'(_0x425485){const _0x3e850c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x425485),{'method':'DELETE'});if(!_0x3e850c['ok']){const _0x1da0ce=await _0x3e850c['json']()['catch'](()=>({'message':_0x3e850c['statusText']}));throw new Error(_0x1da0ce['message']||_0x1da0ce['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x3e850c['json']();},async 'getAvailablePermissions'(){const _0x4b5cee=await fetch(API_BASE+'/roles/available-permissions');if(!_0x4b5cee['ok']){const _0xeba6a7=await _0x4b5cee['json']()['catch'](()=>({'message':_0x4b5cee['statusText']}));throw new Error(_0xeba6a7['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x4b5cee['json']();},async 'getGitProviderAllowedTeams'(_0x2c567c){const _0x427974=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2c567c)+'/allowed-teams');if(!_0x427974['ok']){const _0x1b4f2d=await _0x427974['json']()['catch'](()=>({'message':_0x427974['statusText']}));throw new Error(_0x1b4f2d['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x427974['json']();},async 'setGitProviderAllowedTeams'(_0x513d2c,_0x32437e){const _0x495ed0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x513d2c)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x32437e})});if(!_0x495ed0['ok']){const _0xad2c72=await _0x495ed0['json']()['catch'](()=>({'message':_0x495ed0['statusText']}));throw new Error(_0xad2c72['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x495ed0['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 _0xcbf650=toastState['baseBottom'];toastState['toasts']['forEach'](_0x49424d=>{_0x49424d['el']['style']['bottom']=_0xcbf650+'px';const _0x1bfed0=_0x49424d['el']['offsetHeight']||toastState['defaultHeight'];_0xcbf650+=_0x1bfed0+toastState['gap'];});});}function removeToastById(_0x1c6752){const _0x4519f5=toastState['toasts']['findIndex'](_0x94ca65=>_0x94ca65['id']===_0x1c6752);if(_0x4519f5===-0x1)return;const _0x50b5d4=toastState['toasts'][_0x4519f5];if(_0x50b5d4['timeoutId'])clearTimeout(_0x50b5d4['timeoutId']);_0x50b5d4['el']['classList']['remove']('show'),setTimeout(()=>_0x50b5d4['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4519f5,0x1),repositionAllToasts();}function registerToast(_0x218f78){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x218f78),repositionAllToasts(),_0x218f78['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(_0x5399b0){if(_0x5399b0===null||_0x5399b0===undefined)return'';return String(_0x5399b0)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x244dc4,_0x228e85){if(_0x244dc4&&typeof _0x244dc4==='object'&&!Array['isArray'](_0x244dc4))return{'code':typeof _0x244dc4['text']==='string'?_0x244dc4['text']:'','language':typeof _0x244dc4['lang']==='string'?_0x244dc4['lang']:''};return{'code':typeof _0x244dc4==='string'?_0x244dc4:'','language':typeof _0x228e85==='string'?_0x228e85:''};}function buildMermaidBlock(_0x12875a){const _0x4c0772=String(_0x12875a||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4c0772))+'\x22>'+escapeHtmlValue(_0x4c0772)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x564015=new marked['Renderer'](),_0x4be9f6=_0x564015['code']['bind'](_0x564015);return _0x564015['code']=function(_0x566d66,_0x5c8910,..._0x2515da){const {code:_0x515e44,language:_0x1d9a71}=getMarkdownCodeBlockPayload(_0x566d66,_0x5c8910),_0x5dc6f3=String(_0x1d9a71||'')['trim']()['toLowerCase']();if(_0x5dc6f3==='mermaid')return buildMermaidBlock(_0x515e44);const _0x42200e=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x42200e&&_0x5dc6f3)try{const _0x5be91e=_0x42200e['getLanguage'](_0x5dc6f3)?_0x5dc6f3:'plaintext',_0xbcb9a2=_0x42200e['highlight'](_0x515e44,{'language':_0x5be91e})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x5dc6f3)+'\x22>'+_0xbcb9a2+'</code></pre>';}catch(_0x26e8aa){console['error']('Syntax\x20highlighting\x20error:',_0x26e8aa);}return _0x4be9f6(_0x566d66,_0x5c8910,..._0x2515da);},sharedMarkedRenderer=_0x564015,_0x564015;}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 _0x169a24=window['mermaid'];if(!_0x169a24||typeof _0x169a24['initialize']!=='function')return _0x169a24||null;return _0x169a24['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x169a24;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x199a2d,_0x44e905)=>{const _0x158321=()=>_0x199a2d(configureMermaidInstance()),_0x1b35c8=()=>{mermaidLoadPromise=null,_0x44e905(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x36452e=document['getElementById'](MERMAID_SCRIPT_ID);!_0x36452e&&(_0x36452e=document['createElement']('script'),_0x36452e['id']=MERMAID_SCRIPT_ID,_0x36452e['src']=MERMAID_SCRIPT_SRC,_0x36452e['async']=!![],document['head']['appendChild'](_0x36452e));if(window['mermaid']){_0x158321();return;}_0x36452e['addEventListener']('load',_0x158321,{'once':!![]}),_0x36452e['addEventListener']('error',_0x1b35c8,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x1f7229){const _0x3a4fdc=_0x1f7229['getAttribute']('data-mermaid-source');if(!_0x3a4fdc)return null;let _0x46b69d=_0x3a4fdc;try{_0x46b69d=decodeURIComponent(_0x3a4fdc);}catch{}return _0x1f7229['textContent']=_0x46b69d,_0x1f7229['removeAttribute']('data-processed'),_0x1f7229['removeAttribute']('aria-roledescription'),_0x1f7229['removeAttribute']('role'),_0x1f7229['removeAttribute']('aria-label'),_0x46b69d;}function collectMermaidNodes(_0x3386a6,_0x50c362){if(!(_0x3386a6 instanceof Element))return;_0x3386a6['matches']('.mermaid[data-mermaid-source]')&&_0x50c362['add'](_0x3386a6),_0x3386a6['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4b1dcc=>{_0x50c362['add'](_0x4b1dcc);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3c4555=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xae882f=>setTimeout(_0xae882f,0x0);_0x3c4555(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x2e26a7=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x2e26a7);});});}function queueMermaidRender(_0x58b2e2){const _0x14bdd1=new Set();_0x58b2e2 instanceof Document||_0x58b2e2 instanceof DocumentFragment?_0x58b2e2['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3209ac=>_0x14bdd1['add'](_0x3209ac)):collectMermaidNodes(_0x58b2e2,_0x14bdd1);if(_0x14bdd1['size']===0x0)return;_0x14bdd1['forEach'](_0x52475a=>pendingMermaidNodes['add'](_0x52475a)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5c84bc=Array['from'](pendingMermaidNodes)['filter'](_0x5ee667=>_0x5ee667['isConnected']);pendingMermaidNodes['clear']();if(_0x5c84bc['length']===0x0)return;const _0x25474c=await loadMermaid();if(!_0x25474c)return;configureMermaidInstance();const _0x13385a=getMermaidTheme();for(const _0x863ab8 of _0x5c84bc){const _0x4a2049=_0x863ab8['getAttribute']('data-mermaid-source');if(!_0x4a2049)continue;const _0x30f5f3=_0x863ab8['getAttribute']('data-processed')==='true';if(_0x30f5f3&&_0x863ab8['dataset']['mermaidTheme']===_0x13385a)continue;restoreMermaidSource(_0x863ab8);try{if(typeof _0x25474c['run']==='function')await _0x25474c['run']({'nodes':[_0x863ab8]});else typeof _0x25474c['init']==='function'&&_0x25474c['init'](undefined,[_0x863ab8]);_0x863ab8['dataset']['mermaidTheme']=_0x13385a,delete _0x863ab8['dataset']['mermaidError'];}catch(_0x3e7adf){console['error']('Mermaid\x20render\x20failed:',_0x3e7adf),restoreMermaidSource(_0x863ab8),_0x863ab8['dataset']['mermaidError']='true',delete _0x863ab8['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f195d=>{_0x5f195d['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x5f195d);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4f2b6b=>{_0x4f2b6b['forEach'](_0x55036a=>{_0x55036a['addedNodes']['forEach'](_0x54437a=>{_0x54437a['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x54437a);});});}),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'(_0x19c160){const _0x1da9b0=new Date(_0x19c160),_0x58da7e=new Date(),_0x3c1528=_0x58da7e-_0x1da9b0,_0x2dedd6=Math['floor'](_0x3c1528/0x3e8),_0x226011=Math['floor'](_0x2dedd6/0x3c),_0x51fbcc=Math['floor'](_0x226011/0x3c),_0x582963=Math['floor'](_0x51fbcc/0x18);if(_0x2dedd6<0x3c)return'now';if(_0x226011<0x3c)return _0x226011+'m\x20ago';if(_0x51fbcc<0x18)return _0x51fbcc+'h\x20ago';return _0x582963+'d\x20ago';},'getStatusIcon'(_0x4297f4){switch(_0x4297f4){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x51d125){switch(_0x51d125){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'(_0x4952da,_0x3ce0b2=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3dcb4c={};_0x3dcb4c['text/plain']=new Blob([_0x4952da],{'type':'text/plain'});_0x3ce0b2&&(_0x3dcb4c['text/html']=new Blob([_0x3ce0b2],{'type':'text/html'}));const _0x3a752d=new ClipboardItem(_0x3dcb4c);return await navigator['clipboard']['write']([_0x3a752d]),!![];}catch(_0xead3a3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xead3a3);}try{const _0x441f07=_0x2e1871=>{_0x2e1871['preventDefault'](),_0x2e1871['clipboardData']['setData']('text/plain',_0x4952da),_0x3ce0b2&&_0x2e1871['clipboardData']['setData']('text/html',_0x3ce0b2);};document['addEventListener']('copy',_0x441f07);const _0x14ece4=document['execCommand']('copy');document['removeEventListener']('copy',_0x441f07);if(_0x14ece4)return!![];}catch(_0x2a86bc){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x2a86bc);}try{const _0x1d0750=document['createElement']('textarea');_0x1d0750['value']=_0x4952da,_0x1d0750['style']['position']='fixed',_0x1d0750['style']['opacity']='0',_0x1d0750['style']['pointerEvents']='none',document['body']['appendChild'](_0x1d0750),_0x1d0750['select']();const _0x1620ef=document['execCommand']('copy');return document['body']['removeChild'](_0x1d0750),_0x1620ef;}catch(_0x1f9317){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1f9317),![];}},'showToast'(_0x27319e,_0x39b559='info'){const _0x4ca84f=getNextToastId(),_0x26f642=document['createElement']('div');_0x26f642['className']='toast\x20toast-'+_0x39b559,_0x26f642['textContent']=_0x27319e,_0x26f642['dataset']['toastId']=_0x4ca84f,document['body']['appendChild'](_0x26f642);const _0x4904bb=_0x39b559==='error'?0x2710:0xbb8,_0x469cef=setTimeout(()=>{removeToastById(_0x4ca84f);},_0x4904bb),_0x47dc28={'id':_0x4ca84f,'el':_0x26f642,'timeoutId':_0x469cef};return registerToast(_0x47dc28),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x26f642['classList']['add']('show');});}),_0x4ca84f;},'showError'(_0x497511){console['error'](_0x497511);const _0x3c6ea0=typeof _0x497511==='string'?_0x497511:_0x497511['message']||'An\x20error\x20occurred';this['showToast'](_0x3c6ea0,'error');},'showSuccess'(_0x3a2d16){this['showToast'](_0x3a2d16,'success');},'capitalize'(_0x5552ee){if(!_0x5552ee)return'';return _0x5552ee['charAt'](0x0)['toUpperCase']()+_0x5552ee['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2bd2a9){return escapeHtmlValue(_0x2bd2a9);},'ansiToHtml'(_0x3f6f49){if(_0x3f6f49===null||_0x3f6f49===undefined)return'';let _0x4a2cc0=this['escapeHtml'](_0x3f6f49);const _0x1c3f7f={'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'},_0x2e3eb5={'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 _0x34e803=0x0;return _0x4a2cc0=_0x4a2cc0['replace'](/\x1b\[([0-9;]*)m/g,(_0x27bbd4,_0x18d804)=>{if(!_0x18d804||_0x18d804==='0'){const _0x11c3a8='</span>'['repeat'](_0x34e803);return _0x34e803=0x0,_0x11c3a8;}const _0x3b6bb7=_0x18d804['split'](';'),_0x467ef6=[];for(const _0x4a2b85 of _0x3b6bb7){if(_0x4a2b85==='1')_0x467ef6['push']('font-weight:bold');else{if(_0x4a2b85==='2')_0x467ef6['push']('opacity:0.7');else{if(_0x4a2b85==='3')_0x467ef6['push']('font-style:italic');else{if(_0x4a2b85==='4')_0x467ef6['push']('text-decoration:underline');else{if(_0x4a2b85==='9')_0x467ef6['push']('text-decoration:line-through');else{if(_0x1c3f7f[_0x4a2b85])_0x467ef6['push']('color:'+_0x1c3f7f[_0x4a2b85]);else{if(_0x2e3eb5[_0x4a2b85])_0x467ef6['push']('background-color:'+_0x2e3eb5[_0x4a2b85]);}}}}}}}if(_0x467ef6['length']>0x0)return _0x34e803++,'<span\x20style=\x22'+_0x467ef6['join'](';')+'\x22>';return'';}),_0x4a2cc0+='</span>'['repeat'](_0x34e803),_0x4a2cc0=_0x4a2cc0['replace'](/\\u001b\[([0-9;]*)m/g,(_0x20ca70,_0x103a7f)=>{if(!_0x103a7f||_0x103a7f==='0')return'';const _0x518665=_0x103a7f['split'](';'),_0x13d138=[];for(const _0x9ea58c of _0x518665){if(_0x9ea58c==='1')_0x13d138['push']('font-weight:bold');else{if(_0x1c3f7f[_0x9ea58c])_0x13d138['push']('color:'+_0x1c3f7f[_0x9ea58c]);else{if(_0x2e3eb5[_0x9ea58c])_0x13d138['push']('background-color:'+_0x2e3eb5[_0x9ea58c]);}}}if(_0x13d138['length']>0x0)return'<span\x20style=\x22'+_0x13d138['join'](';')+'\x22>';return'';}),_0x4a2cc0;},'showModal'({title:_0x1c68fe,content:_0x75ac36,buttons:buttons=[]}){const _0x379731='\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'](_0x1c68fe)+'</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'+_0x75ac36+'\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']((_0x28a897,_0x4e6b14)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x28a897['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x4e6b14+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x28a897['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',_0x34e089=document['createElement']('div');_0x34e089['id']='utils-modal',_0x34e089['className']='modal',_0x34e089['innerHTML']=_0x379731,document['body']['appendChild'](_0x34e089);const _0xb09c24=document['getElementById']('utils-modal-close');_0xb09c24&&_0xb09c24['addEventListener']('click',()=>this['hideModal']());const _0x30d67a=_0x34e089['querySelectorAll']('[data-btn-index]');_0x30d67a['forEach'](_0x2d5790=>{const _0x2c3973=parseInt(_0x2d5790['dataset']['btnIndex']);buttons[_0x2c3973]?.['onClick']&&_0x2d5790['addEventListener']('click',buttons[_0x2c3973]['onClick']);});const _0x505816=document['getElementById']('utils-modal-overlay');_0x505816&&_0x505816['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x45801d=document['getElementById']('utils-modal');_0x45801d&&_0x45801d['remove']();},'parseKeyValuePairs'(_0x46fb5a){const _0x32b81a={};if(!_0x46fb5a)return _0x32b81a;return _0x46fb5a['split'](/\r?\n/)['map'](_0x3a6694=>_0x3a6694['trim']())['filter'](Boolean)['forEach'](_0x38ff95=>{const _0x15741c=_0x38ff95['indexOf']('=');if(_0x15741c>0x0){const _0x2f9fcc=_0x38ff95['slice'](0x0,_0x15741c)['trim'](),_0x2be0de=_0x38ff95['slice'](_0x15741c+0x1)['trim']();if(_0x2f9fcc)_0x32b81a[_0x2f9fcc]=_0x2be0de;}}),_0x32b81a;},'debounce'(_0x59a3c8,_0x22929d=0xfa){let _0x27bc95=null;return(..._0x46fefd)=>{clearTimeout(_0x27bc95),_0x27bc95=setTimeout(()=>_0x59a3c8['apply'](this,_0x46fefd),_0x22929d);};},'formatTimestamp'(_0x87cd){if(!_0x87cd)return'N/A';const _0x389c2c=new Date(_0x87cd);return _0x389c2c['toLocaleDateString']()+'\x20'+_0x389c2c['toLocaleTimeString']();},'getQueryParams'(){const _0x54054f=new URLSearchParams(window['location']['search']),_0x498bc9={};for(const [_0x24c3a3,_0x23a428]of _0x54054f){_0x498bc9[_0x24c3a3]=_0x23a428;}return _0x498bc9;},'formatDuration'(_0x56e9d6,_0x32ad47){if(!_0x56e9d6)return'N/A';const _0x5e5688=new Date(_0x56e9d6),_0x1dd074=_0x32ad47?new Date(_0x32ad47):new Date(),_0x303218=_0x1dd074-_0x5e5688;if(_0x303218<0x0)return'0s';const _0x56dd90=Math['floor'](_0x303218/0x3e8),_0x24f0d3=Math['floor'](_0x56dd90/0x3c),_0x362101=Math['floor'](_0x24f0d3/0x3c),_0x4bbb43=Math['floor'](_0x362101/0x18);if(_0x56dd90<0x3c)return _0x56dd90+'s';if(_0x24f0d3<0x3c)return _0x24f0d3+'m\x20'+_0x56dd90%0x3c+'s';if(_0x362101<0x18)return _0x362101+'h\x20'+_0x24f0d3%0x3c+'m\x20'+_0x56dd90%0x3c+'s';return _0x4bbb43+'d\x20'+_0x362101%0x18+'h\x20'+_0x24f0d3%0x3c+'m';},'renderMarkdown'(_0xa8311a,_0x4d32a8={}){if(!_0xa8311a)return'';_0xa8311a=this['rewriteAttachmentLinks'](_0xa8311a,_0x4d32a8),_0xa8311a=this['rewriteColorSyntax'](_0xa8311a);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0xa8311a,_0x4d32a8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0xa8311a);}catch(_0x5ca3f7){return console['error']('Markdown\x20parsing\x20error:',_0x5ca3f7),this['renderMarkdownFallback'](_0xa8311a,_0x4d32a8);}},'rewriteAttachmentLinks'(_0x1a4fc7,_0x12ba8f={}){const _0x52ae6f=typeof _0x12ba8f['resolveAttachmentUrl']==='function'?_0x12ba8f['resolveAttachmentUrl']:_0x12ba8f['taskId']?_0x429ec1=>API_BASE+'/tasks/'+_0x12ba8f['taskId']+'/attachments/'+encodeURIComponent(_0x429ec1):null;if(!_0x52ae6f)return _0x1a4fc7;return String(_0x1a4fc7)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x50c56b,_0x3f0aa8)=>{const _0x12c9b1=String(_0x3f0aa8||'')['trim']();if(!_0x12c9b1)return _0x50c56b;let _0x4851f6=_0x12c9b1;try{_0x4851f6=decodeURIComponent(_0x12c9b1);}catch{}const _0x1c0270=_0x52ae6f(_0x4851f6);if(!_0x1c0270)return _0x50c56b;return']('+_0x1c0270+')';});},'rewriteColorSyntax'(_0x362c98){if(!_0x362c98)return _0x362c98;return String(_0x362c98)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x40c889,_0x3c8702,_0x416856)=>{const _0x19db5b=this['rewriteColorSyntax'](_0x416856);return'<span\x20style=\x22color:\x20'+_0x3c8702+'\x22>'+_0x19db5b+'</span>';});},'renderMarkdownFallback'(_0x25549,_0x11bd58={}){if(!_0x25549)return'';_0x25549=_0x25549['replace'](/\r\n/g,'\x0a'),_0x25549=_0x25549['replace'](/\r/g,'\x0a'),_0x25549=this['rewriteAttachmentLinks'](_0x25549,_0x11bd58);let _0x56518d=this['escapeHtml'](_0x25549);return _0x56518d=_0x56518d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x56518d=_0x56518d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x56518d=_0x56518d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x56518d=_0x56518d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x56518d=_0x56518d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x56518d=_0x56518d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x56518d=_0x56518d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x56518d=_0x56518d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x56518d=_0x56518d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x56518d=_0x56518d['replace'](/\n\n/g,'</p><p>'),_0x56518d=_0x56518d['replace'](/\n/g,'<br>'),'<p>'+_0x56518d+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3a6084=new Uint8Array(0x10);crypto['getRandomValues'](_0x3a6084),_0x3a6084[0x6]=_0x3a6084[0x6]&0xf|0x40,_0x3a6084[0x8]=_0x3a6084[0x8]&0x3f|0x80;const _0x5639cd=Array['from'](_0x3a6084,_0x526f4c=>_0x526f4c['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5639cd['slice'](0x0,0x8)+'-'+_0x5639cd['slice'](0x8,0xc)+'-'+_0x5639cd['slice'](0xc,0x10)+'-'+_0x5639cd['slice'](0x10,0x14)+'-'+_0x5639cd['slice'](0x14);}};export class CustomSelect{constructor(_0x3b0009,_0x445c16={}){this['nativeSelect']=_0x3b0009,this['options']=_0x445c16,this['isOpen']=![],this['selectedValue']=_0x3b0009['value']||'',this['searchable']=_0x445c16['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x340872=document['createElement']('div');_0x340872['className']='custom-select';const _0x201226=document['createElement']('div');_0x201226['className']='custom-select-trigger',_0x201226['setAttribute']('tabindex','0'),_0x201226['setAttribute']('role','button'),_0x201226['setAttribute']('aria-haspopup','listbox');const _0x5a9053=document['createElement']('span');_0x5a9053['className']='custom-select-trigger-text';const _0x366d87=document['createElement']('span');_0x366d87['className']='custom-select-arrow',_0x366d87['textContent']='▼',_0x201226['appendChild'](_0x5a9053),_0x201226['appendChild'](_0x366d87);const _0xb5033a=document['createElement']('div');_0xb5033a['className']='custom-select-dropdown',_0xb5033a['setAttribute']('role','listbox');if(this['searchable']){const _0x363d71=document['createElement']('div');_0x363d71['className']='custom-select-search';const _0x57200=document['createElement']('input');_0x57200['type']='text',_0x57200['className']='custom-select-search-input',_0x57200['placeholder']='Type\x20to\x20search...',_0x57200['setAttribute']('aria-label','Search\x20options'),_0x57200['addEventListener']('input',_0x824ff5=>{this['searchQuery']=_0x824ff5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x57200['addEventListener']('keydown',_0x4bf0cd=>{if(_0x4bf0cd['key']==='Escape')_0x4bf0cd['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x4bf0cd['key']==='Enter'){_0x4bf0cd['preventDefault'](),_0x4bf0cd['stopPropagation']();const _0x595bc4=_0xb5033a['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x595bc4){const _0x11f34f=_0x595bc4['getAttribute']('data-value');this['select'](_0x11f34f);}}}}),_0x363d71['appendChild'](_0x57200),_0xb5033a['appendChild'](_0x363d71),this['searchInput']=_0x57200;}const _0x3d4dd5=document['createElement']('div');_0x3d4dd5['className']='custom-select-options',_0xb5033a['appendChild'](_0x3d4dd5),_0x340872['appendChild'](_0x201226),_0x340872['appendChild'](_0xb5033a),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x340872,this['nativeSelect']),this['wrapper']=_0x340872,this['trigger']=_0x201226,this['triggerText']=_0x5a9053,this['dropdown']=_0xb5033a,this['optionsContainer']=_0x3d4dd5,_0x201226['addEventListener']('click',()=>this['toggle']()),_0x201226['addEventListener']('keydown',_0x20c760=>this['handleKeydown'](_0x20c760)),document['addEventListener']('click',_0x459774=>{!_0x340872['contains'](_0x459774['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4dbe4c=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4dbe4c['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2f712b=new MutationObserver(()=>{this['updateDisabledState']();});_0x2f712b['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x4ecf03=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x4ecf03['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x416f08=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x416f08),this['trigger']['setAttribute']('aria-disabled',_0x416f08?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x416f08?'-1':'0'),_0x416f08&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x166017=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5a27f9=_0x166017['filter'](_0x12f2ba=>!_0x12f2ba['disabled']&&!_0x12f2ba['hidden']);_0x166017['forEach']((_0x399fa8,_0x16d181)=>{const _0x4e9c02=document['createElement']('div');_0x4e9c02['className']='custom-select-option',_0x4e9c02['textContent']=_0x399fa8['textContent'],_0x4e9c02['setAttribute']('data-value',_0x399fa8['value']),_0x4e9c02['setAttribute']('data-index',_0x16d181),_0x4e9c02['setAttribute']('role','option'),_0x399fa8['disabled']?_0x4e9c02['classList']['add']('disabled'):_0x4e9c02['addEventListener']('click',()=>this['select'](_0x399fa8['value'])),_0x399fa8['value']===this['selectedValue']&&_0x4e9c02['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4e9c02),this['allOptions']['push']({'element':_0x4e9c02,'text':_0x399fa8['textContent']['toLowerCase'](),'value':_0x399fa8['value'],'disabled':_0x399fa8['disabled']});});if(this['searchable']&&this['searchInput']){const _0x420145=this['searchInput']['parentElement'];_0x5a27f9['length']>0x3?_0x420145['style']['display']='':_0x420145['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x17cdd7=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x8c447d=>{if(!_0x17cdd7||_0x8c447d['disabled'])_0x8c447d['element']['style']['display']='';else{const _0x485513=_0x8c447d['text']['includes'](_0x17cdd7);_0x8c447d['element']['style']['display']=_0x485513?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x1482bc){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x1482bc,this['nativeSelect']['value']=_0x1482bc;const _0x2a9537=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2a9537),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x512bb6=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x512bb6&&(this['triggerText']['textContent']=_0x512bb6['textContent'],_0x512bb6['disabled']||_0x512bb6['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4bdc23=>{_0x4bdc23['getAttribute']('data-value')===this['selectedValue']?_0x4bdc23['classList']['add']('selected'):_0x4bdc23['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 _0x8f5cb6=window['getComputedStyle'](this['dropdown']);if(_0x8f5cb6['position']==='fixed'){const _0x319535=this['trigger']['getBoundingClientRect'](),_0x43e454=parseInt(_0x8f5cb6['maxHeight'])||0xc8,_0xd7671=window['innerHeight'],_0x18d226=_0xd7671-_0x319535['bottom'],_0xb7d9dd=_0x319535['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3941e8;_0x18d226<_0x43e454&&_0xb7d9dd>_0x18d226?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xd7671-_0x319535['top']+'px',_0x3941e8=Math['min'](_0x43e454,_0xb7d9dd-0xa),this['dropdown']['style']['maxHeight']=_0x3941e8+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x319535['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3941e8=Math['min'](_0x43e454,_0x18d226-0xa),this['dropdown']['style']['maxHeight']=_0x3941e8+'px');if(this['optionsContainer']){let _0x4967a0=_0x3941e8;if(this['searchInput']){const _0x2fe5c9=this['searchInput']['parentElement'];_0x2fe5c9&&(_0x4967a0-=_0x2fe5c9['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4967a0)+'px';}this['dropdown']['style']['left']=_0x319535['left']+'px',this['dropdown']['style']['width']=_0x319535['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xd9ad65=this['searchInput']['parentElement'];_0xd9ad65&&_0xd9ad65['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'](_0x4ddd8b){if(this['nativeSelect']['disabled'])return;if(_0x4ddd8b['key']==='Enter'||_0x4ddd8b['key']==='\x20')_0x4ddd8b['preventDefault'](),this['toggle']();else _0x4ddd8b['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x17e225='\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',_0x17e225),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5acd0a=document['getElementById']('confirm-dialog-close'),_0x1a0eae=document['getElementById']('confirm-dialog-cancel'),_0x153605=document['getElementById']('confirm-dialog-confirm'),_0x2c2e70=this['_modal']['querySelector']('.modal-overlay');_0x5acd0a['addEventListener']('click',()=>this['_resolve'](![])),_0x1a0eae['addEventListener']('click',()=>this['_resolve'](![])),_0x153605['addEventListener']('click',()=>this['_resolve'](!![])),_0x2c2e70['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1262c2=>{if(_0x1262c2['key']==='Escape')_0x1262c2['preventDefault'](),this['_resolve'](![]);else _0x1262c2['key']==='Enter'&&(_0x1262c2['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x20f4f9,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x4c2d41=>{this['_resolvePromise']=_0x4c2d41,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x20f4f9;const _0x2874f4=document['getElementById']('confirm-dialog-cancel'),_0xe497bb=document['getElementById']('confirm-dialog-confirm');_0x2874f4['textContent']=cancelText,_0xe497bb['textContent']=confirmText,_0xe497bb['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xe497bb['focus']();});},'_resolve'(_0xda58ec){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0xda58ec),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3d9a8b,_0x29783b={}){this['container']=_0x3d9a8b,this['options']={'placeholder':_0x29783b['placeholder']||'Type\x20to\x20search...','maxItems':_0x29783b['maxItems']||0x64,'loadItems':_0x29783b['loadItems']||(async()=>[]),'renderItem':_0x29783b['renderItem']||(_0x322064=>({'primary':String(_0x322064),'secondary':''})),'onSelect':_0x29783b['onSelect']||(()=>{}),'filterItems':_0x29783b['filterItems']||null,'getItemValue':_0x29783b['getItemValue']||(_0x1d4826=>_0x1d4826),'sortItems':_0x29783b['sortItems']||null,'debounceMs':_0x29783b['debounceMs']||0xc8,'minCharsForSearch':_0x29783b['minCharsForSearch']||0x0,'emptyMessage':_0x29783b['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x29783b['loadingMessage']||'Loading...','preload':_0x29783b['preload']!==![],'searchMode':_0x29783b['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',_0x18c30f=>this['onBlur'](_0x18c30f)),this['input']['addEventListener']('input',_0xbc4501=>this['onInput'](_0xbc4501)),this['input']['addEventListener']('keydown',_0xcf54a1=>this['onKeydown'](_0xcf54a1)),this['clearBtn']['addEventListener']('mousedown',_0x32c933=>{_0x32c933['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x5389d0=>{_0x5389d0['preventDefault']();}),document['addEventListener']('click',_0x4483b0=>{!this['wrapper']['contains'](_0x4483b0['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(_0x510087){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x510087);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x364b09){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x24e35b){const _0x5e9ffd=_0x24e35b['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5e9ffd);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5e9ffd):this['loadAndShow'](_0x5e9ffd);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x77f2c3){switch(_0x77f2c3['key']){case'ArrowDown':_0x77f2c3['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x77f2c3['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x77f2c3['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x77f2c3['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x587b16){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x40a936=this['selectedIndex']+_0x587b16;if(_0x40a936>=0x0&&_0x40a936<this['filteredItems']['length']){this['selectedIndex']=_0x40a936,this['updateSelectionHighlight']();const _0xb8c7e5=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0xb8c7e5[this['selectedIndex']]&&_0xb8c7e5[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x357254=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x357254['forEach']((_0x473ab6,_0xd08a85)=>{_0x473ab6['classList']['toggle']('keyboard-selected',_0xd08a85===this['selectedIndex']);});}async['loadAndShow'](_0x2addf7){this['showLoading']();try{const _0x1de7e7=await this['options']['loadItems'](_0x2addf7);if(this['options']['searchMode']==='server'){let _0x4d1277=_0x1de7e7;this['options']['sortItems']&&(_0x4d1277=this['options']['sortItems']([..._0x1de7e7]));this['filteredItems']=_0x4d1277;const _0x549265=this['filteredItems']['length']>=this['options']['maxItems'];_0x549265&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x549265),this['open']();}else this['allItems']=_0x1de7e7,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2addf7);}catch(_0x5eac9c){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x5eac9c),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3f3ea2){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3f3ea2):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2a3f64=this['filteredItems']['length']>=this['options']['maxItems'];_0x2a3f64&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2a3f64),this['open']();}['renderItems'](_0x2fcd0d){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']((_0x38dad8,_0x4b17d9)=>{const _0x89b3f0=document['createElement']('div');_0x89b3f0['className']='autocomplete-select-item',_0x89b3f0['setAttribute']('role','option'),_0x89b3f0['setAttribute']('data-index',_0x4b17d9);const _0x45d2e8=this['options']['renderItem'](_0x38dad8);let _0x5a1d60='';_0x45d2e8['icon']&&(_0x5a1d60='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x45d2e8['iconClass']||'')+'\x22>'+_0x45d2e8['icon']+'</span>'),_0x89b3f0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5a1d60+'\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'](_0x45d2e8['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x45d2e8['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x45d2e8['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x89b3f0['addEventListener']('click',()=>{this['selectItem'](_0x38dad8);}),_0x89b3f0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4b17d9,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x89b3f0);}),_0x2fcd0d?(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'](_0x178212){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x178212)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2d57a7){this['selectedItem']=_0x2d57a7;const _0x3f9ed4=this['options']['renderItem'](_0x2d57a7);this['input']['value']=_0x3f9ed4['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2d57a7);}['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'](_0x36842b){if(_0x36842b){this['selectedItem']=_0x36842b;const _0x1829fc=this['options']['renderItem'](_0x36842b);this['input']['value']=_0x1829fc['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1b5924){this['allItems']=_0x1b5924,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'](_0x429b15){this['input']['placeholder']=_0x429b15;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x5a452b=null){const _0x145e06=document['getElementById']('admin-menu-container'),_0x6aaa3d=document['getElementById']('admin-menu-btn'),_0x2c4c7f=document['getElementById']('admin-menu');if(!_0x145e06||!_0x6aaa3d||!_0x2c4c7f)return;try{!_0x5a452b&&(_0x5a452b=await API['getCurrentUser']());if(_0x5a452b){const _0x3d2f9d=window['Permissions'],_0x464e69=_0x3d2f9d['hasServerPermission'](_0x5a452b,'*')||_0x3d2f9d['hasEnvPermission'](_0x5a452b,'environments:manage')||_0x3d2f9d['hasServerPermission'](_0x5a452b,'users:create')||_0x3d2f9d['hasTeamPermission'](_0x5a452b,'teams:manage')||_0x3d2f9d['hasEnvPermission'](_0x5a452b,'environments:view_details');if(!_0x464e69)return;_0x145e06['hidden']=![];if(!_0x3d2f9d['hasServerPermission'](_0x5a452b,'*')){const _0x341ce0=_0x2c4c7f['querySelectorAll']('.admin-menu-item');_0x341ce0['forEach'](_0x5c8ee4=>{const _0x87c0be=_0x5c8ee4['querySelector']('.option-text')?.['textContent']?.['trim']();_0x87c0be==='Users'&&!_0x3d2f9d['hasServerPermission'](_0x5a452b,'users:create')&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Skills'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Server\x20Settings'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Server\x20Administration'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Git\x20History'&&(_0x5c8ee4['hidden']=!![]),_0x87c0be==='Roles'&&(_0x5c8ee4['hidden']=!![]);});}_0x6aaa3d['addEventListener']('click',_0x4e5a33=>{_0x4e5a33['stopPropagation']();const _0x19b6be=document['getElementById']('actions-menu');if(_0x19b6be)_0x19b6be['hidden']=!![];_0x2c4c7f['hidden']=!_0x2c4c7f['hidden'];}),document['addEventListener']('click',_0x575baf=>{!_0x2c4c7f['hidden']&&!_0x6aaa3d['contains'](_0x575baf['target'])&&!_0x2c4c7f['contains'](_0x575baf['target'])&&(_0x2c4c7f['hidden']=!![]);}),document['addEventListener']('keydown',_0x34e8b7=>{_0x34e8b7['key']==='Escape'&&!_0x2c4c7f['hidden']&&(_0x2c4c7f['hidden']=!![]);});}}catch(_0x1d608c){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1d608c['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 _0x53289e=window['location']['pathname'],_0x1fc754=_0x53289e['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1fc754)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1fc754[0x1]),_0x1fc754[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4225c0={}){const _0x3ba4e8=new URLSearchParams();_0x4225c0['userId']&&_0x3ba4e8['set']('userId',String(_0x4225c0['userId']));_0x4225c0['automation']&&_0x3ba4e8['set']('automation',String(_0x4225c0['automation']));const _0x2d6e6d=API_BASE+'/tasks/stats'+(_0x3ba4e8['toString']()?'?'+_0x3ba4e8['toString']():''),_0x41d610=await fetch(_0x2d6e6d);if(!_0x41d610['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x41d610['statusText']);return await _0x41d610['json']();},async 'getTasks'(_0x11e500={}){const _0x180179=new URLSearchParams();_0x11e500['status']&&_0x180179['set']('status',String(_0x11e500['status']));_0x11e500['environment']&&_0x180179['set']('environment',String(_0x11e500['environment']));_0x11e500['automation']&&_0x180179['set']('automation',String(_0x11e500['automation']));if(_0x11e500['include']){const _0x12b43f=Array['isArray'](_0x11e500['include'])?_0x11e500['include']['join'](','):String(_0x11e500['include']);_0x12b43f&&_0x180179['set']('include',_0x12b43f);}_0x11e500['filter']&&_0x180179['set']('filter',String(_0x11e500['filter']));_0x11e500['page']&&_0x180179['set']('page',String(_0x11e500['page']));_0x11e500['limit']&&_0x180179['set']('limit',String(_0x11e500['limit']));_0x11e500['userId']&&_0x180179['set']('userId',String(_0x11e500['userId']));_0x11e500['search']&&_0x180179['set']('search',String(_0x11e500['search']));_0x11e500['includeChildTasks']&&_0x180179['set']('includeChildTasks','true');const _0x6c20a9=API_BASE+'/tasks'+(_0x180179['toString']()?'?'+_0x180179['toString']():''),_0x2405dd=await fetch(_0x6c20a9);if(!_0x2405dd['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x2405dd['statusText']);return await _0x2405dd['json']();},async 'getAutomations'(_0x34b52b={}){const _0x4da454=new URLSearchParams();_0x34b52b['environment']&&_0x4da454['set']('environment',String(_0x34b52b['environment']));const _0x1b18fb=await fetch(API_BASE+'/api/automations'+(_0x4da454['toString']()?'?'+_0x4da454['toString']():''));if(!_0x1b18fb['ok']){const _0x49ae52=await _0x1b18fb['json']()['catch'](()=>({}));throw new Error(_0x49ae52['message']||_0x49ae52['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x1b18fb['statusText']);}return await _0x1b18fb['json']();},async 'getAutomation'(_0x55ffdc){const _0x548da0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55ffdc));if(!_0x548da0['ok']){const _0x273710=await _0x548da0['json']()['catch'](()=>({}));throw new Error(_0x273710['message']||_0x273710['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x548da0['statusText']);}return await _0x548da0['json']();},async 'createAutomation'(_0x26f46a){const _0x19a7b9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26f46a||{})});if(!_0x19a7b9['ok']){const _0x3999e7=await _0x19a7b9['json']()['catch'](()=>({}));throw new Error(_0x3999e7['message']||_0x3999e7['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x19a7b9['statusText']);}return await _0x19a7b9['json']();},async 'updateAutomation'(_0x1556d0,_0x429b57){const _0x42c5f5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1556d0),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x429b57||{})});if(!_0x42c5f5['ok']){const _0x2a6c87=await _0x42c5f5['json']()['catch'](()=>({}));throw new Error(_0x2a6c87['message']||_0x2a6c87['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x42c5f5['statusText']);}return await _0x42c5f5['json']();},async 'deleteAutomation'(_0x442b38){const _0x104062=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x442b38),{'method':'DELETE'});if(!_0x104062['ok']){const _0x4b0738=await _0x104062['json']()['catch'](()=>({}));throw new Error(_0x4b0738['message']||_0x4b0738['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x104062['statusText']);}return await _0x104062['json']();},async 'triggerAutomation'(_0x1a12e2){const _0x3527c0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1a12e2)+'/trigger',{'method':'POST'});if(!_0x3527c0['ok']){const _0x3be143=await _0x3527c0['json']()['catch'](()=>({}));throw new Error(_0x3be143['message']||_0x3be143['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3527c0['statusText']);}return await _0x3527c0['json']();},async 'setAutomationEnabled'(_0xbd2688,_0x5c5cb4){const _0x312d48=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xbd2688)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5c5cb4})});if(!_0x312d48['ok']){const _0x981cbd=await _0x312d48['json']()['catch'](()=>({}));throw new Error(_0x981cbd['message']||_0x981cbd['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x312d48['statusText']);}return await _0x312d48['json']();},async 'getAutomationHistory'(_0x590dc0,_0x1952c0=0x32){const _0x2db719=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x590dc0)+'/history?limit='+encodeURIComponent(String(_0x1952c0)));if(!_0x2db719['ok']){const _0x1f3b42=await _0x2db719['json']()['catch'](()=>({}));throw new Error(_0x1f3b42['message']||_0x1f3b42['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x2db719['statusText']);}return await _0x2db719['json']();},async 'getTask'(_0x1af208,_0x2d0eb2={}){const _0xb8a014=new URLSearchParams();if(_0x2d0eb2['include']){const _0x3ba907=Array['isArray'](_0x2d0eb2['include'])?_0x2d0eb2['include']['join'](','):String(_0x2d0eb2['include']);if(_0x3ba907)_0xb8a014['set']('include',_0x3ba907);}const _0x1d6f25=await fetch(API_BASE+'/tasks/'+_0x1af208+(_0xb8a014['toString']()?'?'+_0xb8a014['toString']():''));if(!_0x1d6f25['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1d6f25['statusText']);return await _0x1d6f25['json']();},async 'getTaskResults'(_0x5849e8){const _0x483ae5=await fetch(API_BASE+'/tasks/'+_0x5849e8+'/results');if(!_0x483ae5['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x483ae5['statusText']);return await _0x483ae5['json']();},async 'getTaskPatches'(_0x5086ea){const _0x422c49=await fetch(API_BASE+'/tasks/'+_0x5086ea+'/patches');if(!_0x422c49['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x422c49['statusText']);return await _0x422c49['json']();},async 'getTaskAttachments'(_0x9dfeab){const _0x24872b=await fetch(API_BASE+'/tasks/'+_0x9dfeab+'/attachments');if(!_0x24872b['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x24872b['statusText']);return await _0x24872b['json']();},async 'uploadAttachments'(_0x26dce5,_0x2b17fe){const _0x5129d2=new FormData();for(const _0x1a730f of _0x2b17fe){_0x5129d2['append']('attachments',_0x1a730f);}const _0x3f3d49=await fetch(API_BASE+'/tasks/'+_0x26dce5+'/attachments',{'method':'POST','body':_0x5129d2});if(!_0x3f3d49['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3f3d49['statusText']);return await _0x3f3d49['json']();},async 'isAINameGenerationAvailable'(){try{const _0x23e2bb=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x23e2bb['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x23e2bb['json']();}catch(_0x427a01){return{'available':![],'reason':_0x427a01['message']};}},async 'generateTaskName'(_0x464151){try{const _0x593395=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x464151})});return await _0x593395['json']();}catch(_0x973267){return{'success':![],'error':_0x973267['message']};}},async 'createTask'(_0x126f03){let _0x470552,_0x4b106f={};if(_0x126f03['files']&&_0x126f03['files']['length']>0x0){const _0x492695=new FormData();for(const [_0x243b1c,_0x1314e9]of Object['entries'](_0x126f03)){if(_0x243b1c!=='files'){if(_0x1314e9==null)continue;typeof _0x1314e9==='object'?_0x492695['append'](_0x243b1c,JSON['stringify'](_0x1314e9)):_0x492695['append'](_0x243b1c,String(_0x1314e9));}}for(const _0x140737 of _0x126f03['files']){_0x492695['append']('attachments',_0x140737);}_0x470552=_0x492695;}else _0x4b106f['Content-Type']='application/json',_0x470552=JSON['stringify'](_0x126f03);const _0x5a8dd1=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4b106f,'body':_0x470552});if(!_0x5a8dd1['ok']){const _0x465cb0=await _0x5a8dd1['json'](),_0x431ef1=new Error(_0x465cb0['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5a8dd1['statusText']),{message:_0x3b068f,..._0x35a5d2}=_0x465cb0;Object['assign'](_0x431ef1,_0x35a5d2);throw _0x431ef1;}return await _0x5a8dd1['json']();},async 'createTestTask'(_0x3967d9){const _0x59fa=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3967d9)});if(!_0x59fa['ok']){const _0x5a095c=await _0x59fa['json']();throw new Error(_0x5a095c['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x59fa['statusText']);}return await _0x59fa['json']();},async 'createEphemeralTest'(_0x53123e){const _0x2818e1=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53123e)});if(!_0x2818e1['ok']){const _0x19c93d=await _0x2818e1['json']();throw new Error(_0x19c93d['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2818e1['statusText']);}return await _0x2818e1['json']();},async 'createDeployTask'(_0x4e9a35){const _0x1351ed=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e9a35)});if(!_0x1351ed['ok']){const _0x5e911b=await _0x1351ed['json']();throw new Error(_0x5e911b['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x1351ed['statusText']);}return await _0x1351ed['json']();},async 'getEnvironments'(){const _0x16219c=await fetch(API_BASE+'/environments');if(!_0x16219c['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x16219c['statusText']);return await _0x16219c['json']();},async 'getEnvironment'(_0xd021d3){const _0x135ff6=await fetch(API_BASE+'/environments/'+_0xd021d3);if(!_0x135ff6['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x135ff6['statusText']);return await _0x135ff6['json']();},async 'getEnvironmentRepoHistory'(_0x22a3b7,_0x2861d4,_0x247d36={}){if(!_0x22a3b7||!_0x2861d4)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5acdc0=new URLSearchParams();if(_0x247d36['limit'])_0x5acdc0['set']('limit',String(_0x247d36['limit']));if(_0x247d36['offset'])_0x5acdc0['set']('offset',String(_0x247d36['offset']));if(_0x247d36['search'])_0x5acdc0['set']('search',String(_0x247d36['search']));if(_0x247d36['branch'])_0x5acdc0['set']('branch',String(_0x247d36['branch']));const _0x36d983=API_BASE+'/environments/'+encodeURIComponent(_0x22a3b7)+'/repos/'+encodeURIComponent(_0x2861d4)+'/git/history',_0x30d974=await fetch(''+_0x36d983+(_0x5acdc0['toString']()?'?'+_0x5acdc0['toString']():''));if(!_0x30d974['ok']){const _0x5f0796=await _0x30d974['json']()['catch'](()=>({}));throw new Error(_0x5f0796['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x30d974['statusText']);}return await _0x30d974['json']();},async 'getEnvironmentRepoCommit'(_0x164a8a,_0x1cfbe8,_0x757f1){if(!_0x164a8a||!_0x1cfbe8||!_0x757f1)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4020cd=API_BASE+'/environments/'+encodeURIComponent(_0x164a8a)+'/repos/'+encodeURIComponent(_0x1cfbe8)+'/git/commits/'+encodeURIComponent(_0x757f1),_0x3dc8ea=await fetch(_0x4020cd);if(!_0x3dc8ea['ok']){const _0x3d4eec=await _0x3dc8ea['json']()['catch'](()=>({}));throw new Error(_0x3d4eec['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3dc8ea['statusText']);}return await _0x3dc8ea['json']();},async 'getEnvironmentRepoBranches'(_0x253990,_0x5aee2a){if(!_0x253990||!_0x5aee2a)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x34ea14=API_BASE+'/environments/'+encodeURIComponent(_0x253990)+'/repos/'+encodeURIComponent(_0x5aee2a)+'/git/branches',_0x21e8fa=await fetch(_0x34ea14);if(!_0x21e8fa['ok']){const _0x37bd4f=await _0x21e8fa['json']()['catch'](()=>({}));throw new Error(_0x37bd4f['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x21e8fa['statusText']);}return await _0x21e8fa['json']();},async 'revertEnvironmentRepoCommit'(_0x370a23,_0x1adec1,_0xc53163,_0x40ebe6={}){if(!_0x370a23||!_0x1adec1||!_0xc53163)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x248026=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x370a23)+'/repos/'+encodeURIComponent(_0x1adec1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0xc53163,..._0x40ebe6})});if(!_0x248026['ok']){const _0x435f26=await _0x248026['json']()['catch'](()=>({}));throw new Error(_0x435f26['message']||_0x435f26['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x248026['statusText']);}return await _0x248026['json']();},async 'getTemplates'(_0x1c3c1e={}){const _0x3d9f00=new URLSearchParams();if(_0x1c3c1e['include']){const _0x208a4b=Array['isArray'](_0x1c3c1e['include'])?_0x1c3c1e['include']['join'](','):String(_0x1c3c1e['include']);if(_0x208a4b)_0x3d9f00['set']('include',_0x208a4b);}const _0x8f155e=await fetch(API_BASE+'/templates'+(_0x3d9f00['toString']()?'?'+_0x3d9f00['toString']():''));if(!_0x8f155e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x8f155e['statusText']);return await _0x8f155e['json']();},async 'getTemplatesForEnvironment'(_0x5c592b,_0x18d723={}){if(!_0x5c592b)throw new Error('Environment\x20name\x20is\x20required');const _0x4cded4=new URLSearchParams();if(_0x18d723['include']){const _0x281904=Array['isArray'](_0x18d723['include'])?_0x18d723['include']['join'](','):String(_0x18d723['include']);if(_0x281904)_0x4cded4['set']('include',_0x281904);}const _0x323d47=await fetch(API_BASE+'/templates/'+_0x5c592b+(_0x4cded4['toString']()?'?'+_0x4cded4['toString']():''));if(!_0x323d47['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5c592b+':\x20'+_0x323d47['statusText']);return await _0x323d47['json']();},async 'getTemplate'(_0x123764,_0x6cddc0,_0x3232fe={}){if(!_0x123764||!_0x6cddc0)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x1d4f5d=new URLSearchParams();if(_0x3232fe['include']){const _0x4e99c0=Array['isArray'](_0x3232fe['include'])?_0x3232fe['include']['join'](','):String(_0x3232fe['include']);if(_0x4e99c0)_0x1d4f5d['set']('include',_0x4e99c0);}const _0x2a1336=await fetch(API_BASE+'/templates/'+_0x123764+'/'+_0x6cddc0+(_0x1d4f5d['toString']()?'?'+_0x1d4f5d['toString']():''));if(!_0x2a1336['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2a1336['statusText']);return await _0x2a1336['json']();},async 'getTaskLogs'(_0x2cebf0,_0x169caf={}){if(!_0x2cebf0)throw new Error('Task\x20ID\x20is\x20required');const _0x208bbb=new URLSearchParams();_0x169caf['tail']&&_0x208bbb['set']('tail',String(_0x169caf['tail']));const _0x1db1ef=await fetch(API_BASE+'/tasks/'+_0x2cebf0+'/logs'+(_0x208bbb['toString']()?'?'+_0x208bbb['toString']():''));if(!_0x1db1ef['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1db1ef['statusText']);return await _0x1db1ef['text']();},async 'getContainers'(){const _0x3013bd=await fetch(API_BASE+'/containers');if(!_0x3013bd['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x3013bd['statusText']);return await _0x3013bd['json']();},async 'getContainer'(_0x35e48d){const _0xb36253=await fetch(API_BASE+'/containers/'+_0x35e48d);if(!_0xb36253['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0xb36253['statusText']);return await _0xb36253['json']();},async 'startInteractiveContainer'(_0x452527){const _0x2811f3=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x452527)});if(!_0x2811f3['ok']){const _0x25175d=await _0x2811f3['json']()['catch'](()=>({}));throw new Error(_0x25175d['message']||'Failed\x20to\x20start\x20container:\x20'+_0x2811f3['statusText']);}return await _0x2811f3['json']();},async 'startContainerCodeServer'(_0x58716e,_0xb819d6={}){if(!_0x58716e)throw new Error('Container\x20ID\x20is\x20required');const _0x5cf958=new URLSearchParams();_0xb819d6['theme']&&_0x5cf958['set']('theme',_0xb819d6['theme']);const _0x790484=await fetch(API_BASE+'/containers/'+_0x58716e+'/code-server'+(_0x5cf958['toString']()?'?'+_0x5cf958['toString']():'')),_0x1968da=await _0x790484['json']()['catch'](()=>({}));if(!_0x790484['ok'])throw new Error(_0x1968da['message']||_0x1968da['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x790484['statusText']);return _0x1968da;},async 'stopContainer'(_0x67031){const _0x2a1a0f=await fetch(API_BASE+'/containers/'+_0x67031,{'method':'DELETE'});if(!_0x2a1a0f['ok']){const _0x5d32a9=await _0x2a1a0f['json']()['catch'](()=>({}));throw new Error(_0x5d32a9['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x2a1a0f['statusText']);}return await _0x2a1a0f['json']();},async 'stopTask'(_0x2b55f0){if(!_0x2b55f0)throw new Error('Task\x20ID\x20is\x20required');const _0x208c1c=await fetch(API_BASE+'/tasks/'+_0x2b55f0+'/stop',{'method':'POST'});if(!_0x208c1c['ok']){const _0x5c773d=await _0x208c1c['json']()['catch'](()=>({}));throw new Error(_0x5c773d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x208c1c['statusText']);}return await _0x208c1c['json']();},async 'interruptTask'(_0x5077b7){if(!_0x5077b7)throw new Error('Task\x20ID\x20is\x20required');const _0x3ed614=await fetch(API_BASE+'/tasks/'+_0x5077b7+'/interrupt',{'method':'POST'});if(!_0x3ed614['ok']){const _0x201643=await _0x3ed614['json']()['catch'](()=>({}));throw new Error(_0x201643['error']||_0x201643['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x3ed614['statusText']);}return await _0x3ed614['json']();},async 'startTask'(_0x242f9a){if(!_0x242f9a)throw new Error('Task\x20ID\x20is\x20required');const _0x144289=await fetch(API_BASE+'/tasks/'+_0x242f9a+'/start',{'method':'POST'});if(!_0x144289['ok']){const _0x5d1e13=await _0x144289['json']()['catch'](()=>({}));throw new Error(_0x5d1e13['error']||'Failed\x20to\x20start\x20task:\x20'+_0x144289['statusText']);}return await _0x144289['json']();},async 'deleteTask'(_0x3cab86){if(!_0x3cab86)throw new Error('Task\x20ID\x20is\x20required');const _0xa2a87b=await fetch(API_BASE+'/tasks/'+_0x3cab86,{'method':'DELETE'});if(!_0xa2a87b['ok']){const _0x2db07b=await _0xa2a87b['json']()['catch'](()=>({}));throw new Error(_0x2db07b['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xa2a87b['statusText']);}return await _0xa2a87b['json']();},async 'refreshTasksFromDisk'(){const _0x1b4c8f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1b4c8f['ok']){const _0x1ce812=await _0x1b4c8f['json']()['catch'](()=>({}));throw new Error(_0x1ce812['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1b4c8f['statusText']);}return await _0x1b4c8f['json']();},async 'approveTask'(_0x426357,_0x2bd1fa={}){if(!_0x426357)throw new Error('Task\x20ID\x20is\x20required');const _0x4a5280={'commit_message':_0x2bd1fa['commit_message']||'','pull':_0x2bd1fa['pull']??![],'push':_0x2bd1fa['push']??![],'conflict_strategy':_0x2bd1fa['conflict_strategy']||'rebase'};_0x2bd1fa['new_branch']&&(_0x4a5280['new_branch']=_0x2bd1fa['new_branch']);const _0x391269=await fetch(API_BASE+'/tasks/'+_0x426357+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a5280)});if(!_0x391269['ok']){const _0x4a9784=await _0x391269['json']()['catch'](()=>({}));let _0x220d94=_0x4a9784['error']||_0x4a9784['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x391269['statusText'];if(_0x4a9784['results']&&Array['isArray'](_0x4a9784['results'])){const _0x570faf=_0x4a9784['results']['filter'](_0x4b496e=>!_0x4b496e['success']&&_0x4b496e['error']);_0x570faf['length']>0x0&&(_0x220d94=_0x570faf[0x0]['error']);}const _0xbd0e5b=new Error(_0x220d94);_0xbd0e5b['hasConflicts']=_0x4a9784['results']?.['some'](_0x4189fb=>_0x4189fb['conflict'])||![];throw _0xbd0e5b;}return await _0x391269['json']();},async 'getPullRequestInfo'(_0x1a0105){if(!_0x1a0105)throw new Error('Task\x20ID\x20is\x20required');const _0x178287=await fetch(API_BASE+'/tasks/'+_0x1a0105+'/pull-request-info');if(!_0x178287['ok']){const _0x5c738a=await _0x178287['json']()['catch'](()=>({}));throw new Error(_0x5c738a['error']||_0x5c738a['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x178287['statusText']);}return await _0x178287['json']();},async 'createPullRequests'(_0x3db37a,_0x1da76f){if(!_0x3db37a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1da76f||!Array['isArray'](_0x1da76f))throw new Error('repos\x20array\x20is\x20required');const _0x7904c=await fetch(API_BASE+'/tasks/'+_0x3db37a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1da76f})});if(!_0x7904c['ok']){const _0x507a7f=await _0x7904c['json']()['catch'](()=>({}));let _0x22fdb6=_0x507a7f['error']||_0x507a7f['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x7904c['statusText'];if(_0x507a7f['results']&&Array['isArray'](_0x507a7f['results'])){const _0x59aeb0=_0x507a7f['results']['filter'](_0x29e769=>!_0x29e769['success']&&_0x29e769['error']);_0x59aeb0['length']>0x0&&(_0x22fdb6=_0x59aeb0[0x0]['error']);}throw new Error(_0x22fdb6);}return await _0x7904c['json']();},async 'syncRepos'(_0x4a013c){if(!_0x4a013c)throw new Error('Task\x20ID\x20is\x20required');const _0x5962e4=await fetch(API_BASE+'/tasks/'+_0x4a013c+'/sync-repos',{'method':'POST'});if(!_0x5962e4['ok']){const _0x2960e4=await _0x5962e4['json']()['catch'](()=>({}));throw new Error(_0x2960e4['error']||_0x2960e4['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x5962e4['statusText']);}return await _0x5962e4['json']();},async 'getIbmiSyncInfo'(_0x320314){if(!_0x320314)throw new Error('Task\x20ID\x20is\x20required');const _0x50a656=await fetch(API_BASE+'/tasks/'+_0x320314+'/ibmi-sync-info');if(!_0x50a656['ok']){const _0x2c8afb=await _0x50a656['json']()['catch'](()=>({}));throw new Error(_0x2c8afb['error']||_0x2c8afb['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x50a656['json']();},async 'getSyncFiles'(_0x14c30b){if(!_0x14c30b)throw new Error('Task\x20ID\x20is\x20required');const _0xdf7b7a=await fetch(API_BASE+'/tasks/'+_0x14c30b+'/sync-to-ibmi/files');if(!_0xdf7b7a['ok']){const _0x26f4f4=await _0xdf7b7a['json']()['catch'](()=>({}));throw new Error(_0x26f4f4['error']||_0x26f4f4['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0xdf7b7a['json']();},async 'syncToIbmi'(_0x23bcc5,_0x1d04a8,_0x4befbe=null,_0x3bb7c7=null,_0x4574db=null){if(!_0x23bcc5)throw new Error('Task\x20ID\x20is\x20required');const _0x4ee7bb={'library':_0x1d04a8};if(_0x4befbe)_0x4ee7bb['user']=_0x4befbe;if(_0x3bb7c7)_0x4ee7bb['password']=_0x3bb7c7;if(_0x4574db)_0x4ee7bb['files']=_0x4574db;const _0x2c4176=await fetch(API_BASE+'/tasks/'+_0x23bcc5+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4ee7bb)});if(!_0x2c4176['ok']){const _0x47771a=await _0x2c4176['json']()['catch'](()=>({}));throw new Error(_0x47771a['error']||_0x47771a['message']||'Sync\x20failed');}return await _0x2c4176['json']();},async 'getIbmiSyncLog'(_0x4474a1){if(!_0x4474a1)throw new Error('Task\x20ID\x20is\x20required');const _0x482ebc=await fetch(API_BASE+'/tasks/'+_0x4474a1+'/ibmi-sync-log');if(!_0x482ebc['ok']){const _0x24676b=await _0x482ebc['json']()['catch'](()=>({}));throw new Error(_0x24676b['error']||_0x24676b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x482ebc['json']();},async 'pullChanges'(_0x1cba63){if(!_0x1cba63)throw new Error('Task\x20ID\x20is\x20required');const _0x448886=await fetch(API_BASE+'/tasks/'+_0x1cba63+'/pull-changes',{'method':'POST'});if(!_0x448886['ok']){const _0x17ea6a=await _0x448886['json']()['catch'](()=>({}));throw new Error(_0x17ea6a['error']||_0x17ea6a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x448886['statusText']);}return await _0x448886['json']();},async 'readFile'(_0x300395,_0xb263dd){if(!_0x300395)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb263dd)throw new Error('File\x20path\x20is\x20required');const _0x82af80=await fetch(API_BASE+'/tasks/'+_0x300395+'/files?path='+encodeURIComponent(_0xb263dd));if(!_0x82af80['ok']){const _0x6b84ed=await _0x82af80['json']()['catch'](()=>({}));throw new Error(_0x6b84ed['error']||_0x6b84ed['message']||'Failed\x20to\x20read\x20file:\x20'+_0x82af80['statusText']);}return await _0x82af80['json']();},'getTaskFileDownloadUrl'(_0x3795fa,_0x593670){if(!_0x3795fa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x593670)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x3795fa+'/files/download?path='+encodeURIComponent(_0x593670);},async 'writeFile'(_0x2963dd,_0x8fb832,_0x58ec51){if(!_0x2963dd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x8fb832)throw new Error('File\x20path\x20is\x20required');if(_0x58ec51===undefined)throw new Error('Content\x20is\x20required');const _0x35e634=await fetch(API_BASE+'/tasks/'+_0x2963dd+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x8fb832,'content':_0x58ec51})});if(!_0x35e634['ok']){const _0x3a49b9=await _0x35e634['json']()['catch'](()=>({}));throw new Error(_0x3a49b9['error']||_0x3a49b9['message']||'Failed\x20to\x20write\x20file:\x20'+_0x35e634['statusText']);}return await _0x35e634['json']();},async 'uploadTaskFiles'(_0x48863d,_0x93aea3,_0x334f4a){if(!_0x48863d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x93aea3)throw new Error('Target\x20directory\x20is\x20required');if(!_0x334f4a||_0x334f4a['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4d9255=new FormData();_0x4d9255['append']('targetDir',_0x93aea3);for(const _0x3ec91a of _0x334f4a){_0x4d9255['append']('files',_0x3ec91a,_0x3ec91a['name']);}const _0x266f80=await fetch(API_BASE+'/tasks/'+_0x48863d+'/files/upload',{'method':'POST','body':_0x4d9255});if(!_0x266f80['ok']){const _0x510aba=await _0x266f80['json']()['catch'](()=>({}));throw new Error(_0x510aba['error']||_0x510aba['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x266f80['statusText']);}return await _0x266f80['json']();},async 'createDirectory'(_0x566c12,_0xce9ff2){if(!_0x566c12)throw new Error('Task\x20ID\x20is\x20required');if(!_0xce9ff2)throw new Error('Directory\x20path\x20is\x20required');const _0x11c0e9=await fetch(API_BASE+'/tasks/'+_0x566c12+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xce9ff2})});if(!_0x11c0e9['ok']){const _0x54a3b1=await _0x11c0e9['json']()['catch'](()=>({}));throw new Error(_0x54a3b1['error']||_0x54a3b1['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x11c0e9['statusText']);}return await _0x11c0e9['json']();},async 'renamePath'(_0x5288db,_0x54c103,_0x1078c1){if(!_0x5288db)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54c103)throw new Error('Source\x20path\x20is\x20required');if(!_0x1078c1)throw new Error('Destination\x20path\x20is\x20required');const _0x35e922=await fetch(API_BASE+'/tasks/'+_0x5288db+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x54c103,'newPath':_0x1078c1})});if(!_0x35e922['ok']){const _0x2f3c7b=await _0x35e922['json']()['catch'](()=>({}));throw new Error(_0x2f3c7b['error']||_0x2f3c7b['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x35e922['statusText']);}return await _0x35e922['json']();},async 'deleteFile'(_0x53484a,_0x6c499e){if(!_0x53484a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6c499e)throw new Error('File\x20path\x20is\x20required');const _0x416841=await fetch(API_BASE+'/tasks/'+_0x53484a+'/files?path='+encodeURIComponent(_0x6c499e),{'method':'DELETE'});if(!_0x416841['ok']){const _0x4b8aa0=await _0x416841['json']()['catch'](()=>({}));throw new Error(_0x4b8aa0['error']||_0x4b8aa0['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x416841['statusText']);}return await _0x416841['json']();},async 'deleteDirectory'(_0x46bb2d,_0x54542b){if(!_0x46bb2d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x54542b)throw new Error('Directory\x20path\x20is\x20required');const _0x5807f5=await fetch(API_BASE+'/tasks/'+_0x46bb2d+'/files/directory?path='+encodeURIComponent(_0x54542b),{'method':'DELETE'});if(!_0x5807f5['ok']){const _0xcd699a=await _0x5807f5['json']()['catch'](()=>({}));throw new Error(_0xcd699a['error']||_0xcd699a['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x5807f5['statusText']);}return await _0x5807f5['json']();},async 'discardFile'(_0x1fc943,_0x1273c3,_0x4aa956){if(!_0x1fc943)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1273c3)throw new Error('File\x20path\x20is\x20required');if(!_0x4aa956)throw new Error('Repository\x20path\x20is\x20required');const _0x384786=await fetch(API_BASE+'/tasks/'+_0x1fc943+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1273c3,'repoPath':_0x4aa956})});if(!_0x384786['ok']){const _0x1bae1e=await _0x384786['json']()['catch'](()=>({}));throw new Error(_0x1bae1e['error']||_0x1bae1e['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x384786['statusText']);}return await _0x384786['json']();},async 'followUpTask'(_0x44e70e,_0x1f1783={}){if(!_0x44e70e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1f1783['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2341ae,_0x46630c={};if(_0x1f1783['files']&&_0x1f1783['files']['length']>0x0){const _0x445a12=new FormData();_0x445a12['append']('instructions',_0x1f1783['instructions']);for(const _0xe49b81 of _0x1f1783['files']){_0x445a12['append']('attachments',_0xe49b81);}_0x2341ae=_0x445a12;}else _0x46630c['Content-Type']='application/json',_0x2341ae=JSON['stringify']({'instructions':_0x1f1783['instructions']});const _0x5ea7c7=await fetch(API_BASE+'/tasks/'+_0x44e70e+'/follow-up',{'method':'POST','headers':_0x46630c,'body':_0x2341ae});if(!_0x5ea7c7['ok']){const _0x4a5b3f=await _0x5ea7c7['json']()['catch'](()=>({}));throw new Error(_0x4a5b3f['error']||_0x4a5b3f['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x5ea7c7['statusText']);}return await _0x5ea7c7['json']();},async 'getTaskRewindPoints'(_0x1c4e6f){if(!_0x1c4e6f)throw new Error('Task\x20ID\x20is\x20required');const _0x329def=await fetch(API_BASE+'/tasks/'+_0x1c4e6f+'/rewind-points');if(!_0x329def['ok']){const _0x4b27be=await _0x329def['json']()['catch'](()=>({}));throw new Error(_0x4b27be['error']||_0x4b27be['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x329def['statusText']);}return await _0x329def['json']();},async 'rewindTask'(_0x4c63f7,_0x575389={}){if(!_0x4c63f7)throw new Error('Task\x20ID\x20is\x20required');const _0x30adae=Number['isInteger'](_0x575389['targetFollowUpCount'])?_0x575389['targetFollowUpCount']:0x0,_0x344ddb={'targetFollowUpCount':_0x30adae};typeof _0x575389['instructions']==='string'&&_0x575389['instructions']['trim']()&&(_0x344ddb['instructions']=_0x575389['instructions']['trim']());typeof _0x575389['rewindFiles']==='boolean'&&(_0x344ddb['rewindFiles']=_0x575389['rewindFiles']);const _0x31d466=await fetch(API_BASE+'/tasks/'+_0x4c63f7+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x344ddb)});if(!_0x31d466['ok']){const _0x133b04=await _0x31d466['json']()['catch'](()=>({}));throw new Error(_0x133b04['error']||_0x133b04['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x31d466['statusText']);}return await _0x31d466['json']();},async 'login'(_0x43a451,_0x574bf5){const _0x50b939=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x43a451,'password':_0x574bf5})});if(!_0x50b939['ok']){const _0x46ea69=await _0x50b939['json']();throw new Error(_0x46ea69['message']||'Login\x20failed');}return await _0x50b939['json']();},async 'logout'(){const _0x475a52=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x475a52['ok']){const _0x5311a5=await _0x475a52['json']();throw new Error(_0x5311a5['message']||'Logout\x20failed');}return await _0x475a52['json']();},async 'getCurrentUser'(){const _0x2c392a=await fetch(API_BASE+'/auth/me');if(!_0x2c392a['ok'])throw new Error('Not\x20authenticated');const _0x46ecfd=await _0x2c392a['json']();return _0x46ecfd['user'];},async 'getRolesInfo'(){const _0x270ee6=await fetch(API_BASE+'/users/roles');if(!_0x270ee6['ok']){const _0x1fa460=await _0x270ee6['json']();throw new Error(_0x1fa460['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x270ee6['json']();},async 'getUsers'(){const _0x5d96fc=await fetch(API_BASE+'/users');if(!_0x5d96fc['ok']){const _0x3c80f5=await _0x5d96fc['json']();throw new Error(_0x3c80f5['message']||'Failed\x20to\x20get\x20users');}return await _0x5d96fc['json']();},async 'getUser'(_0x10df34){const _0x234629=await fetch(API_BASE+'/users/'+_0x10df34);if(!_0x234629['ok']){const _0x3e6b4b=await _0x234629['json']();throw new Error(_0x3e6b4b['message']||'Failed\x20to\x20get\x20user');}return await _0x234629['json']();},async 'createUser'(_0x726b55){const _0x22a293=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x726b55)});if(!_0x22a293['ok']){const _0xd40f94=await _0x22a293['json']();throw new Error(_0xd40f94['message']||'Failed\x20to\x20create\x20user');}return await _0x22a293['json']();},async 'updateUser'(_0x15fddf,_0x41dc03){const _0x2d98d4=await fetch(API_BASE+'/users/'+_0x15fddf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41dc03)});if(!_0x2d98d4['ok']){const _0x3714cc=await _0x2d98d4['json']();throw new Error(_0x3714cc['message']||'Failed\x20to\x20update\x20user');}return await _0x2d98d4['json']();},async 'deleteUser'(_0x3d6921){const _0x1cbaff=await fetch(API_BASE+'/users/'+_0x3d6921,{'method':'DELETE'});if(!_0x1cbaff['ok']){const _0x4d1eb0=await _0x1cbaff['json']();throw new Error(_0x4d1eb0['message']||'Failed\x20to\x20delete\x20user');}return await _0x1cbaff['json']();},async 'stopAllContainers'(){const _0x36a71e=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x5b7594=await _0x36a71e['json']()['catch'](()=>({}));if(!_0x36a71e['ok'])throw new Error(_0x5b7594['message']||_0x5b7594['error']||'Failed\x20to\x20stop\x20containers');return _0x5b7594;},async 'removeStoppedContainers'(){const _0x3023ba=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1f5635=await _0x3023ba['json']()['catch'](()=>({}));if(!_0x3023ba['ok'])throw new Error(_0x1f5635['message']||_0x1f5635['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1f5635;},async 'pruneDockerResources'(){const _0x26b1eb=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x768d30=await _0x26b1eb['json']()['catch'](()=>({}));if(!_0x26b1eb['ok'])throw new Error(_0x768d30['message']||_0x768d30['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x768d30;},async 'getUpdateSettings'(){const _0x3ae464=await fetch(API_BASE+'/health/update-settings'),_0x5a66e9=await _0x3ae464['json']()['catch'](()=>({}));if(!_0x3ae464['ok'])throw new Error(_0x5a66e9['message']||_0x5a66e9['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x5a66e9;},async 'applyServerUpdate'(_0x47ca79){const _0x2f3667=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x47ca79})}),_0xed2e73=await _0x2f3667['json']()['catch'](()=>({}));if(!_0x2f3667['ok']){const _0x129963=new Error(_0xed2e73['message']||_0xed2e73['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0xed2e73['output']!==undefined)_0x129963['output']=_0xed2e73['output'];if(_0xed2e73['error']!==undefined)_0x129963['commandError']=_0xed2e73['error'];throw _0x129963;}return _0xed2e73;},async 'restartServer'(){const _0x44679a=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x31e5c9=await _0x44679a['json']()['catch'](()=>({}));if(!_0x44679a['ok'])throw new Error(_0x31e5c9['message']||_0x31e5c9['error']||'Failed\x20to\x20restart\x20server');return _0x31e5c9;},async 'createPasswordToken'(_0x475302,_0x18493c='setup',_0x1e5a04=![]){const _0x2b8f2a=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x475302,'type':_0x18493c,'sendEmail':_0x1e5a04})});if(!_0x2b8f2a['ok']){const _0x36c886=await _0x2b8f2a['json']();throw new Error(_0x36c886['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2b8f2a['json']();},async 'getEmailConfig'(){const _0x41e8f7=await fetch(API_BASE+'/password/email-config');if(!_0x41e8f7['ok']){const _0x74d872=await _0x41e8f7['json']();throw new Error(_0x74d872['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x41e8f7['json']();},async 'updateTaskName'(_0x191501,_0x1cf17d){const _0x345ae1=await fetch(API_BASE+'/tasks/'+_0x191501,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x1cf17d})});if(!_0x345ae1['ok']){const _0x4d0a98=await _0x345ae1['json']();throw new Error(_0x4d0a98['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x345ae1['json']();},async 'pinTask'(_0x37397a,_0x4f2047,_0x257437=null){if(!_0x37397a)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8e1b={'pinned':_0x4f2047};_0x257437&&_0x257437['length']>0x0&&(_0x4f8e1b['additionalTaskIds']=_0x257437);const _0xa41075=await fetch(API_BASE+'/tasks/'+_0x37397a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f8e1b)});if(!_0xa41075['ok']){const _0x520326=await _0xa41075['json']();throw new Error(_0x520326['error']||'Failed\x20to\x20pin\x20task');}return await _0xa41075['json']();},async 'setTaskWinner'(_0x649c8,_0x4f9447,_0x2dc498=[]){if(!_0x649c8)throw new Error('Task\x20ID\x20is\x20required');const _0x5877a7=await fetch(API_BASE+'/tasks/'+_0x649c8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4f9447,'siblings':_0x2dc498})});if(!_0x5877a7['ok']){const _0x436ac4=await _0x5877a7['json']();throw new Error(_0x436ac4['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x5877a7['json']();},async 'setTaskLoser'(_0x52dfbf,_0x54f95b){if(!_0x52dfbf)throw new Error('Task\x20ID\x20is\x20required');const _0x15fe0a=await fetch(API_BASE+'/tasks/'+_0x52dfbf+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x54f95b})});if(!_0x15fe0a['ok']){const _0x2831ce=await _0x15fe0a['json']();throw new Error(_0x2831ce['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x15fe0a['json']();},async 'createTaskGroup'(_0x1d69e9){const _0x208321=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d69e9)});if(!_0x208321['ok']){const _0x189297=await _0x208321['json']();throw new Error(_0x189297['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x208321['json']();},async 'getTaskGroups'(_0xf9a147={}){const _0x16bed6=new URLSearchParams();if(_0xf9a147['userId'])_0x16bed6['set']('userId',String(_0xf9a147['userId']));if(_0xf9a147['status'])_0x16bed6['set']('status',String(_0xf9a147['status']));if(_0xf9a147['limit'])_0x16bed6['set']('limit',String(_0xf9a147['limit']));const _0x4d4bc4=API_BASE+'/tasks/groups'+(_0x16bed6['toString']()?'?'+_0x16bed6['toString']():''),_0x2b1c81=await fetch(_0x4d4bc4);if(!_0x2b1c81['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2b1c81['json']();},async 'getTaskGroup'(_0x577b40){const _0x3f5deb=await fetch(API_BASE+'/tasks/groups/'+_0x577b40);if(!_0x3f5deb['ok']){const _0x5a9d88=await _0x3f5deb['json']();throw new Error(_0x5a9d88['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x3f5deb['json']();},async 'updateTaskGroup'(_0x30fd26,_0x4cbe8e,_0x248735){const _0x3bcc7f=await fetch(API_BASE+'/tasks/'+_0x30fd26+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4cbe8e,'groupIndex':_0x248735})});if(!_0x3bcc7f['ok']){const _0x354952=await _0x3bcc7f['json']();throw new Error(_0x354952['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3bcc7f['json']();},async 'removeTaskFromGroup'(_0x5459c0){return this['updateTaskGroup'](_0x5459c0,null,null);},async 'deleteTaskGroup'(_0x5ad7d0,_0x25ae1a=![]){const _0x3a1598=_0x25ae1a?'?deleteTasks=true':'',_0x25bc37=await fetch(API_BASE+'/tasks/groups/'+_0x5ad7d0+_0x3a1598,{'method':'DELETE'});if(!_0x25bc37['ok']){const _0x97342b=await _0x25bc37['json']();throw new Error(_0x97342b['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xfa9f46,_0x6d4658){const _0x4513fc=await fetch(API_BASE+'/tasks/groups/'+_0xfa9f46+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x6d4658})});if(!_0x4513fc['ok']){const _0x4f0e47=await _0x4513fc['json']();throw new Error(_0x4f0e47['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x4513fc['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x61e4a1){if(!_0x61e4a1)throw new Error('Task\x20ID\x20is\x20required');const _0x41a5d9=await fetch(API_BASE+'/tasks/'+_0x61e4a1+'/comments');if(!_0x41a5d9['ok']){const _0xc89182=await _0x41a5d9['json']()['catch'](()=>({}));throw new Error(_0xc89182['error']||'Failed\x20to\x20get\x20comments');}return await _0x41a5d9['json']();},async 'addComment'(_0x21921c,_0x4001e1){if(!_0x21921c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4001e1)throw new Error('Comment\x20content\x20is\x20required');const _0x4ed296=await fetch(API_BASE+'/tasks/'+_0x21921c+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4001e1})});if(!_0x4ed296['ok']){const _0x4f21d1=await _0x4ed296['json']()['catch'](()=>({}));throw new Error(_0x4f21d1['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ed296['json']();},async 'updateComment'(_0x4b179b,_0x2d09ab,_0x43373a){if(!_0x4b179b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d09ab)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x43373a)throw new Error('Comment\x20content\x20is\x20required');const _0xc1a905=await fetch(API_BASE+'/tasks/'+_0x4b179b+'/comments/'+_0x2d09ab,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x43373a})});if(!_0xc1a905['ok']){const _0x5c4456=await _0xc1a905['json']()['catch'](()=>({}));throw new Error(_0x5c4456['error']||'Failed\x20to\x20update\x20comment');}return await _0xc1a905['json']();},async 'deleteComment'(_0xd58828,_0x595ecd){if(!_0xd58828)throw new Error('Task\x20ID\x20is\x20required');if(!_0x595ecd)throw new Error('Comment\x20ID\x20is\x20required');const _0x3ba757=await fetch(API_BASE+'/tasks/'+_0xd58828+'/comments/'+_0x595ecd,{'method':'DELETE'});if(!_0x3ba757['ok']){const _0x2a410f=await _0x3ba757['json']()['catch'](()=>({}));throw new Error(_0x2a410f['error']||'Failed\x20to\x20delete\x20comment');}return await _0x3ba757['json']();},async 'createObjective'(_0x471247){const _0x2ea3c3={'objective':!![],'name':_0x471247['name']||'','environment':_0x471247['environment']||null,'agents':_0x471247['agents']||[],'branches':_0x471247['branches']||{},'isPinned':_0x471247['isPinned']||![],'parentObjectiveId':_0x471247['parentObjectiveId']||null,'env_vars':_0x471247['envVars']||{},'parameters':{'instructions':_0x471247['instructions']||''},'files':_0x471247['files']||[],'jira':_0x471247['jira']||null};return this['createTask'](_0x2ea3c3);},async 'updateObjective'(_0x36f21d,_0x595f5a,_0x51c310=[],_0x526b18=[]){let _0x551f54,_0x45c96e={};const _0x126dd4={..._0x595f5a};_0x526b18&&_0x526b18['length']>0x0&&(_0x126dd4['removeAttachments']=_0x526b18);if(_0x51c310&&_0x51c310['length']>0x0){const _0x20d338=new FormData();for(const [_0x39d007,_0x540237]of Object['entries'](_0x126dd4)){if(_0x540237==null)continue;typeof _0x540237==='object'?_0x20d338['append'](_0x39d007,JSON['stringify'](_0x540237)):_0x20d338['append'](_0x39d007,String(_0x540237));}for(const _0x4a99ad of _0x51c310){_0x20d338['append']('attachments',_0x4a99ad);}_0x551f54=_0x20d338;}else _0x45c96e['Content-Type']='application/json',_0x551f54=JSON['stringify'](_0x126dd4);const _0x46225b=await fetch(API_BASE+'/tasks/'+_0x36f21d,{'method':'PATCH','headers':_0x45c96e,'body':_0x551f54});if(!_0x46225b['ok']){const _0x1b6e17=await _0x46225b['json']();throw new Error(_0x1b6e17['error']||'Failed\x20to\x20update\x20objective');}return await _0x46225b['json']();},async 'deleteObjective'(_0x59150a){return this['deleteTask'](_0x59150a);},async 'launchObjective'(_0x5a36ab,_0xf52db={}){const _0xacaad3=await fetch(API_BASE+'/tasks/'+_0x5a36ab+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf52db)});if(!_0xacaad3['ok']){const _0x17f35c=await _0xacaad3['json']();throw new Error(_0x17f35c['error']||'Failed\x20to\x20launch\x20objective');}return await _0xacaad3['json']();},async 'getObjectiveAttachments'(_0x532074){return this['getTaskAttachments'](_0x532074);},async 'createJudgeTask'({environment:_0x59956e,judgeAgent:_0x508c34,groupId:_0x4b8011,taskIds:_0x259173,judgeCustomInstructions:_0x535070,isPinned:_0x15be9b}){const _0x4b25c4=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x59956e,'judgeAgent':_0x508c34,'groupId':_0x4b8011,'taskIds':_0x259173,'judgeCustomInstructions':_0x535070,'isPinned':_0x15be9b})});if(!_0x4b25c4['ok']){const _0x2268fe=await _0x4b25c4['json']();throw new Error(_0x2268fe['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x4b25c4['json']();},async 'getJudgeTasks'(_0x28adf5){const _0x496210=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x28adf5));if(!_0x496210['ok']){const _0x187809=await _0x496210['json']();throw new Error(_0x187809['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x496210['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3250e9,_0x44b50a,_0x208971=''){const _0x2c6dad=await fetch(API_BASE+'/tasks/'+_0x3250e9+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x44b50a,'customPreamble':_0x208971})});if(!_0x2c6dad['ok']){const _0xf69561=await _0x2c6dad['json']();throw new Error(_0xf69561['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x2c6dad['json']();},async 'getJiraConfig'(){const _0x2b6e84=await fetch(API_BASE+'/jira/config');if(!_0x2b6e84['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2b6e84['json']();},async 'getJiraIssue'(_0x529564){const _0x3f66c0=await fetch(API_BASE+'/jira/issues/'+_0x529564);if(!_0x3f66c0['ok']){const _0x4c0e59=await _0x3f66c0['json']()['catch'](()=>({}));throw new Error(_0x4c0e59['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x3f66c0['statusText']);}return await _0x3f66c0['json']();},async 'searchJiraIssues'(_0x466e35,_0xc17cb3=0x14){const _0x497bda=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x466e35,'maxResults':_0xc17cb3})});if(!_0x497bda['ok']){const _0x4a82a9=await _0x497bda['json']()['catch'](()=>({}));throw new Error(_0x4a82a9['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x497bda['statusText']);}return await _0x497bda['json']();},async 'postJiraComment'(_0x323af4,_0x29b372){const _0x24090c=await fetch(API_BASE+'/jira/issues/'+_0x323af4+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x29b372})});if(!_0x24090c['ok']){const _0x1207c6=await _0x24090c['json']()['catch'](()=>({}));throw new Error(_0x1207c6['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x24090c['statusText']);}return await _0x24090c['json']();},async 'getJiraComments'(_0x526fec){const _0x54282e=await fetch(API_BASE+'/jira/issues/'+_0x526fec+'/comments');if(!_0x54282e['ok']){const _0x572001=await _0x54282e['json']()['catch'](()=>({}));throw new Error(_0x572001['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x54282e['statusText']);}return await _0x54282e['json']();},async 'promptParameter'({environment:_0x672a66,command:_0x202f11,parser:parser='json'}){const _0xa74361=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x672a66,'command':_0x202f11,'parser':parser})});if(!_0xa74361['ok']){const _0x1c9c16=await _0xa74361['json']()['catch'](()=>({}));throw new Error(_0x1c9c16['message']||_0x1c9c16['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xa74361['statusText']);}return await _0xa74361['json']();},async 'promptParameterStream'(_0x50c619,_0x4d52a4){const _0x5c0f68=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x50c619)});if(!_0x5c0f68['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x5c0f68['statusText']);const _0x36d0f5=_0x5c0f68['body']['getReader'](),_0x42e7b5=new TextDecoder();let _0xecf8='';return new Promise((_0x4269ef,_0x5af3f0)=>{const _0xafe40a=async()=>{try{const {done:_0x399cbe,value:_0x148ee2}=await _0x36d0f5['read']();if(_0x399cbe)return;_0xecf8+=_0x42e7b5['decode'](_0x148ee2,{'stream':!![]});const _0x90872f=_0xecf8['split']('\x0a\x0a');_0xecf8=_0x90872f['pop']()||'';for(const _0x21e153 of _0x90872f){if(!_0x21e153['trim']())continue;const _0x5c0756=_0x21e153['split']('\x0a');let _0x291f26='message',_0x1277ae='';for(const _0xe834e5 of _0x5c0756){if(_0xe834e5['startsWith']('event:'))_0x291f26=_0xe834e5['substring'](0x6)['trim']();else _0xe834e5['startsWith']('data:')&&(_0x1277ae=_0xe834e5['substring'](0x5)['trim']());}if(!_0x1277ae)continue;try{const _0x40b839=JSON['parse'](_0x1277ae);if(_0x291f26==='progress'&&_0x4d52a4)_0x4d52a4(_0x40b839['stage'],_0x40b839['message']);else{if(_0x291f26==='result'){_0x4269ef(_0x40b839);return;}else{if(_0x291f26==='error'){let _0x458303=_0x40b839['message']||_0x40b839['error']||'Prompt\x20command\x20failed';_0x40b839['rawOutput']&&(_0x458303+='\x0a\x0aRaw\x20output:\x0a'+_0x40b839['rawOutput']);_0x5af3f0(new Error(_0x458303));return;}}}}catch(_0x44e47f){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x44e47f),console['error']('Event\x20type:',_0x291f26),console['error']('Event\x20data:',_0x1277ae),console['error']('First\x20200\x20chars:',_0x1277ae['substring'](0x0,0xc8)),_0x5af3f0(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x44e47f['message']+'\x0a\x0aData:\x20'+_0x1277ae['substring'](0x0,0x1f4)));return;}}_0xafe40a();}catch(_0x209e99){_0x5af3f0(_0x209e99);}};_0xafe40a();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5f44ce){const _0x162d49=await fetch(''+API_BASE+_0x5f44ce);if(!_0x162d49['ok']){const _0x57f0cb=await _0x162d49['json']()['catch'](()=>({'error':_0x162d49['statusText']})),_0x58672b=new Error(_0x57f0cb['error']||_0x57f0cb['message']||_0x162d49['statusText']);if(_0x57f0cb['detail']!==undefined)_0x58672b['detail']=_0x57f0cb['detail'];throw _0x58672b;}return await _0x162d49['json']();},async 'post'(_0x4294b0,_0x42218e){const _0x319e4b=await fetch(''+API_BASE+_0x4294b0,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42218e)});if(!_0x319e4b['ok']){const _0x3c37c1=await _0x319e4b['json']()['catch'](()=>({'error':_0x319e4b['statusText']})),_0x870a2e=new Error(_0x3c37c1['error']||_0x3c37c1['message']||_0x319e4b['statusText']);if(_0x3c37c1['detail']!==undefined)_0x870a2e['detail']=_0x3c37c1['detail'];throw _0x870a2e;}return await _0x319e4b['json']();},async 'put'(_0x4bc983,_0x41fa15){const _0x21eeab=await fetch(''+API_BASE+_0x4bc983,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41fa15)});if(!_0x21eeab['ok']){const _0x3d8088=await _0x21eeab['json']()['catch'](()=>({'error':_0x21eeab['statusText']})),_0x59547b=new Error(_0x3d8088['error']||_0x3d8088['message']||_0x21eeab['statusText']);if(_0x3d8088['detail']!==undefined)_0x59547b['detail']=_0x3d8088['detail'];throw _0x59547b;}return await _0x21eeab['json']();},async 'delete'(_0x2ef04c,_0x2e864f){const _0xb4ce70={'method':'DELETE'};_0x2e864f&&(_0xb4ce70['headers']={'Content-Type':'application/json'},_0xb4ce70['body']=JSON['stringify'](_0x2e864f));const _0x1d05bc=await fetch(''+API_BASE+_0x2ef04c,_0xb4ce70);if(!_0x1d05bc['ok']){const _0x1016e8=await _0x1d05bc['json']()['catch'](()=>({'error':_0x1d05bc['statusText']})),_0x4c7777=new Error(_0x1016e8['error']||_0x1016e8['message']||_0x1d05bc['statusText']);if(_0x1016e8['detail']!==undefined)_0x4c7777['detail']=_0x1016e8['detail'];throw _0x4c7777;}return await _0x1d05bc['json']();},async 'getSkills'(){const _0x3f6f7c=await fetch(API_BASE+'/skills');if(!_0x3f6f7c['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x3f6f7c['statusText']);return await _0x3f6f7c['json']();},async 'getSkill'(_0x30a909){const _0x3f0716=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x30a909));if(!_0x3f0716['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x3f0716['statusText']);return await _0x3f0716['json']();},async 'createSkill'(_0x1aa3de){const _0x24d16b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1aa3de)});if(!_0x24d16b['ok']){const _0x4f173d=await _0x24d16b['json']()['catch'](()=>({'error':_0x24d16b['statusText']})),_0x332d45=new Error(_0x4f173d['error']||_0x4f173d['message']||_0x24d16b['statusText']);if(_0x4f173d['detail']!==undefined)_0x332d45['detail']=_0x4f173d['detail'];throw _0x332d45;}return await _0x24d16b['json']();},async 'updateSkill'(_0x3b5def,_0x20b756){const _0x44d4fd=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3b5def),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20b756)});if(!_0x44d4fd['ok']){const _0x41ad8a=await _0x44d4fd['json']()['catch'](()=>({'error':_0x44d4fd['statusText']})),_0x1ff538=new Error(_0x41ad8a['error']||_0x41ad8a['message']||_0x44d4fd['statusText']);if(_0x41ad8a['detail']!==undefined)_0x1ff538['detail']=_0x41ad8a['detail'];throw _0x1ff538;}return await _0x44d4fd['json']();},async 'deleteSkill'(_0x4cdc75){const _0x2d408f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4cdc75),{'method':'DELETE'});if(!_0x2d408f['ok']){const _0xcea912=await _0x2d408f['json']()['catch'](()=>({'error':_0x2d408f['statusText']})),_0x43fec0=new Error(_0xcea912['error']||_0xcea912['message']||_0x2d408f['statusText']);if(_0xcea912['detail']!==undefined)_0x43fec0['detail']=_0xcea912['detail'];throw _0x43fec0;}return await _0x2d408f['json']();},async 'getSkillFile'(_0x505066,_0x2882f8){const _0x226726=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x505066)+'/files/'+_0x2882f8);if(!_0x226726['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x226726['statusText']);return await _0x226726['json']();},async 'saveSkillFile'(_0x4b7fa2,_0x208cfe,_0x1f74a8){const _0x5373a8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b7fa2)+'/files/'+_0x208cfe,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f74a8})});if(!_0x5373a8['ok']){const _0x178a30=await _0x5373a8['json']()['catch'](()=>({'error':_0x5373a8['statusText']})),_0x477b2a=new Error(_0x178a30['error']||_0x178a30['message']||_0x5373a8['statusText']);if(_0x178a30['detail']!==undefined)_0x477b2a['detail']=_0x178a30['detail'];throw _0x477b2a;}return await _0x5373a8['json']();},async 'deleteSkillFile'(_0x53c9f9,_0x366204){const _0xde9e6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x53c9f9)+'/files/'+_0x366204,{'method':'DELETE'});if(!_0xde9e6['ok']){const _0x36d442=await _0xde9e6['json']()['catch'](()=>({'error':_0xde9e6['statusText']})),_0x4a457a=new Error(_0x36d442['error']||_0x36d442['message']||_0xde9e6['statusText']);if(_0x36d442['detail']!==undefined)_0x4a457a['detail']=_0x36d442['detail'];throw _0x4a457a;}return await _0xde9e6['json']();},async 'pullSkills'(){const _0x5f3219=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5f3219['ok']){const _0x133b2b=await _0x5f3219['json']()['catch'](()=>({'error':_0x5f3219['statusText']})),_0x23acca=new Error(_0x133b2b['error']||_0x133b2b['message']||_0x5f3219['statusText']);if(_0x133b2b['detail']!==undefined)_0x23acca['detail']=_0x133b2b['detail'];throw _0x23acca;}return await _0x5f3219['json']();},async 'commitSkills'(_0x18106d,_0x40c76c={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x40c76c,_0x4476b7=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x18106d,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x4476b7['ok']){const _0x10f7d3=await _0x4476b7['json']()['catch'](()=>({'error':_0x4476b7['statusText']})),_0x2904e4=new Error(_0x10f7d3['error']||_0x10f7d3['message']||_0x4476b7['statusText']);if(_0x10f7d3['detail']!==undefined)_0x2904e4['detail']=_0x10f7d3['detail'];throw _0x2904e4;}return await _0x4476b7['json']();},async 'discardSkillsChanges'(){const _0x44d15d=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x44d15d['ok']){const _0x129118=await _0x44d15d['json']()['catch'](()=>({'error':_0x44d15d['statusText']})),_0x3f1329=new Error(_0x129118['error']||_0x129118['message']||_0x44d15d['statusText']);if(_0x129118['detail']!==undefined)_0x3f1329['detail']=_0x129118['detail'];throw _0x3f1329;}return await _0x44d15d['json']();},async 'getSkillCatalog'(){const _0xf61e3f=await fetch(API_BASE+'/external-skills/catalog');if(!_0xf61e3f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xf61e3f['statusText']);return await _0xf61e3f['json']();},async 'getImportedSkillsRegistry'(){const _0x3c5261=await fetch(API_BASE+'/external-skills/registry');if(!_0x3c5261['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x3c5261['statusText']);return await _0x3c5261['json']();},async 'importCatalogSkill'(_0x1567a1){const _0x2e1932=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x1567a1})});if(!_0x2e1932['ok']){const _0x253fdc=await _0x2e1932['json']()['catch'](()=>({'error':_0x2e1932['statusText']})),_0x2b7f70=new Error(_0x253fdc['error']||_0x253fdc['message']||_0x2e1932['statusText']);if(_0x253fdc['detail']!==undefined)_0x2b7f70['detail']=_0x253fdc['detail'];throw _0x2b7f70;}return await _0x2e1932['json']();},async 'importSkillFromGit'(_0x465cbb,_0x295774,_0x56f4eb='main',_0x2f389d=null){const _0x58590e=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x465cbb,'skillPath':_0x295774,'branch':_0x56f4eb,'skillId':_0x2f389d})});if(!_0x58590e['ok']){const _0x36e67d=await _0x58590e['json']()['catch'](()=>({'error':_0x58590e['statusText']})),_0x47e03b=new Error(_0x36e67d['error']||_0x36e67d['message']||_0x58590e['statusText']);if(_0x36e67d['detail']!==undefined)_0x47e03b['detail']=_0x36e67d['detail'];throw _0x47e03b;}return await _0x58590e['json']();},async 'probeMarketplace'(_0xdd5553,_0x6a0461='main'){const _0x4f2271=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xdd5553,'branch':_0x6a0461})});if(!_0x4f2271['ok']){const _0x3bd1de=await _0x4f2271['json']()['catch'](()=>({'error':_0x4f2271['statusText']})),_0x376c52=new Error(_0x3bd1de['error']||_0x3bd1de['message']||_0x4f2271['statusText']);if(_0x3bd1de['detail']!==undefined)_0x376c52['detail']=_0x3bd1de['detail'];throw _0x376c52;}return await _0x4f2271['json']();},async 'importMarketplaceBundle'(_0x37343b,_0x2b0221,_0x2a9523,_0x9ee3ed=null){const _0x59be5b=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x37343b,'branch':_0x2b0221,'bundleId':_0x2a9523,'selectedSkills':_0x9ee3ed})});if(!_0x59be5b['ok']){const _0x2e13dd=await _0x59be5b['json']()['catch'](()=>({'error':_0x59be5b['statusText']})),_0x513032=new Error(_0x2e13dd['error']||_0x2e13dd['message']||_0x59be5b['statusText']);if(_0x2e13dd['detail']!==undefined)_0x513032['detail']=_0x2e13dd['detail'];throw _0x513032;}return await _0x59be5b['json']();},async 'importSkillFromFolder'(_0x399c1a,_0xb261fe=null){const _0x87d1c7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x399c1a,'skillId':_0xb261fe})});if(!_0x87d1c7['ok']){const _0x426118=await _0x87d1c7['json']()['catch'](()=>({'error':_0x87d1c7['statusText']})),_0x5e31a8=new Error(_0x426118['error']||_0x426118['message']||_0x87d1c7['statusText']);if(_0x426118['detail']!==undefined)_0x5e31a8['detail']=_0x426118['detail'];throw _0x5e31a8;}return await _0x87d1c7['json']();},async 'importSkillFromNpm'(_0x32c13b,_0x14a488='latest',_0xb5366b=null,_0x58424a=null){const _0x36b894=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x32c13b,'version':_0x14a488,'skillId':_0xb5366b,'registry':_0x58424a})});if(!_0x36b894['ok']){const _0x20197b=await _0x36b894['json']()['catch'](()=>({'error':_0x36b894['statusText']})),_0x178f55=new Error(_0x20197b['error']||_0x20197b['message']||_0x36b894['statusText']);if(_0x20197b['detail']!==undefined)_0x178f55['detail']=_0x20197b['detail'];throw _0x178f55;}return await _0x36b894['json']();},async 'checkSkillUpdates'(_0x4a418e){const _0x2610be=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4a418e)+'/check-updates',{'method':'POST'});if(!_0x2610be['ok']){const _0x13b45f=await _0x2610be['json']()['catch'](()=>({'error':_0x2610be['statusText']})),_0x2e0f2e=new Error(_0x13b45f['error']||_0x13b45f['message']||_0x2610be['statusText']);if(_0x13b45f['detail']!==undefined)_0x2e0f2e['detail']=_0x13b45f['detail'];throw _0x2e0f2e;}return await _0x2610be['json']();},async 'updateExternalSkill'(_0x1a6b71){const _0x56abf7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1a6b71)+'/update',{'method':'POST'});if(!_0x56abf7['ok']){const _0x2ae46f=await _0x56abf7['json']()['catch'](()=>({'error':_0x56abf7['statusText']})),_0x5a54a0=new Error(_0x2ae46f['error']||_0x2ae46f['message']||_0x56abf7['statusText']);if(_0x2ae46f['detail']!==undefined)_0x5a54a0['detail']=_0x2ae46f['detail'];throw _0x5a54a0;}return await _0x56abf7['json']();},async 'updateSkillFlags'(_0x48a8aa,_0x500b18){const _0x49cabe=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x48a8aa)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x500b18})});if(!_0x49cabe['ok']){const _0x22f64e=await _0x49cabe['json']()['catch'](()=>({'error':_0x49cabe['statusText']})),_0x132b52=new Error(_0x22f64e['error']||_0x22f64e['message']||_0x49cabe['statusText']);if(_0x22f64e['detail']!==undefined)_0x132b52['detail']=_0x22f64e['detail'];throw _0x132b52;}return await _0x49cabe['json']();},async 'removeFromImportedRegistry'(_0x409cd5){const _0x2fadca=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x409cd5)+'/registry',{'method':'DELETE'});if(!_0x2fadca['ok']){const _0x1a4ac0=await _0x2fadca['json']()['catch'](()=>({'error':_0x2fadca['statusText']})),_0x439c2e=new Error(_0x1a4ac0['error']||_0x1a4ac0['message']||_0x2fadca['statusText']);if(_0x1a4ac0['detail']!==undefined)_0x439c2e['detail']=_0x1a4ac0['detail'];throw _0x439c2e;}return await _0x2fadca['json']();},async 'getTeams'(){const _0x4724a5=await fetch(API_BASE+'/teams');if(!_0x4724a5['ok']){const _0x3fb566=await _0x4724a5['json']()['catch'](()=>({'message':_0x4724a5['statusText']}));throw new Error(_0x3fb566['message']||'Failed\x20to\x20get\x20teams');}return await _0x4724a5['json']();},async 'getTeam'(_0x2f444d){const _0x5d3d7e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2f444d));if(!_0x5d3d7e['ok']){const _0xf39919=await _0x5d3d7e['json']()['catch'](()=>({'message':_0x5d3d7e['statusText']}));throw new Error(_0xf39919['message']||'Failed\x20to\x20get\x20team');}return await _0x5d3d7e['json']();},async 'createTeam'(_0x119b57){const _0x43e9b8=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x119b57)});if(!_0x43e9b8['ok']){const _0x5e0d2f=await _0x43e9b8['json']()['catch'](()=>({'message':_0x43e9b8['statusText']}));throw new Error(_0x5e0d2f['message']||'Failed\x20to\x20create\x20team');}return await _0x43e9b8['json']();},async 'updateTeam'(_0x442048,_0x1b6e2c){const _0x5cbef6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x442048),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b6e2c)});if(!_0x5cbef6['ok']){const _0x31dac=await _0x5cbef6['json']()['catch'](()=>({'message':_0x5cbef6['statusText']}));throw new Error(_0x31dac['message']||'Failed\x20to\x20update\x20team');}return await _0x5cbef6['json']();},async 'deleteTeam'(_0xc3094a){const _0x4c86b6=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xc3094a),{'method':'DELETE'});if(!_0x4c86b6['ok']){const _0x41f9a0=await _0x4c86b6['json']()['catch'](()=>({'message':_0x4c86b6['statusText']}));throw new Error(_0x41f9a0['message']||'Failed\x20to\x20delete\x20team');}return await _0x4c86b6['json']();},async 'addTeamMember'(_0x3bc00d,_0x1116ad){const _0x370d6a=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3bc00d)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x1116ad})});if(!_0x370d6a['ok']){const _0x4cbf8d=await _0x370d6a['json']()['catch'](()=>({'message':_0x370d6a['statusText']}));throw new Error(_0x4cbf8d['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x370d6a['json']();},async 'removeTeamMember'(_0x1d053f,_0x583977){const _0x119910=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1d053f)+'/members/'+encodeURIComponent(_0x583977),{'method':'DELETE'});if(!_0x119910['ok']){const _0x9d56c0=await _0x119910['json']()['catch'](()=>({'message':_0x119910['statusText']}));throw new Error(_0x9d56c0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x119910['json']();},async 'getBindings'(_0x237c73={}){const _0x27f670=new URLSearchParams();if(_0x237c73['resource_type'])_0x27f670['set']('resource_type',_0x237c73['resource_type']);if(_0x237c73['resource_id'])_0x27f670['set']('resource_id',_0x237c73['resource_id']);if(_0x237c73['subject_type'])_0x27f670['set']('subject_type',_0x237c73['subject_type']);if(_0x237c73['subject_id'])_0x27f670['set']('subject_id',_0x237c73['subject_id']);const _0x5b506b=_0x27f670['toString'](),_0x21f623=await fetch(API_BASE+'/bindings'+(_0x5b506b?'?'+_0x5b506b:''));if(!_0x21f623['ok']){const _0x39037b=await _0x21f623['json']()['catch'](()=>({'message':_0x21f623['statusText']}));throw new Error(_0x39037b['message']||'Failed\x20to\x20get\x20bindings');}return await _0x21f623['json']();},async 'createBinding'(_0x56e78b){const _0x264e30=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x56e78b)});if(!_0x264e30['ok']){const _0x3abd42=await _0x264e30['json']()['catch'](()=>({'message':_0x264e30['statusText']}));throw new Error(_0x3abd42['message']||'Failed\x20to\x20create\x20binding');}return await _0x264e30['json']();},async 'updateBinding'(_0x47930b,_0x2b4553){const _0x536738=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x47930b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b4553)});if(!_0x536738['ok']){const _0x2bc078=await _0x536738['json']()['catch'](()=>({'message':_0x536738['statusText']}));throw new Error(_0x2bc078['message']||'Failed\x20to\x20update\x20binding');}return await _0x536738['json']();},async 'deleteBinding'(_0xc7f5e9){const _0x52c50a=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xc7f5e9),{'method':'DELETE'});if(!_0x52c50a['ok']){const _0x1d753f=await _0x52c50a['json']()['catch'](()=>({'message':_0x52c50a['statusText']}));throw new Error(_0x1d753f['message']||'Failed\x20to\x20delete\x20binding');}return await _0x52c50a['json']();},async 'getRoleDefinitions'(){const _0x52f93e=await fetch(API_BASE+'/roles');if(!_0x52f93e['ok']){const _0x479b13=await _0x52f93e['json']()['catch'](()=>({'message':_0x52f93e['statusText']}));throw new Error(_0x479b13['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x52f93e['json']();},async 'getRoleDefinition'(_0xfd2796){const _0x3fc12a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xfd2796));if(!_0x3fc12a['ok']){const _0x530ee3=await _0x3fc12a['json']()['catch'](()=>({'message':_0x3fc12a['statusText']}));throw new Error(_0x530ee3['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3fc12a['json']();},async 'createRoleDefinition'(_0x30ffe1){const _0x3df9c2=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x30ffe1)});if(!_0x3df9c2['ok']){const _0x3fe8e8=await _0x3df9c2['json']()['catch'](()=>({'message':_0x3df9c2['statusText']}));throw new Error(_0x3fe8e8['message']||_0x3fe8e8['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3df9c2['json']();},async 'updateRoleDefinition'(_0x350fe2,_0x397ea4){const _0x5b4f3f=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x350fe2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x397ea4)});if(!_0x5b4f3f['ok']){const _0x18c30c=await _0x5b4f3f['json']()['catch'](()=>({'message':_0x5b4f3f['statusText']}));throw new Error(_0x18c30c['message']||_0x18c30c['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x5b4f3f['json']();},async 'deleteRoleDefinition'(_0x4a42a1){const _0x827eca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4a42a1),{'method':'DELETE'});if(!_0x827eca['ok']){const _0x53baa3=await _0x827eca['json']()['catch'](()=>({'message':_0x827eca['statusText']}));throw new Error(_0x53baa3['message']||_0x53baa3['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x827eca['json']();},async 'getAvailablePermissions'(){const _0x22ce83=await fetch(API_BASE+'/roles/available-permissions');if(!_0x22ce83['ok']){const _0x554c5d=await _0x22ce83['json']()['catch'](()=>({'message':_0x22ce83['statusText']}));throw new Error(_0x554c5d['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x22ce83['json']();},async 'getGitProviderAllowedTeams'(_0x2baf0d){const _0x12af65=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x2baf0d)+'/allowed-teams');if(!_0x12af65['ok']){const _0x34f995=await _0x12af65['json']()['catch'](()=>({'message':_0x12af65['statusText']}));throw new Error(_0x34f995['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x12af65['json']();},async 'setGitProviderAllowedTeams'(_0x453bd9,_0x440959){const _0x52b5d1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x453bd9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x440959})});if(!_0x52b5d1['ok']){const _0x4670de=await _0x52b5d1['json']()['catch'](()=>({'message':_0x52b5d1['statusText']}));throw new Error(_0x4670de['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x52b5d1['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 _0x3eabd2=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2ab672=>{_0x2ab672['el']['style']['bottom']=_0x3eabd2+'px';const _0x21856b=_0x2ab672['el']['offsetHeight']||toastState['defaultHeight'];_0x3eabd2+=_0x21856b+toastState['gap'];});});}function removeToastById(_0x5da54e){const _0x54be93=toastState['toasts']['findIndex'](_0x3b3265=>_0x3b3265['id']===_0x5da54e);if(_0x54be93===-0x1)return;const _0x21eb2b=toastState['toasts'][_0x54be93];if(_0x21eb2b['timeoutId'])clearTimeout(_0x21eb2b['timeoutId']);_0x21eb2b['el']['classList']['remove']('show'),setTimeout(()=>_0x21eb2b['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x54be93,0x1),repositionAllToasts();}function registerToast(_0x333020){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x333020),repositionAllToasts(),_0x333020['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(_0x47a1be){if(_0x47a1be===null||_0x47a1be===undefined)return'';return String(_0x47a1be)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x1c7585,_0x32d20c){if(_0x1c7585&&typeof _0x1c7585==='object'&&!Array['isArray'](_0x1c7585))return{'code':typeof _0x1c7585['text']==='string'?_0x1c7585['text']:'','language':typeof _0x1c7585['lang']==='string'?_0x1c7585['lang']:''};return{'code':typeof _0x1c7585==='string'?_0x1c7585:'','language':typeof _0x32d20c==='string'?_0x32d20c:''};}function buildMermaidBlock(_0x1714af){const _0x2c56ff=String(_0x1714af||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x2c56ff))+'\x22>'+escapeHtmlValue(_0x2c56ff)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x41d53a=new marked['Renderer'](),_0x37ad22=_0x41d53a['code']['bind'](_0x41d53a);return _0x41d53a['code']=function(_0x252b78,_0x1b9b77,..._0x18c6af){const {code:_0x728fd3,language:_0x357b21}=getMarkdownCodeBlockPayload(_0x252b78,_0x1b9b77),_0x5e5076=String(_0x357b21||'')['trim']()['toLowerCase']();if(_0x5e5076==='mermaid')return buildMermaidBlock(_0x728fd3);const _0x5575c8=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x5575c8&&_0x5e5076)try{const _0x287e92=_0x5575c8['getLanguage'](_0x5e5076)?_0x5e5076:'plaintext',_0x34a65b=_0x5575c8['highlight'](_0x728fd3,{'language':_0x287e92})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x5e5076)+'\x22>'+_0x34a65b+'</code></pre>';}catch(_0x3a7585){console['error']('Syntax\x20highlighting\x20error:',_0x3a7585);}return _0x37ad22(_0x252b78,_0x1b9b77,..._0x18c6af);},sharedMarkedRenderer=_0x41d53a,_0x41d53a;}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 _0x1f2796=window['mermaid'];if(!_0x1f2796||typeof _0x1f2796['initialize']!=='function')return _0x1f2796||null;return _0x1f2796['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x1f2796;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x5d8e38,_0x24c3aa)=>{const _0x480086=()=>_0x5d8e38(configureMermaidInstance()),_0x3c2f13=()=>{mermaidLoadPromise=null,_0x24c3aa(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x249919=document['getElementById'](MERMAID_SCRIPT_ID);!_0x249919&&(_0x249919=document['createElement']('script'),_0x249919['id']=MERMAID_SCRIPT_ID,_0x249919['src']=MERMAID_SCRIPT_SRC,_0x249919['async']=!![],document['head']['appendChild'](_0x249919));if(window['mermaid']){_0x480086();return;}_0x249919['addEventListener']('load',_0x480086,{'once':!![]}),_0x249919['addEventListener']('error',_0x3c2f13,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4b4c92){const _0x3764d6=_0x4b4c92['getAttribute']('data-mermaid-source');if(!_0x3764d6)return null;let _0x2c0141=_0x3764d6;try{_0x2c0141=decodeURIComponent(_0x3764d6);}catch{}return _0x4b4c92['textContent']=_0x2c0141,_0x4b4c92['removeAttribute']('data-processed'),_0x4b4c92['removeAttribute']('aria-roledescription'),_0x4b4c92['removeAttribute']('role'),_0x4b4c92['removeAttribute']('aria-label'),_0x2c0141;}function collectMermaidNodes(_0x16641e,_0x3aee76){if(!(_0x16641e instanceof Element))return;_0x16641e['matches']('.mermaid[data-mermaid-source]')&&_0x3aee76['add'](_0x16641e),_0x16641e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x33287c=>{_0x3aee76['add'](_0x33287c);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x2de0ac=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x51c16e=>setTimeout(_0x51c16e,0x0);_0x2de0ac(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5a1932=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5a1932);});});}function queueMermaidRender(_0x546f6a){const _0x3ba9bb=new Set();_0x546f6a instanceof Document||_0x546f6a instanceof DocumentFragment?_0x546f6a['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2d66d8=>_0x3ba9bb['add'](_0x2d66d8)):collectMermaidNodes(_0x546f6a,_0x3ba9bb);if(_0x3ba9bb['size']===0x0)return;_0x3ba9bb['forEach'](_0x2ae56f=>pendingMermaidNodes['add'](_0x2ae56f)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x19e5f9=Array['from'](pendingMermaidNodes)['filter'](_0x14a67a=>_0x14a67a['isConnected']);pendingMermaidNodes['clear']();if(_0x19e5f9['length']===0x0)return;const _0x5d47fb=await loadMermaid();if(!_0x5d47fb)return;configureMermaidInstance();const _0x10baad=getMermaidTheme();for(const _0x4b2bb2 of _0x19e5f9){const _0x35aea7=_0x4b2bb2['getAttribute']('data-mermaid-source');if(!_0x35aea7)continue;const _0x5cf961=_0x4b2bb2['getAttribute']('data-processed')==='true';if(_0x5cf961&&_0x4b2bb2['dataset']['mermaidTheme']===_0x10baad)continue;restoreMermaidSource(_0x4b2bb2);try{if(typeof _0x5d47fb['run']==='function')await _0x5d47fb['run']({'nodes':[_0x4b2bb2]});else typeof _0x5d47fb['init']==='function'&&_0x5d47fb['init'](undefined,[_0x4b2bb2]);_0x4b2bb2['dataset']['mermaidTheme']=_0x10baad,delete _0x4b2bb2['dataset']['mermaidError'];}catch(_0x5f287a){console['error']('Mermaid\x20render\x20failed:',_0x5f287a),restoreMermaidSource(_0x4b2bb2),_0x4b2bb2['dataset']['mermaidError']='true',delete _0x4b2bb2['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x362d1a=>{_0x362d1a['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x362d1a);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x27592b=>{_0x27592b['forEach'](_0x290209=>{_0x290209['addedNodes']['forEach'](_0x9274a7=>{_0x9274a7['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x9274a7);});});}),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'(_0x4b6017){const _0x4b9a39=new Date(_0x4b6017),_0x495c8c=new Date(),_0x368494=_0x495c8c-_0x4b9a39,_0x33bb28=Math['floor'](_0x368494/0x3e8),_0x5e030f=Math['floor'](_0x33bb28/0x3c),_0xd18350=Math['floor'](_0x5e030f/0x3c),_0x5059cf=Math['floor'](_0xd18350/0x18);if(_0x33bb28<0x3c)return'now';if(_0x5e030f<0x3c)return _0x5e030f+'m\x20ago';if(_0xd18350<0x18)return _0xd18350+'h\x20ago';return _0x5059cf+'d\x20ago';},'getStatusIcon'(_0x556098){switch(_0x556098){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x483e55){switch(_0x483e55){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'(_0x4df4a6,_0x2d5e1a=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x41914d={};_0x41914d['text/plain']=new Blob([_0x4df4a6],{'type':'text/plain'});_0x2d5e1a&&(_0x41914d['text/html']=new Blob([_0x2d5e1a],{'type':'text/html'}));const _0x1af3ad=new ClipboardItem(_0x41914d);return await navigator['clipboard']['write']([_0x1af3ad]),!![];}catch(_0x28fec9){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x28fec9);}try{const _0x202127=_0x247b4d=>{_0x247b4d['preventDefault'](),_0x247b4d['clipboardData']['setData']('text/plain',_0x4df4a6),_0x2d5e1a&&_0x247b4d['clipboardData']['setData']('text/html',_0x2d5e1a);};document['addEventListener']('copy',_0x202127);const _0xe4fc47=document['execCommand']('copy');document['removeEventListener']('copy',_0x202127);if(_0xe4fc47)return!![];}catch(_0x1d3540){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1d3540);}try{const _0x100fb9=document['createElement']('textarea');_0x100fb9['value']=_0x4df4a6,_0x100fb9['style']['position']='fixed',_0x100fb9['style']['opacity']='0',_0x100fb9['style']['pointerEvents']='none',document['body']['appendChild'](_0x100fb9),_0x100fb9['select']();const _0x337602=document['execCommand']('copy');return document['body']['removeChild'](_0x100fb9),_0x337602;}catch(_0x1b4107){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x1b4107),![];}},'showToast'(_0x4e898d,_0x165e42='info'){const _0x34c0ef=getNextToastId(),_0x355be1=document['createElement']('div');_0x355be1['className']='toast\x20toast-'+_0x165e42,_0x355be1['textContent']=_0x4e898d,_0x355be1['dataset']['toastId']=_0x34c0ef,document['body']['appendChild'](_0x355be1);const _0x424d50=_0x165e42==='error'?0x2710:0xbb8,_0x21cfb1=setTimeout(()=>{removeToastById(_0x34c0ef);},_0x424d50),_0x15aae={'id':_0x34c0ef,'el':_0x355be1,'timeoutId':_0x21cfb1};return registerToast(_0x15aae),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x355be1['classList']['add']('show');});}),_0x34c0ef;},'showError'(_0x4a1636){console['error'](_0x4a1636);const _0x33ae56=typeof _0x4a1636==='string'?_0x4a1636:_0x4a1636['message']||'An\x20error\x20occurred';this['showToast'](_0x33ae56,'error');},'showSuccess'(_0x5f475c){this['showToast'](_0x5f475c,'success');},'capitalize'(_0x3b1b20){if(!_0x3b1b20)return'';return _0x3b1b20['charAt'](0x0)['toUpperCase']()+_0x3b1b20['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x508ab3){return escapeHtmlValue(_0x508ab3);},'ansiToHtml'(_0x468af3){if(_0x468af3===null||_0x468af3===undefined)return'';let _0x3773a2=this['escapeHtml'](_0x468af3);const _0x54b815={'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'},_0x78f2d6={'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 _0x2ad0d4=0x0;return _0x3773a2=_0x3773a2['replace'](/\x1b\[([0-9;]*)m/g,(_0x369720,_0x559d92)=>{if(!_0x559d92||_0x559d92==='0'){const _0x39c798='</span>'['repeat'](_0x2ad0d4);return _0x2ad0d4=0x0,_0x39c798;}const _0x33f185=_0x559d92['split'](';'),_0x345f80=[];for(const _0x15607a of _0x33f185){if(_0x15607a==='1')_0x345f80['push']('font-weight:bold');else{if(_0x15607a==='2')_0x345f80['push']('opacity:0.7');else{if(_0x15607a==='3')_0x345f80['push']('font-style:italic');else{if(_0x15607a==='4')_0x345f80['push']('text-decoration:underline');else{if(_0x15607a==='9')_0x345f80['push']('text-decoration:line-through');else{if(_0x54b815[_0x15607a])_0x345f80['push']('color:'+_0x54b815[_0x15607a]);else{if(_0x78f2d6[_0x15607a])_0x345f80['push']('background-color:'+_0x78f2d6[_0x15607a]);}}}}}}}if(_0x345f80['length']>0x0)return _0x2ad0d4++,'<span\x20style=\x22'+_0x345f80['join'](';')+'\x22>';return'';}),_0x3773a2+='</span>'['repeat'](_0x2ad0d4),_0x3773a2=_0x3773a2['replace'](/\\u001b\[([0-9;]*)m/g,(_0x2fdeea,_0x435ce0)=>{if(!_0x435ce0||_0x435ce0==='0')return'';const _0x441adb=_0x435ce0['split'](';'),_0x42747=[];for(const _0x40f7a8 of _0x441adb){if(_0x40f7a8==='1')_0x42747['push']('font-weight:bold');else{if(_0x54b815[_0x40f7a8])_0x42747['push']('color:'+_0x54b815[_0x40f7a8]);else{if(_0x78f2d6[_0x40f7a8])_0x42747['push']('background-color:'+_0x78f2d6[_0x40f7a8]);}}}if(_0x42747['length']>0x0)return'<span\x20style=\x22'+_0x42747['join'](';')+'\x22>';return'';}),_0x3773a2;},'showModal'({title:_0x49c7f7,content:_0x3249ce,buttons:buttons=[]}){const _0x45afde='\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'](_0x49c7f7)+'</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'+_0x3249ce+'\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']((_0xc158bb,_0x5bdfc7)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0xc158bb['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5bdfc7+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0xc158bb['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',_0x4bd5a6=document['createElement']('div');_0x4bd5a6['id']='utils-modal',_0x4bd5a6['className']='modal',_0x4bd5a6['innerHTML']=_0x45afde,document['body']['appendChild'](_0x4bd5a6);const _0x9bbac5=document['getElementById']('utils-modal-close');_0x9bbac5&&_0x9bbac5['addEventListener']('click',()=>this['hideModal']());const _0xaeec51=_0x4bd5a6['querySelectorAll']('[data-btn-index]');_0xaeec51['forEach'](_0x2fbed4=>{const _0x4d47cc=parseInt(_0x2fbed4['dataset']['btnIndex']);buttons[_0x4d47cc]?.['onClick']&&_0x2fbed4['addEventListener']('click',buttons[_0x4d47cc]['onClick']);});const _0x4b5de2=document['getElementById']('utils-modal-overlay');_0x4b5de2&&_0x4b5de2['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x1addc5=document['getElementById']('utils-modal');_0x1addc5&&_0x1addc5['remove']();},'parseKeyValuePairs'(_0x4d0a26){const _0x11198f={};if(!_0x4d0a26)return _0x11198f;return _0x4d0a26['split'](/\r?\n/)['map'](_0xda7d8e=>_0xda7d8e['trim']())['filter'](Boolean)['forEach'](_0x5376e4=>{const _0x3ee742=_0x5376e4['indexOf']('=');if(_0x3ee742>0x0){const _0x18b63f=_0x5376e4['slice'](0x0,_0x3ee742)['trim'](),_0x3dab23=_0x5376e4['slice'](_0x3ee742+0x1)['trim']();if(_0x18b63f)_0x11198f[_0x18b63f]=_0x3dab23;}}),_0x11198f;},'debounce'(_0x47d02b,_0x57bff4=0xfa){let _0x3aa4df=null;return(..._0x6302e2)=>{clearTimeout(_0x3aa4df),_0x3aa4df=setTimeout(()=>_0x47d02b['apply'](this,_0x6302e2),_0x57bff4);};},'formatTimestamp'(_0x31c05b){if(!_0x31c05b)return'N/A';const _0x16333a=new Date(_0x31c05b);return _0x16333a['toLocaleDateString']()+'\x20'+_0x16333a['toLocaleTimeString']();},'getQueryParams'(){const _0x497e32=new URLSearchParams(window['location']['search']),_0x5c5262={};for(const [_0x13f6a0,_0x318d77]of _0x497e32){_0x5c5262[_0x13f6a0]=_0x318d77;}return _0x5c5262;},'formatDuration'(_0xc7e574,_0x6ed31b){if(!_0xc7e574)return'N/A';const _0x20aabe=new Date(_0xc7e574),_0x4dc959=_0x6ed31b?new Date(_0x6ed31b):new Date(),_0x1d64c8=_0x4dc959-_0x20aabe;if(_0x1d64c8<0x0)return'0s';const _0x34a2b3=Math['floor'](_0x1d64c8/0x3e8),_0x3478d1=Math['floor'](_0x34a2b3/0x3c),_0x5ce0b6=Math['floor'](_0x3478d1/0x3c),_0x21cdbd=Math['floor'](_0x5ce0b6/0x18);if(_0x34a2b3<0x3c)return _0x34a2b3+'s';if(_0x3478d1<0x3c)return _0x3478d1+'m\x20'+_0x34a2b3%0x3c+'s';if(_0x5ce0b6<0x18)return _0x5ce0b6+'h\x20'+_0x3478d1%0x3c+'m\x20'+_0x34a2b3%0x3c+'s';return _0x21cdbd+'d\x20'+_0x5ce0b6%0x18+'h\x20'+_0x3478d1%0x3c+'m';},'renderMarkdown'(_0x8bd66e,_0x1219c3={}){if(!_0x8bd66e)return'';_0x8bd66e=this['rewriteAttachmentLinks'](_0x8bd66e,_0x1219c3),_0x8bd66e=this['rewriteColorSyntax'](_0x8bd66e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x8bd66e,_0x1219c3);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x8bd66e);}catch(_0x1135d1){return console['error']('Markdown\x20parsing\x20error:',_0x1135d1),this['renderMarkdownFallback'](_0x8bd66e,_0x1219c3);}},'rewriteAttachmentLinks'(_0x10778e,_0x50940d={}){const _0x52f331=typeof _0x50940d['resolveAttachmentUrl']==='function'?_0x50940d['resolveAttachmentUrl']:_0x50940d['taskId']?_0xfa79d2=>API_BASE+'/tasks/'+_0x50940d['taskId']+'/attachments/'+encodeURIComponent(_0xfa79d2):null;if(!_0x52f331)return _0x10778e;return String(_0x10778e)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3b8745,_0x5c1366)=>{const _0x5e13fe=String(_0x5c1366||'')['trim']();if(!_0x5e13fe)return _0x3b8745;let _0x2aa316=_0x5e13fe;try{_0x2aa316=decodeURIComponent(_0x5e13fe);}catch{}const _0x2a8ea8=_0x52f331(_0x2aa316);if(!_0x2a8ea8)return _0x3b8745;return']('+_0x2a8ea8+')';});},'rewriteColorSyntax'(_0x28cbf2){if(!_0x28cbf2)return _0x28cbf2;return String(_0x28cbf2)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x5030e9,_0x310f00,_0x349345)=>{const _0x22658e=this['rewriteColorSyntax'](_0x349345);return'<span\x20style=\x22color:\x20'+_0x310f00+'\x22>'+_0x22658e+'</span>';});},'renderMarkdownFallback'(_0x430894,_0x4d4a47={}){if(!_0x430894)return'';_0x430894=_0x430894['replace'](/\r\n/g,'\x0a'),_0x430894=_0x430894['replace'](/\r/g,'\x0a'),_0x430894=this['rewriteAttachmentLinks'](_0x430894,_0x4d4a47);let _0x23c544=this['escapeHtml'](_0x430894);return _0x23c544=_0x23c544['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x23c544=_0x23c544['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x23c544=_0x23c544['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x23c544=_0x23c544['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x23c544=_0x23c544['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x23c544=_0x23c544['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x23c544=_0x23c544['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x23c544=_0x23c544['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x23c544=_0x23c544['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x23c544=_0x23c544['replace'](/\n\n/g,'</p><p>'),_0x23c544=_0x23c544['replace'](/\n/g,'<br>'),'<p>'+_0x23c544+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x46e172=new Uint8Array(0x10);crypto['getRandomValues'](_0x46e172),_0x46e172[0x6]=_0x46e172[0x6]&0xf|0x40,_0x46e172[0x8]=_0x46e172[0x8]&0x3f|0x80;const _0x3402fb=Array['from'](_0x46e172,_0x3be59e=>_0x3be59e['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3402fb['slice'](0x0,0x8)+'-'+_0x3402fb['slice'](0x8,0xc)+'-'+_0x3402fb['slice'](0xc,0x10)+'-'+_0x3402fb['slice'](0x10,0x14)+'-'+_0x3402fb['slice'](0x14);}};export class CustomSelect{constructor(_0x3cdda0,_0x2197e9={}){this['nativeSelect']=_0x3cdda0,this['options']=_0x2197e9,this['isOpen']=![],this['selectedValue']=_0x3cdda0['value']||'',this['searchable']=_0x2197e9['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x26aa08=document['createElement']('div');_0x26aa08['className']='custom-select';const _0x456f92=document['createElement']('div');_0x456f92['className']='custom-select-trigger',_0x456f92['setAttribute']('tabindex','0'),_0x456f92['setAttribute']('role','button'),_0x456f92['setAttribute']('aria-haspopup','listbox');const _0x1f537c=document['createElement']('span');_0x1f537c['className']='custom-select-trigger-text';const _0x4ad97d=document['createElement']('span');_0x4ad97d['className']='custom-select-arrow',_0x4ad97d['textContent']='▼',_0x456f92['appendChild'](_0x1f537c),_0x456f92['appendChild'](_0x4ad97d);const _0x3fcd4b=document['createElement']('div');_0x3fcd4b['className']='custom-select-dropdown',_0x3fcd4b['setAttribute']('role','listbox');if(this['searchable']){const _0x37cfb6=document['createElement']('div');_0x37cfb6['className']='custom-select-search';const _0x417b35=document['createElement']('input');_0x417b35['type']='text',_0x417b35['className']='custom-select-search-input',_0x417b35['placeholder']='Type\x20to\x20search...',_0x417b35['setAttribute']('aria-label','Search\x20options'),_0x417b35['addEventListener']('input',_0x12f5c8=>{this['searchQuery']=_0x12f5c8['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x417b35['addEventListener']('keydown',_0x3255be=>{if(_0x3255be['key']==='Escape')_0x3255be['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3255be['key']==='Enter'){_0x3255be['preventDefault'](),_0x3255be['stopPropagation']();const _0x57aa30=_0x3fcd4b['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x57aa30){const _0x4fa1d8=_0x57aa30['getAttribute']('data-value');this['select'](_0x4fa1d8);}}}}),_0x37cfb6['appendChild'](_0x417b35),_0x3fcd4b['appendChild'](_0x37cfb6),this['searchInput']=_0x417b35;}const _0x51bea7=document['createElement']('div');_0x51bea7['className']='custom-select-options',_0x3fcd4b['appendChild'](_0x51bea7),_0x26aa08['appendChild'](_0x456f92),_0x26aa08['appendChild'](_0x3fcd4b),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x26aa08,this['nativeSelect']),this['wrapper']=_0x26aa08,this['trigger']=_0x456f92,this['triggerText']=_0x1f537c,this['dropdown']=_0x3fcd4b,this['optionsContainer']=_0x51bea7,_0x456f92['addEventListener']('click',()=>this['toggle']()),_0x456f92['addEventListener']('keydown',_0x50b036=>this['handleKeydown'](_0x50b036)),document['addEventListener']('click',_0x44bc5e=>{!_0x26aa08['contains'](_0x44bc5e['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x1cc8a8=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x1cc8a8['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x175a8f=new MutationObserver(()=>{this['updateDisabledState']();});_0x175a8f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x3133f9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x3133f9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x24773f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x24773f),this['trigger']['setAttribute']('aria-disabled',_0x24773f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x24773f?'-1':'0'),_0x24773f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x5434a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x43ae15=_0x5434a['filter'](_0x31b019=>!_0x31b019['disabled']&&!_0x31b019['hidden']);_0x5434a['forEach']((_0x5ccb52,_0x22d34b)=>{const _0x3e0962=document['createElement']('div');_0x3e0962['className']='custom-select-option',_0x3e0962['textContent']=_0x5ccb52['textContent'],_0x3e0962['setAttribute']('data-value',_0x5ccb52['value']),_0x3e0962['setAttribute']('data-index',_0x22d34b),_0x3e0962['setAttribute']('role','option'),_0x5ccb52['disabled']?_0x3e0962['classList']['add']('disabled'):_0x3e0962['addEventListener']('click',()=>this['select'](_0x5ccb52['value'])),_0x5ccb52['value']===this['selectedValue']&&_0x3e0962['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x3e0962),this['allOptions']['push']({'element':_0x3e0962,'text':_0x5ccb52['textContent']['toLowerCase'](),'value':_0x5ccb52['value'],'disabled':_0x5ccb52['disabled']});});if(this['searchable']&&this['searchInput']){const _0x905cd1=this['searchInput']['parentElement'];_0x43ae15['length']>0x3?_0x905cd1['style']['display']='':_0x905cd1['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x31ee22=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x57803c=>{if(!_0x31ee22||_0x57803c['disabled'])_0x57803c['element']['style']['display']='';else{const _0x21d75c=_0x57803c['text']['includes'](_0x31ee22);_0x57803c['element']['style']['display']=_0x21d75c?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x54acda){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x54acda,this['nativeSelect']['value']=_0x54acda;const _0x27dbf7=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x27dbf7),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x203720=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x203720&&(this['triggerText']['textContent']=_0x203720['textContent'],_0x203720['disabled']||_0x203720['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x20d9e3=>{_0x20d9e3['getAttribute']('data-value')===this['selectedValue']?_0x20d9e3['classList']['add']('selected'):_0x20d9e3['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 _0x272fe4=window['getComputedStyle'](this['dropdown']);if(_0x272fe4['position']==='fixed'){const _0x553d59=this['trigger']['getBoundingClientRect'](),_0x533fec=parseInt(_0x272fe4['maxHeight'])||0xc8,_0x13bace=window['innerHeight'],_0x36e278=_0x13bace-_0x553d59['bottom'],_0x31dfca=_0x553d59['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x504f70;_0x36e278<_0x533fec&&_0x31dfca>_0x36e278?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x13bace-_0x553d59['top']+'px',_0x504f70=Math['min'](_0x533fec,_0x31dfca-0xa),this['dropdown']['style']['maxHeight']=_0x504f70+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x553d59['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x504f70=Math['min'](_0x533fec,_0x36e278-0xa),this['dropdown']['style']['maxHeight']=_0x504f70+'px');if(this['optionsContainer']){let _0x325bb8=_0x504f70;if(this['searchInput']){const _0x1c1622=this['searchInput']['parentElement'];_0x1c1622&&(_0x325bb8-=_0x1c1622['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x325bb8)+'px';}this['dropdown']['style']['left']=_0x553d59['left']+'px',this['dropdown']['style']['width']=_0x553d59['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x19559d=this['searchInput']['parentElement'];_0x19559d&&_0x19559d['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'](_0x5b9091){if(this['nativeSelect']['disabled'])return;if(_0x5b9091['key']==='Enter'||_0x5b9091['key']==='\x20')_0x5b9091['preventDefault'](),this['toggle']();else _0x5b9091['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1ba0f2='\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',_0x1ba0f2),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2c0524=document['getElementById']('confirm-dialog-close'),_0x30c964=document['getElementById']('confirm-dialog-cancel'),_0x3ef8a5=document['getElementById']('confirm-dialog-confirm'),_0xa93a64=this['_modal']['querySelector']('.modal-overlay');_0x2c0524['addEventListener']('click',()=>this['_resolve'](![])),_0x30c964['addEventListener']('click',()=>this['_resolve'](![])),_0x3ef8a5['addEventListener']('click',()=>this['_resolve'](!![])),_0xa93a64['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x1f499c=>{if(_0x1f499c['key']==='Escape')_0x1f499c['preventDefault'](),this['_resolve'](![]);else _0x1f499c['key']==='Enter'&&(_0x1f499c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x2ff717,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x56011b=>{this['_resolvePromise']=_0x56011b,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x2ff717;const _0x25161c=document['getElementById']('confirm-dialog-cancel'),_0x580ba5=document['getElementById']('confirm-dialog-confirm');_0x25161c['textContent']=cancelText,_0x580ba5['textContent']=confirmText,_0x580ba5['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x580ba5['focus']();});},'_resolve'(_0x2393ce){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x2393ce),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0xf20d0c,_0x24a9ee={}){this['container']=_0xf20d0c,this['options']={'placeholder':_0x24a9ee['placeholder']||'Type\x20to\x20search...','maxItems':_0x24a9ee['maxItems']||0x64,'loadItems':_0x24a9ee['loadItems']||(async()=>[]),'renderItem':_0x24a9ee['renderItem']||(_0x370f41=>({'primary':String(_0x370f41),'secondary':''})),'onSelect':_0x24a9ee['onSelect']||(()=>{}),'filterItems':_0x24a9ee['filterItems']||null,'getItemValue':_0x24a9ee['getItemValue']||(_0x58089c=>_0x58089c),'sortItems':_0x24a9ee['sortItems']||null,'debounceMs':_0x24a9ee['debounceMs']||0xc8,'minCharsForSearch':_0x24a9ee['minCharsForSearch']||0x0,'emptyMessage':_0x24a9ee['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x24a9ee['loadingMessage']||'Loading...','preload':_0x24a9ee['preload']!==![],'searchMode':_0x24a9ee['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',_0x4418fc=>this['onBlur'](_0x4418fc)),this['input']['addEventListener']('input',_0xff9a38=>this['onInput'](_0xff9a38)),this['input']['addEventListener']('keydown',_0xe83e5f=>this['onKeydown'](_0xe83e5f)),this['clearBtn']['addEventListener']('mousedown',_0x452bf5=>{_0x452bf5['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x208f92=>{_0x208f92['preventDefault']();}),document['addEventListener']('click',_0xbda906=>{!this['wrapper']['contains'](_0xbda906['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(_0x48b03e){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x48b03e);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x403de9){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xdf2408){const _0x591d28=_0xdf2408['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x591d28);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x591d28):this['loadAndShow'](_0x591d28);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x49e35f){switch(_0x49e35f['key']){case'ArrowDown':_0x49e35f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x49e35f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x49e35f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x49e35f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x42aff4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x3dadcf=this['selectedIndex']+_0x42aff4;if(_0x3dadcf>=0x0&&_0x3dadcf<this['filteredItems']['length']){this['selectedIndex']=_0x3dadcf,this['updateSelectionHighlight']();const _0x25d996=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x25d996[this['selectedIndex']]&&_0x25d996[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x584ae6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x584ae6['forEach']((_0x3cbdec,_0x198ade)=>{_0x3cbdec['classList']['toggle']('keyboard-selected',_0x198ade===this['selectedIndex']);});}async['loadAndShow'](_0x302925){this['showLoading']();try{const _0x458daf=await this['options']['loadItems'](_0x302925);if(this['options']['searchMode']==='server'){let _0x19b7ac=_0x458daf;this['options']['sortItems']&&(_0x19b7ac=this['options']['sortItems']([..._0x458daf]));this['filteredItems']=_0x19b7ac;const _0xbc6bc2=this['filteredItems']['length']>=this['options']['maxItems'];_0xbc6bc2&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xbc6bc2),this['open']();}else this['allItems']=_0x458daf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x302925);}catch(_0x107d73){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x107d73),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x46f237){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x46f237):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x15949a=this['filteredItems']['length']>=this['options']['maxItems'];_0x15949a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x15949a),this['open']();}['renderItems'](_0x55d3e9){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']((_0x46461e,_0x16e2ed)=>{const _0x591fd9=document['createElement']('div');_0x591fd9['className']='autocomplete-select-item',_0x591fd9['setAttribute']('role','option'),_0x591fd9['setAttribute']('data-index',_0x16e2ed);const _0x31e629=this['options']['renderItem'](_0x46461e);let _0x4f42c3='';_0x31e629['icon']&&(_0x4f42c3='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x31e629['iconClass']||'')+'\x22>'+_0x31e629['icon']+'</span>'),_0x591fd9['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4f42c3+'\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'](_0x31e629['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x31e629['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x31e629['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x591fd9['addEventListener']('click',()=>{this['selectItem'](_0x46461e);}),_0x591fd9['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x16e2ed,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x591fd9);}),_0x55d3e9?(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'](_0x5d8f58){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5d8f58)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2e66ce){this['selectedItem']=_0x2e66ce;const _0x8cb01f=this['options']['renderItem'](_0x2e66ce);this['input']['value']=_0x8cb01f['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2e66ce);}['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'](_0x53e2d6){if(_0x53e2d6){this['selectedItem']=_0x53e2d6;const _0x5f27a8=this['options']['renderItem'](_0x53e2d6);this['input']['value']=_0x5f27a8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x550f1a){this['allItems']=_0x550f1a,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'](_0x116877){this['input']['placeholder']=_0x116877;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1ae68b=null){const _0xb0c0d8=document['getElementById']('admin-menu-container'),_0x354627=document['getElementById']('admin-menu-btn'),_0x34e512=document['getElementById']('admin-menu');if(!_0xb0c0d8||!_0x354627||!_0x34e512)return;try{!_0x1ae68b&&(_0x1ae68b=await API['getCurrentUser']());if(_0x1ae68b){const _0x81239c=window['Permissions'],_0x3dc828=_0x81239c['hasServerPermission'](_0x1ae68b,'*')||_0x81239c['hasEnvPermission'](_0x1ae68b,'environments:manage')||_0x81239c['hasServerPermission'](_0x1ae68b,'users:create')||_0x81239c['hasTeamPermission'](_0x1ae68b,'teams:manage')||_0x81239c['hasEnvPermission'](_0x1ae68b,'environments:view_details');if(!_0x3dc828)return;_0xb0c0d8['hidden']=![];if(!_0x81239c['hasServerPermission'](_0x1ae68b,'*')){const _0x144444=_0x34e512['querySelectorAll']('.admin-menu-item');_0x144444['forEach'](_0x17bc4f=>{const _0x1efa70=_0x17bc4f['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1efa70==='Users'&&!_0x81239c['hasServerPermission'](_0x1ae68b,'users:create')&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Skills'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Server\x20Settings'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Server\x20Administration'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Git\x20History'&&(_0x17bc4f['hidden']=!![]),_0x1efa70==='Roles'&&(_0x17bc4f['hidden']=!![]);});}_0x354627['addEventListener']('click',_0x451451=>{_0x451451['stopPropagation']();const _0x4faec8=document['getElementById']('actions-menu');if(_0x4faec8)_0x4faec8['hidden']=!![];_0x34e512['hidden']=!_0x34e512['hidden'];}),document['addEventListener']('click',_0xe3cdce=>{!_0x34e512['hidden']&&!_0x354627['contains'](_0xe3cdce['target'])&&!_0x34e512['contains'](_0xe3cdce['target'])&&(_0x34e512['hidden']=!![]);}),document['addEventListener']('keydown',_0x270b96=>{_0x270b96['key']==='Escape'&&!_0x34e512['hidden']&&(_0x34e512['hidden']=!![]);});}}catch(_0x194db9){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x194db9['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};