@profoundlogic/coderflow-server 0.7.2 → 0.7.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 (177) hide show
  1. package/dist/base-image/entrypoint.sh +7 -0
  2. package/dist/base-image/standard-instructions/memory-instructions.md +7 -0
  3. package/dist/coder-server.js +1 -1
  4. package/dist/config.js +1 -1
  5. package/dist/lib/agent-keepalive.js +1 -1
  6. package/dist/lib/agent-models.js +1 -1
  7. package/dist/lib/api-keys.js +1 -1
  8. package/dist/lib/apiKeys.js +1 -1
  9. package/dist/lib/app-server-ports.js +1 -1
  10. package/dist/lib/auto-judge.js +1 -1
  11. package/dist/lib/automation-service.js +1 -1
  12. package/dist/lib/basic-auth.js +1 -1
  13. package/dist/lib/bindings.js +1 -1
  14. package/dist/lib/build-history.js +1 -1
  15. package/dist/lib/build-output-service.js +1 -1
  16. package/dist/lib/build-scheduler.js +1 -1
  17. package/dist/lib/build-service.js +1 -1
  18. package/dist/lib/ca-certificates.js +1 -1
  19. package/dist/lib/claude-oauth-refresh.js +1 -1
  20. package/dist/lib/cli/build.js +1 -1
  21. package/dist/lib/cli/cleanup-users.js +1 -1
  22. package/dist/lib/cli/config-command.js +1 -1
  23. package/dist/lib/cli/config.js +1 -1
  24. package/dist/lib/cli/create-user.js +1 -1
  25. package/dist/lib/cli/grant-admin.js +1 -1
  26. package/dist/lib/cli/init.js +1 -1
  27. package/dist/lib/cli/jira.js +1 -1
  28. package/dist/lib/cli/license.js +1 -1
  29. package/dist/lib/cli/list-roles.js +1 -1
  30. package/dist/lib/cli/list-users.js +1 -1
  31. package/dist/lib/cli/server-manager.js +1 -1
  32. package/dist/lib/cli/set-password.js +1 -1
  33. package/dist/lib/config-migration.js +1 -1
  34. package/dist/lib/container-credential-sync.js +1 -1
  35. package/dist/lib/container-tokens.js +1 -1
  36. package/dist/lib/data-dir.js +1 -1
  37. package/dist/lib/deployment-history.js +1 -1
  38. package/dist/lib/deployment-service.js +1 -1
  39. package/dist/lib/docker-utils.js +1 -1
  40. package/dist/lib/email.js +1 -1
  41. package/dist/lib/emailTemplates.js +1 -1
  42. package/dist/lib/entitlement.js +1 -1
  43. package/dist/lib/external-connections.js +1 -1
  44. package/dist/lib/fetch-utils.js +1 -1
  45. package/dist/lib/git-commit-details-route.js +1 -1
  46. package/dist/lib/git-history-diff-guardrails.js +1 -1
  47. package/dist/lib/git-provider-service.js +1 -1
  48. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  49. package/dist/lib/git-provider-setup/index.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  51. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  52. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  53. package/dist/lib/git-providers/github-app-provider.js +1 -1
  54. package/dist/lib/git-providers/index.js +1 -1
  55. package/dist/lib/git-providers/provider-factory.js +1 -1
  56. package/dist/lib/git-providers/provider-interface.js +1 -1
  57. package/dist/lib/github-urls.js +1 -1
  58. package/dist/lib/group-objective-linking.js +1 -1
  59. package/dist/lib/ibmi-sync.js +1 -1
  60. package/dist/lib/jira-client.js +1 -1
  61. package/dist/lib/judge-blinding.js +1 -1
  62. package/dist/lib/logger.js +1 -1
  63. package/dist/lib/memory-utils.js +1 -0
  64. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  65. package/dist/lib/model-fetcher.js +1 -1
  66. package/dist/lib/notifications.js +1 -1
  67. package/dist/lib/objective-context.js +1 -1
  68. package/dist/lib/oidc-auth.js +1 -1
  69. package/dist/lib/oidc-device-flow.js +1 -1
  70. package/dist/lib/passwordTokens.js +1 -1
  71. package/dist/lib/permission-resolver.js +1 -1
  72. package/dist/lib/pin-cascade.js +1 -1
  73. package/dist/lib/provider-accounts.js +1 -1
  74. package/dist/lib/provider-oauth.js +1 -1
  75. package/dist/lib/provider-profile.js +1 -1
  76. package/dist/lib/provider-token-refresh.js +1 -1
  77. package/dist/lib/rbac-user-state.js +1 -1
  78. package/dist/lib/request-url.js +1 -1
  79. package/dist/lib/rewind.js +1 -1
  80. package/dist/lib/role-definitions.js +1 -1
  81. package/dist/lib/roles.js +1 -1
  82. package/dist/lib/secrets.js +1 -1
  83. package/dist/lib/setup-repo-git-auth.js +1 -1
  84. package/dist/lib/state-capture.js +1 -1
  85. package/dist/lib/static-files.js +1 -1
  86. package/dist/lib/task-aliases.js +1 -1
  87. package/dist/lib/task-name-format.js +1 -1
  88. package/dist/lib/task-name-generator.js +1 -1
  89. package/dist/lib/task-source-metadata.js +1 -1
  90. package/dist/lib/teams.js +1 -1
  91. package/dist/lib/user-git-oauth.js +1 -1
  92. package/dist/lib/user-git-tokens.js +1 -1
  93. package/dist/lib/users.js +1 -1
  94. package/dist/middleware/requireAuth.js +1 -1
  95. package/dist/middleware/requireInit.js +1 -1
  96. package/dist/middleware/requirePermission.js +1 -1
  97. package/dist/package.json +1 -1
  98. package/dist/playwright.config.js +1 -1
  99. package/dist/playwright.task-terminal.config.js +1 -1
  100. package/dist/routes/apiKeys.js +1 -1
  101. package/dist/routes/auth-oidc.js +1 -1
  102. package/dist/routes/auth.js +1 -1
  103. package/dist/routes/automations.js +1 -1
  104. package/dist/routes/bindings.js +1 -1
  105. package/dist/routes/build.js +1 -1
  106. package/dist/routes/containers.js +1 -1
  107. package/dist/routes/deploy-task.js +1 -1
  108. package/dist/routes/environment-management.js +1 -1
  109. package/dist/routes/environments.js +1 -1
  110. package/dist/routes/external-skills.js +1 -1
  111. package/dist/routes/git-credentials.js +1 -1
  112. package/dist/routes/git-oauth.js +1 -1
  113. package/dist/routes/git-provider-setup.js +1 -1
  114. package/dist/routes/health.js +1 -1
  115. package/dist/routes/jira.js +1 -1
  116. package/dist/routes/objective-management.js +1 -1
  117. package/dist/routes/password.js +1 -1
  118. package/dist/routes/prompt.js +1 -1
  119. package/dist/routes/provider-auth.js +1 -1
  120. package/dist/routes/qa.js +1 -1
  121. package/dist/routes/roles.js +1 -1
  122. package/dist/routes/settings.js +1 -1
  123. package/dist/routes/skill-management.js +1 -1
  124. package/dist/routes/skills.js +1 -1
  125. package/dist/routes/tasks.js +1 -1
  126. package/dist/routes/teams.js +1 -1
  127. package/dist/routes/templates.js +1 -1
  128. package/dist/routes/test-task.js +1 -1
  129. package/dist/routes/test.js +1 -1
  130. package/dist/routes/users.js +1 -1
  131. package/dist/routes/visualizations.js +1 -1
  132. package/dist/scripts/create-user.js +1 -1
  133. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  134. package/dist/shipped-skills/memory-management/SKILL.md +103 -0
  135. package/dist/start.js +1 -1
  136. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  137. package/dist/web-ui/public/activity-feed.js +1 -1
  138. package/dist/web-ui/public/activity-formatters.js +1 -1
  139. package/dist/web-ui/public/agent-event-parser.js +1 -1
  140. package/dist/web-ui/public/app.js +1 -1
  141. package/dist/web-ui/public/approve-dialog.js +1 -1
  142. package/dist/web-ui/public/automation-links.js +1 -1
  143. package/dist/web-ui/public/automation-schedule.js +1 -1
  144. package/dist/web-ui/public/comments-widget.js +1 -1
  145. package/dist/web-ui/public/diff-utils.js +1 -1
  146. package/dist/web-ui/public/environments.css +61 -0
  147. package/dist/web-ui/public/environments.html +114 -0
  148. package/dist/web-ui/public/environments.js +1 -1
  149. package/dist/web-ui/public/feedback-widget.js +1 -1
  150. package/dist/web-ui/public/file-selection-tree.js +1 -1
  151. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  152. package/dist/web-ui/public/git-history.js +1 -1
  153. package/dist/web-ui/public/git-status.js +1 -1
  154. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  155. package/dist/web-ui/public/index.js +1 -1
  156. package/dist/web-ui/public/login.js +1 -1
  157. package/dist/web-ui/public/markdown-editor.js +1 -1
  158. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  159. package/dist/web-ui/public/modal-maximize.js +1 -1
  160. package/dist/web-ui/public/notifications.js +1 -1
  161. package/dist/web-ui/public/permissions.js +1 -1
  162. package/dist/web-ui/public/pr-dialog.js +1 -1
  163. package/dist/web-ui/public/roles.js +1 -1
  164. package/dist/web-ui/public/server-health.js +1 -1
  165. package/dist/web-ui/public/settings.js +1 -1
  166. package/dist/web-ui/public/setup-password.js +1 -1
  167. package/dist/web-ui/public/skills.js +1 -1
  168. package/dist/web-ui/public/sse-client.js +1 -1
  169. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  170. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  171. package/dist/web-ui/public/task.js +1 -1
  172. package/dist/web-ui/public/teams.js +1 -1
  173. package/dist/web-ui/public/terminal.js +1 -1
  174. package/dist/web-ui/public/theme.js +1 -1
  175. package/dist/web-ui/public/users.js +1 -1
  176. package/dist/web-ui/public/variant-grouping.js +1 -1
  177. package/package.json +2 -2
@@ -1 +1 @@
1
- function detectApiBase(){const _0x2022db=window['location']['pathname'],_0x5db3e9=_0x2022db['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x5db3e9)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x5db3e9[0x1]),_0x5db3e9[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x15493f={}){const _0x51e233=new URLSearchParams();_0x15493f['userId']&&_0x51e233['set']('userId',String(_0x15493f['userId']));_0x15493f['automation']&&_0x51e233['set']('automation',String(_0x15493f['automation']));const _0x741c2a=API_BASE+'/tasks/stats'+(_0x51e233['toString']()?'?'+_0x51e233['toString']():''),_0x44fbff=await fetch(_0x741c2a);if(!_0x44fbff['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44fbff['statusText']);return await _0x44fbff['json']();},async 'getTasks'(_0xe2ae97={}){const _0x1397a3=new URLSearchParams();_0xe2ae97['status']&&_0x1397a3['set']('status',String(_0xe2ae97['status']));_0xe2ae97['environment']&&_0x1397a3['set']('environment',String(_0xe2ae97['environment']));_0xe2ae97['automation']&&_0x1397a3['set']('automation',String(_0xe2ae97['automation']));if(_0xe2ae97['include']){const _0x500b2b=Array['isArray'](_0xe2ae97['include'])?_0xe2ae97['include']['join'](','):String(_0xe2ae97['include']);_0x500b2b&&_0x1397a3['set']('include',_0x500b2b);}_0xe2ae97['filter']&&_0x1397a3['set']('filter',String(_0xe2ae97['filter']));_0xe2ae97['page']&&_0x1397a3['set']('page',String(_0xe2ae97['page']));_0xe2ae97['limit']&&_0x1397a3['set']('limit',String(_0xe2ae97['limit']));_0xe2ae97['userId']&&_0x1397a3['set']('userId',String(_0xe2ae97['userId']));_0xe2ae97['search']&&_0x1397a3['set']('search',String(_0xe2ae97['search']));_0xe2ae97['includeChildTasks']&&_0x1397a3['set']('includeChildTasks','true');const _0x44c6b4=API_BASE+'/tasks'+(_0x1397a3['toString']()?'?'+_0x1397a3['toString']():''),_0x1e113a=await fetch(_0x44c6b4);if(!_0x1e113a['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x1e113a['statusText']);return await _0x1e113a['json']();},async 'getAutomations'(_0x1b7394={}){const _0x3346b6=new URLSearchParams();_0x1b7394['environment']&&_0x3346b6['set']('environment',String(_0x1b7394['environment']));const _0x2ead9c=await fetch(API_BASE+'/api/automations'+(_0x3346b6['toString']()?'?'+_0x3346b6['toString']():''));if(!_0x2ead9c['ok']){const _0x324d5c=await _0x2ead9c['json']()['catch'](()=>({}));throw new Error(_0x324d5c['message']||_0x324d5c['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ead9c['statusText']);}return await _0x2ead9c['json']();},async 'getAutomation'(_0x16ead3){const _0x2e5a5f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x16ead3));if(!_0x2e5a5f['ok']){const _0x1abeae=await _0x2e5a5f['json']()['catch'](()=>({}));throw new Error(_0x1abeae['message']||_0x1abeae['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x2e5a5f['statusText']);}return await _0x2e5a5f['json']();},async 'createAutomation'(_0x4574aa){const _0x3d7ab0=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4574aa||{})});if(!_0x3d7ab0['ok']){const _0x2d7c5f=await _0x3d7ab0['json']()['catch'](()=>({}));throw new Error(_0x2d7c5f['message']||_0x2d7c5f['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3d7ab0['statusText']);}return await _0x3d7ab0['json']();},async 'updateAutomation'(_0x196eae,_0x6a840a){const _0x265c8a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x196eae),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6a840a||{})});if(!_0x265c8a['ok']){const _0x28e61f=await _0x265c8a['json']()['catch'](()=>({}));throw new Error(_0x28e61f['message']||_0x28e61f['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x265c8a['statusText']);}return await _0x265c8a['json']();},async 'deleteAutomation'(_0x20ae26){const _0x179ad7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x20ae26),{'method':'DELETE'});if(!_0x179ad7['ok']){const _0x46c920=await _0x179ad7['json']()['catch'](()=>({}));throw new Error(_0x46c920['message']||_0x46c920['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x179ad7['statusText']);}return await _0x179ad7['json']();},async 'triggerAutomation'(_0x516cb5){const _0x4bbc35=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x516cb5)+'/trigger',{'method':'POST'});if(!_0x4bbc35['ok']){const _0x268fea=await _0x4bbc35['json']()['catch'](()=>({}));throw new Error(_0x268fea['message']||_0x268fea['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4bbc35['statusText']);}return await _0x4bbc35['json']();},async 'setAutomationEnabled'(_0x5a25d1,_0x17cdf5){const _0x25971a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5a25d1)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x17cdf5})});if(!_0x25971a['ok']){const _0x5691d0=await _0x25971a['json']()['catch'](()=>({}));throw new Error(_0x5691d0['message']||_0x5691d0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x25971a['statusText']);}return await _0x25971a['json']();},async 'getAutomationHistory'(_0x26f6e1,_0x269c2b=0x32){const _0x40d3f1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x26f6e1)+'/history?limit='+encodeURIComponent(String(_0x269c2b)));if(!_0x40d3f1['ok']){const _0x59a96f=await _0x40d3f1['json']()['catch'](()=>({}));throw new Error(_0x59a96f['message']||_0x59a96f['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x40d3f1['statusText']);}return await _0x40d3f1['json']();},async 'getTask'(_0x4b8a88,_0x1ca105={}){const _0x6b1a30=new URLSearchParams();if(_0x1ca105['include']){const _0x44719d=Array['isArray'](_0x1ca105['include'])?_0x1ca105['include']['join'](','):String(_0x1ca105['include']);if(_0x44719d)_0x6b1a30['set']('include',_0x44719d);}const _0x4b3e6d=await fetch(API_BASE+'/tasks/'+_0x4b8a88+(_0x6b1a30['toString']()?'?'+_0x6b1a30['toString']():''));if(!_0x4b3e6d['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x4b3e6d['statusText']);return await _0x4b3e6d['json']();},async 'getTaskResults'(_0x93250){const _0x3eb995=await fetch(API_BASE+'/tasks/'+_0x93250+'/results');if(!_0x3eb995['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x3eb995['statusText']);return await _0x3eb995['json']();},async 'getTaskPatches'(_0x2b0e6f){const _0x55af03=await fetch(API_BASE+'/tasks/'+_0x2b0e6f+'/patches');if(!_0x55af03['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x55af03['statusText']);return await _0x55af03['json']();},async 'getTaskAttachments'(_0x3df4a7){const _0x4e6ddb=await fetch(API_BASE+'/tasks/'+_0x3df4a7+'/attachments');if(!_0x4e6ddb['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x4e6ddb['statusText']);return await _0x4e6ddb['json']();},async 'uploadAttachments'(_0x52bb2d,_0x139239){const _0x42f1b2=new FormData();for(const _0x57837a of _0x139239){_0x42f1b2['append']('attachments',_0x57837a);}const _0x226b36=await fetch(API_BASE+'/tasks/'+_0x52bb2d+'/attachments',{'method':'POST','body':_0x42f1b2});if(!_0x226b36['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x226b36['statusText']);return await _0x226b36['json']();},async 'isAINameGenerationAvailable'(){try{const _0x106408=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x106408['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x106408['json']();}catch(_0x57d6ba){return{'available':![],'reason':_0x57d6ba['message']};}},async 'generateTaskName'(_0x2fb0f6){try{const _0x28b645=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x2fb0f6})});return await _0x28b645['json']();}catch(_0x2a05ec){return{'success':![],'error':_0x2a05ec['message']};}},async 'createTask'(_0x33b8df){let _0x5e3bd5,_0x514ec9={};if(_0x33b8df['files']&&_0x33b8df['files']['length']>0x0){const _0x2a1942=new FormData();for(const [_0x30d59c,_0x3416a3]of Object['entries'](_0x33b8df)){if(_0x30d59c!=='files'){if(_0x3416a3==null)continue;typeof _0x3416a3==='object'?_0x2a1942['append'](_0x30d59c,JSON['stringify'](_0x3416a3)):_0x2a1942['append'](_0x30d59c,String(_0x3416a3));}}for(const _0x7a068d of _0x33b8df['files']){_0x2a1942['append']('attachments',_0x7a068d);}_0x5e3bd5=_0x2a1942;}else _0x514ec9['Content-Type']='application/json',_0x5e3bd5=JSON['stringify'](_0x33b8df);const _0x1d0a86=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x514ec9,'body':_0x5e3bd5});if(!_0x1d0a86['ok']){const _0x4262cf=await _0x1d0a86['json'](),_0x390685=new Error(_0x4262cf['error']||'Failed\x20to\x20create\x20task:\x20'+_0x1d0a86['statusText']),{message:_0x6c71fb,..._0x1e6d12}=_0x4262cf;Object['assign'](_0x390685,_0x1e6d12);throw _0x390685;}return await _0x1d0a86['json']();},async 'createTestTask'(_0x127764){const _0x1adc41=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x127764)});if(!_0x1adc41['ok']){const _0x2cae4a=await _0x1adc41['json']();throw new Error(_0x2cae4a['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x1adc41['statusText']);}return await _0x1adc41['json']();},async 'createEphemeralTest'(_0x393b96){const _0xdb93b9=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x393b96)});if(!_0xdb93b9['ok']){const _0x1dc3d5=await _0xdb93b9['json']();throw new Error(_0x1dc3d5['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0xdb93b9['statusText']);}return await _0xdb93b9['json']();},async 'createDeployTask'(_0x207f7d){const _0x4fc632=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x207f7d)});if(!_0x4fc632['ok']){const _0x4f4bbb=await _0x4fc632['json']();throw new Error(_0x4f4bbb['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4fc632['statusText']);}return await _0x4fc632['json']();},async 'getEnvironments'(){const _0x16f2a4=await fetch(API_BASE+'/environments');if(!_0x16f2a4['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x16f2a4['statusText']);return await _0x16f2a4['json']();},async 'getEnvironment'(_0x59eb28){const _0x29e6b3=await fetch(API_BASE+'/environments/'+_0x59eb28);if(!_0x29e6b3['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x29e6b3['statusText']);return await _0x29e6b3['json']();},async 'getEnvironmentRepoHistory'(_0x5e02c0,_0x7d8ce0,_0x5dc880={}){if(!_0x5e02c0||!_0x7d8ce0)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x2b138d=new URLSearchParams();if(_0x5dc880['limit'])_0x2b138d['set']('limit',String(_0x5dc880['limit']));if(_0x5dc880['offset'])_0x2b138d['set']('offset',String(_0x5dc880['offset']));if(_0x5dc880['search'])_0x2b138d['set']('search',String(_0x5dc880['search']));if(_0x5dc880['branch'])_0x2b138d['set']('branch',String(_0x5dc880['branch']));const _0x5af68c=API_BASE+'/environments/'+encodeURIComponent(_0x5e02c0)+'/repos/'+encodeURIComponent(_0x7d8ce0)+'/git/history',_0x32d889=await fetch(''+_0x5af68c+(_0x2b138d['toString']()?'?'+_0x2b138d['toString']():''));if(!_0x32d889['ok']){const _0x306749=await _0x32d889['json']()['catch'](()=>({}));throw new Error(_0x306749['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x32d889['statusText']);}return await _0x32d889['json']();},async 'getEnvironmentRepoCommit'(_0x14c5d9,_0x43a691,_0x5e730b){if(!_0x14c5d9||!_0x43a691||!_0x5e730b)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x36ce04=API_BASE+'/environments/'+encodeURIComponent(_0x14c5d9)+'/repos/'+encodeURIComponent(_0x43a691)+'/git/commits/'+encodeURIComponent(_0x5e730b),_0x2f8407=await fetch(_0x36ce04);if(!_0x2f8407['ok']){const _0x587e93=await _0x2f8407['json']()['catch'](()=>({}));throw new Error(_0x587e93['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2f8407['statusText']);}return await _0x2f8407['json']();},async 'getEnvironmentRepoBranches'(_0x2b350a,_0x57c9a8){if(!_0x2b350a||!_0x57c9a8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3db766=API_BASE+'/environments/'+encodeURIComponent(_0x2b350a)+'/repos/'+encodeURIComponent(_0x57c9a8)+'/git/branches',_0x3a197c=await fetch(_0x3db766);if(!_0x3a197c['ok']){const _0x129142=await _0x3a197c['json']()['catch'](()=>({}));throw new Error(_0x129142['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x3a197c['statusText']);}return await _0x3a197c['json']();},async 'revertEnvironmentRepoCommit'(_0x21915b,_0x40482f,_0x4841cf,_0x3ec37e={}){if(!_0x21915b||!_0x40482f||!_0x4841cf)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x951a11=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x21915b)+'/repos/'+encodeURIComponent(_0x40482f)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4841cf,..._0x3ec37e})});if(!_0x951a11['ok']){const _0x53461a=await _0x951a11['json']()['catch'](()=>({}));throw new Error(_0x53461a['message']||_0x53461a['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x951a11['statusText']);}return await _0x951a11['json']();},async 'getTemplates'(_0x2bb59e={}){const _0x46873d=new URLSearchParams();if(_0x2bb59e['include']){const _0x1ad516=Array['isArray'](_0x2bb59e['include'])?_0x2bb59e['include']['join'](','):String(_0x2bb59e['include']);if(_0x1ad516)_0x46873d['set']('include',_0x1ad516);}const _0x2012fc=await fetch(API_BASE+'/templates'+(_0x46873d['toString']()?'?'+_0x46873d['toString']():''));if(!_0x2012fc['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2012fc['statusText']);return await _0x2012fc['json']();},async 'getTemplatesForEnvironment'(_0x3bed55,_0x4527ee={}){if(!_0x3bed55)throw new Error('Environment\x20name\x20is\x20required');const _0x346a54=new URLSearchParams();if(_0x4527ee['include']){const _0x39e9b4=Array['isArray'](_0x4527ee['include'])?_0x4527ee['include']['join'](','):String(_0x4527ee['include']);if(_0x39e9b4)_0x346a54['set']('include',_0x39e9b4);}const _0x4a12e0=await fetch(API_BASE+'/templates/'+_0x3bed55+(_0x346a54['toString']()?'?'+_0x346a54['toString']():''));if(!_0x4a12e0['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x3bed55+':\x20'+_0x4a12e0['statusText']);return await _0x4a12e0['json']();},async 'getTemplate'(_0x26340d,_0x43111e,_0x4866ff={}){if(!_0x26340d||!_0x43111e)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x3b7d87=new URLSearchParams();if(_0x4866ff['include']){const _0x415de1=Array['isArray'](_0x4866ff['include'])?_0x4866ff['include']['join'](','):String(_0x4866ff['include']);if(_0x415de1)_0x3b7d87['set']('include',_0x415de1);}const _0x258283=await fetch(API_BASE+'/templates/'+_0x26340d+'/'+_0x43111e+(_0x3b7d87['toString']()?'?'+_0x3b7d87['toString']():''));if(!_0x258283['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x258283['statusText']);return await _0x258283['json']();},async 'getTaskLogs'(_0x4b84d9,_0x31944f={}){if(!_0x4b84d9)throw new Error('Task\x20ID\x20is\x20required');const _0x568e95=new URLSearchParams();_0x31944f['tail']&&_0x568e95['set']('tail',String(_0x31944f['tail']));const _0x3ae5fd=await fetch(API_BASE+'/tasks/'+_0x4b84d9+'/logs'+(_0x568e95['toString']()?'?'+_0x568e95['toString']():''));if(!_0x3ae5fd['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x3ae5fd['statusText']);return await _0x3ae5fd['text']();},async 'getContainers'(){const _0x1fb940=await fetch(API_BASE+'/containers');if(!_0x1fb940['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1fb940['statusText']);return await _0x1fb940['json']();},async 'getContainer'(_0x5d20f3){const _0x33ab01=await fetch(API_BASE+'/containers/'+_0x5d20f3);if(!_0x33ab01['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33ab01['statusText']);return await _0x33ab01['json']();},async 'startInteractiveContainer'(_0x21b7d8){const _0x55f7c8=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21b7d8)});if(!_0x55f7c8['ok']){const _0x2aec8=await _0x55f7c8['json']()['catch'](()=>({}));throw new Error(_0x2aec8['message']||'Failed\x20to\x20start\x20container:\x20'+_0x55f7c8['statusText']);}return await _0x55f7c8['json']();},async 'stopContainer'(_0x18a5f3){const _0x5ec322=await fetch(API_BASE+'/containers/'+_0x18a5f3,{'method':'DELETE'});if(!_0x5ec322['ok']){const _0xfff1fd=await _0x5ec322['json']()['catch'](()=>({}));throw new Error(_0xfff1fd['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x5ec322['statusText']);}return await _0x5ec322['json']();},async 'stopTask'(_0x3bf6f3){if(!_0x3bf6f3)throw new Error('Task\x20ID\x20is\x20required');const _0xa97a91=await fetch(API_BASE+'/tasks/'+_0x3bf6f3+'/stop',{'method':'POST'});if(!_0xa97a91['ok']){const _0x469951=await _0xa97a91['json']()['catch'](()=>({}));throw new Error(_0x469951['error']||'Failed\x20to\x20stop\x20task:\x20'+_0xa97a91['statusText']);}return await _0xa97a91['json']();},async 'interruptTask'(_0x324d39){if(!_0x324d39)throw new Error('Task\x20ID\x20is\x20required');const _0x17587e=await fetch(API_BASE+'/tasks/'+_0x324d39+'/interrupt',{'method':'POST'});if(!_0x17587e['ok']){const _0x100478=await _0x17587e['json']()['catch'](()=>({}));throw new Error(_0x100478['error']||_0x100478['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x17587e['statusText']);}return await _0x17587e['json']();},async 'startTask'(_0x5baa4b){if(!_0x5baa4b)throw new Error('Task\x20ID\x20is\x20required');const _0x397a7e=await fetch(API_BASE+'/tasks/'+_0x5baa4b+'/start',{'method':'POST'});if(!_0x397a7e['ok']){const _0x4b6fa3=await _0x397a7e['json']()['catch'](()=>({}));throw new Error(_0x4b6fa3['error']||'Failed\x20to\x20start\x20task:\x20'+_0x397a7e['statusText']);}return await _0x397a7e['json']();},async 'deleteTask'(_0x117c8d){if(!_0x117c8d)throw new Error('Task\x20ID\x20is\x20required');const _0x23b2dc=await fetch(API_BASE+'/tasks/'+_0x117c8d,{'method':'DELETE'});if(!_0x23b2dc['ok']){const _0x4ebde5=await _0x23b2dc['json']()['catch'](()=>({}));throw new Error(_0x4ebde5['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x23b2dc['statusText']);}return await _0x23b2dc['json']();},async 'refreshTasksFromDisk'(){const _0xf2fd23=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0xf2fd23['ok']){const _0x51ad18=await _0xf2fd23['json']()['catch'](()=>({}));throw new Error(_0x51ad18['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0xf2fd23['statusText']);}return await _0xf2fd23['json']();},async 'approveTask'(_0x407aef,_0xc0d64c={}){if(!_0x407aef)throw new Error('Task\x20ID\x20is\x20required');const _0x2367ac={'commit_message':_0xc0d64c['commit_message']||'','pull':_0xc0d64c['pull']??![],'push':_0xc0d64c['push']??![]};_0xc0d64c['new_branch']&&(_0x2367ac['new_branch']=_0xc0d64c['new_branch']);const _0x1539b8=await fetch(API_BASE+'/tasks/'+_0x407aef+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2367ac)});if(!_0x1539b8['ok']){const _0x2b2bfb=await _0x1539b8['json']()['catch'](()=>({}));let _0x1812fa=_0x2b2bfb['error']||_0x2b2bfb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1539b8['statusText'];if(_0x2b2bfb['results']&&Array['isArray'](_0x2b2bfb['results'])){const _0x3d2d01=_0x2b2bfb['results']['filter'](_0x489291=>!_0x489291['success']&&_0x489291['error']);_0x3d2d01['length']>0x0&&(_0x1812fa=_0x3d2d01[0x0]['error']);}throw new Error(_0x1812fa);}return await _0x1539b8['json']();},async 'getPullRequestInfo'(_0xe1e57c){if(!_0xe1e57c)throw new Error('Task\x20ID\x20is\x20required');const _0x8e6aa8=await fetch(API_BASE+'/tasks/'+_0xe1e57c+'/pull-request-info');if(!_0x8e6aa8['ok']){const _0x55e42d=await _0x8e6aa8['json']()['catch'](()=>({}));throw new Error(_0x55e42d['error']||_0x55e42d['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x8e6aa8['statusText']);}return await _0x8e6aa8['json']();},async 'createPullRequests'(_0x7d4388,_0x2d502c){if(!_0x7d4388)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2d502c||!Array['isArray'](_0x2d502c))throw new Error('repos\x20array\x20is\x20required');const _0x4297b3=await fetch(API_BASE+'/tasks/'+_0x7d4388+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x2d502c})});if(!_0x4297b3['ok']){const _0x734691=await _0x4297b3['json']()['catch'](()=>({}));let _0x137aa9=_0x734691['error']||_0x734691['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4297b3['statusText'];if(_0x734691['results']&&Array['isArray'](_0x734691['results'])){const _0x314658=_0x734691['results']['filter'](_0x445612=>!_0x445612['success']&&_0x445612['error']);_0x314658['length']>0x0&&(_0x137aa9=_0x314658[0x0]['error']);}throw new Error(_0x137aa9);}return await _0x4297b3['json']();},async 'syncRepos'(_0x4c9103){if(!_0x4c9103)throw new Error('Task\x20ID\x20is\x20required');const _0xd1832c=await fetch(API_BASE+'/tasks/'+_0x4c9103+'/sync-repos',{'method':'POST'});if(!_0xd1832c['ok']){const _0x151984=await _0xd1832c['json']()['catch'](()=>({}));throw new Error(_0x151984['error']||_0x151984['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0xd1832c['statusText']);}return await _0xd1832c['json']();},async 'getIbmiSyncInfo'(_0x1913e5){if(!_0x1913e5)throw new Error('Task\x20ID\x20is\x20required');const _0x855d7a=await fetch(API_BASE+'/tasks/'+_0x1913e5+'/ibmi-sync-info');if(!_0x855d7a['ok']){const _0xbc6375=await _0x855d7a['json']()['catch'](()=>({}));throw new Error(_0xbc6375['error']||_0xbc6375['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x855d7a['json']();},async 'getSyncFiles'(_0x407aff){if(!_0x407aff)throw new Error('Task\x20ID\x20is\x20required');const _0x88394f=await fetch(API_BASE+'/tasks/'+_0x407aff+'/sync-to-ibmi/files');if(!_0x88394f['ok']){const _0x2e7b1e=await _0x88394f['json']()['catch'](()=>({}));throw new Error(_0x2e7b1e['error']||_0x2e7b1e['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x88394f['json']();},async 'syncToIbmi'(_0x2987f5,_0x14dd7a,_0x1e9ffe=null,_0x6587ab=null,_0x38f5a4=null){if(!_0x2987f5)throw new Error('Task\x20ID\x20is\x20required');const _0x5decf5={'library':_0x14dd7a};if(_0x1e9ffe)_0x5decf5['user']=_0x1e9ffe;if(_0x6587ab)_0x5decf5['password']=_0x6587ab;if(_0x38f5a4)_0x5decf5['files']=_0x38f5a4;const _0x58ea32=await fetch(API_BASE+'/tasks/'+_0x2987f5+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5decf5)});if(!_0x58ea32['ok']){const _0x57d058=await _0x58ea32['json']()['catch'](()=>({}));throw new Error(_0x57d058['error']||_0x57d058['message']||'Sync\x20failed');}return await _0x58ea32['json']();},async 'getIbmiSyncLog'(_0x2cdbc5){if(!_0x2cdbc5)throw new Error('Task\x20ID\x20is\x20required');const _0x289578=await fetch(API_BASE+'/tasks/'+_0x2cdbc5+'/ibmi-sync-log');if(!_0x289578['ok']){const _0x35e696=await _0x289578['json']()['catch'](()=>({}));throw new Error(_0x35e696['error']||_0x35e696['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x289578['json']();},async 'pullChanges'(_0x24b4fe){if(!_0x24b4fe)throw new Error('Task\x20ID\x20is\x20required');const _0x1cfbc8=await fetch(API_BASE+'/tasks/'+_0x24b4fe+'/pull-changes',{'method':'POST'});if(!_0x1cfbc8['ok']){const _0x5c9e1a=await _0x1cfbc8['json']()['catch'](()=>({}));throw new Error(_0x5c9e1a['error']||_0x5c9e1a['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x1cfbc8['statusText']);}return await _0x1cfbc8['json']();},async 'readFile'(_0x3c4e3d,_0x380552){if(!_0x3c4e3d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x380552)throw new Error('File\x20path\x20is\x20required');const _0x23dea3=await fetch(API_BASE+'/tasks/'+_0x3c4e3d+'/files?path='+encodeURIComponent(_0x380552));if(!_0x23dea3['ok']){const _0x35b0ae=await _0x23dea3['json']()['catch'](()=>({}));throw new Error(_0x35b0ae['error']||_0x35b0ae['message']||'Failed\x20to\x20read\x20file:\x20'+_0x23dea3['statusText']);}return await _0x23dea3['json']();},'getTaskFileDownloadUrl'(_0x41d56b,_0x39f85a){if(!_0x41d56b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x39f85a)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x41d56b+'/files/download?path='+encodeURIComponent(_0x39f85a);},async 'writeFile'(_0x3e495b,_0x20f8ad,_0x208684){if(!_0x3e495b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20f8ad)throw new Error('File\x20path\x20is\x20required');if(_0x208684===undefined)throw new Error('Content\x20is\x20required');const _0x4c3c77=await fetch(API_BASE+'/tasks/'+_0x3e495b+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x20f8ad,'content':_0x208684})});if(!_0x4c3c77['ok']){const _0x2e51fb=await _0x4c3c77['json']()['catch'](()=>({}));throw new Error(_0x2e51fb['error']||_0x2e51fb['message']||'Failed\x20to\x20write\x20file:\x20'+_0x4c3c77['statusText']);}return await _0x4c3c77['json']();},async 'uploadTaskFiles'(_0x296efd,_0x575cf8,_0x3a165d){if(!_0x296efd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x575cf8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3a165d||_0x3a165d['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x30c7fc=new FormData();_0x30c7fc['append']('targetDir',_0x575cf8);for(const _0x3983f8 of _0x3a165d){_0x30c7fc['append']('files',_0x3983f8,_0x3983f8['name']);}const _0x4bdbe5=await fetch(API_BASE+'/tasks/'+_0x296efd+'/files/upload',{'method':'POST','body':_0x30c7fc});if(!_0x4bdbe5['ok']){const _0x156b81=await _0x4bdbe5['json']()['catch'](()=>({}));throw new Error(_0x156b81['error']||_0x156b81['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x4bdbe5['statusText']);}return await _0x4bdbe5['json']();},async 'createDirectory'(_0x96e07c,_0x1d4aad){if(!_0x96e07c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1d4aad)throw new Error('Directory\x20path\x20is\x20required');const _0x5887ab=await fetch(API_BASE+'/tasks/'+_0x96e07c+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1d4aad})});if(!_0x5887ab['ok']){const _0x485e71=await _0x5887ab['json']()['catch'](()=>({}));throw new Error(_0x485e71['error']||_0x485e71['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x5887ab['statusText']);}return await _0x5887ab['json']();},async 'renamePath'(_0x4ccb58,_0x2cfbea,_0x44e47c){if(!_0x4ccb58)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2cfbea)throw new Error('Source\x20path\x20is\x20required');if(!_0x44e47c)throw new Error('Destination\x20path\x20is\x20required');const _0x2cee47=await fetch(API_BASE+'/tasks/'+_0x4ccb58+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x2cfbea,'newPath':_0x44e47c})});if(!_0x2cee47['ok']){const _0x5bf031=await _0x2cee47['json']()['catch'](()=>({}));throw new Error(_0x5bf031['error']||_0x5bf031['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x2cee47['statusText']);}return await _0x2cee47['json']();},async 'deleteFile'(_0x222951,_0x2c3956){if(!_0x222951)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c3956)throw new Error('File\x20path\x20is\x20required');const _0x554cd2=await fetch(API_BASE+'/tasks/'+_0x222951+'/files?path='+encodeURIComponent(_0x2c3956),{'method':'DELETE'});if(!_0x554cd2['ok']){const _0x644e7d=await _0x554cd2['json']()['catch'](()=>({}));throw new Error(_0x644e7d['error']||_0x644e7d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x554cd2['statusText']);}return await _0x554cd2['json']();},async 'deleteDirectory'(_0xe6a67d,_0x433037){if(!_0xe6a67d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x433037)throw new Error('Directory\x20path\x20is\x20required');const _0x4075d2=await fetch(API_BASE+'/tasks/'+_0xe6a67d+'/files/directory?path='+encodeURIComponent(_0x433037),{'method':'DELETE'});if(!_0x4075d2['ok']){const _0x2e22ce=await _0x4075d2['json']()['catch'](()=>({}));throw new Error(_0x2e22ce['error']||_0x2e22ce['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x4075d2['statusText']);}return await _0x4075d2['json']();},async 'discardFile'(_0x84ceb0,_0x547857,_0x58d94d){if(!_0x84ceb0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x547857)throw new Error('File\x20path\x20is\x20required');if(!_0x58d94d)throw new Error('Repository\x20path\x20is\x20required');const _0x3ed396=await fetch(API_BASE+'/tasks/'+_0x84ceb0+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x547857,'repoPath':_0x58d94d})});if(!_0x3ed396['ok']){const _0x3fe2ef=await _0x3ed396['json']()['catch'](()=>({}));throw new Error(_0x3fe2ef['error']||_0x3fe2ef['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3ed396['statusText']);}return await _0x3ed396['json']();},async 'followUpTask'(_0x1136d7,_0x22958e={}){if(!_0x1136d7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x22958e['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x24b461,_0x501da6={};if(_0x22958e['files']&&_0x22958e['files']['length']>0x0){const _0x334d26=new FormData();_0x334d26['append']('instructions',_0x22958e['instructions']);for(const _0x5c5911 of _0x22958e['files']){_0x334d26['append']('attachments',_0x5c5911);}_0x24b461=_0x334d26;}else _0x501da6['Content-Type']='application/json',_0x24b461=JSON['stringify']({'instructions':_0x22958e['instructions']});const _0x5d3a2b=await fetch(API_BASE+'/tasks/'+_0x1136d7+'/follow-up',{'method':'POST','headers':_0x501da6,'body':_0x24b461});if(!_0x5d3a2b['ok']){const _0x3b6c78=await _0x5d3a2b['json']()['catch'](()=>({}));throw new Error(_0x3b6c78['error']||_0x3b6c78['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x5d3a2b['statusText']);}return await _0x5d3a2b['json']();},async 'getTaskRewindPoints'(_0x4f1a0a){if(!_0x4f1a0a)throw new Error('Task\x20ID\x20is\x20required');const _0x1f9a4b=await fetch(API_BASE+'/tasks/'+_0x4f1a0a+'/rewind-points');if(!_0x1f9a4b['ok']){const _0x30bdc3=await _0x1f9a4b['json']()['catch'](()=>({}));throw new Error(_0x30bdc3['error']||_0x30bdc3['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x1f9a4b['statusText']);}return await _0x1f9a4b['json']();},async 'rewindTask'(_0x1b8cb9,_0x1e200f={}){if(!_0x1b8cb9)throw new Error('Task\x20ID\x20is\x20required');const _0x192883=Number['isInteger'](_0x1e200f['targetFollowUpCount'])?_0x1e200f['targetFollowUpCount']:0x0,_0xf3dc1d={'targetFollowUpCount':_0x192883};typeof _0x1e200f['instructions']==='string'&&_0x1e200f['instructions']['trim']()&&(_0xf3dc1d['instructions']=_0x1e200f['instructions']['trim']());typeof _0x1e200f['rewindFiles']==='boolean'&&(_0xf3dc1d['rewindFiles']=_0x1e200f['rewindFiles']);const _0x9d6e42=await fetch(API_BASE+'/tasks/'+_0x1b8cb9+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf3dc1d)});if(!_0x9d6e42['ok']){const _0x597b45=await _0x9d6e42['json']()['catch'](()=>({}));throw new Error(_0x597b45['error']||_0x597b45['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x9d6e42['statusText']);}return await _0x9d6e42['json']();},async 'login'(_0x3edc29,_0x565fc9){const _0x3cefc6=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x3edc29,'password':_0x565fc9})});if(!_0x3cefc6['ok']){const _0x2e9bd3=await _0x3cefc6['json']();throw new Error(_0x2e9bd3['message']||'Login\x20failed');}return await _0x3cefc6['json']();},async 'logout'(){const _0x4f7978=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4f7978['ok']){const _0x4f6e9b=await _0x4f7978['json']();throw new Error(_0x4f6e9b['message']||'Logout\x20failed');}return await _0x4f7978['json']();},async 'getCurrentUser'(){const _0x5df60b=await fetch(API_BASE+'/auth/me');if(!_0x5df60b['ok'])throw new Error('Not\x20authenticated');const _0x340eae=await _0x5df60b['json']();return _0x340eae['user'];},async 'getRolesInfo'(){const _0x1f9631=await fetch(API_BASE+'/users/roles');if(!_0x1f9631['ok']){const _0x218b4d=await _0x1f9631['json']();throw new Error(_0x218b4d['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x1f9631['json']();},async 'getUsers'(){const _0xf7497d=await fetch(API_BASE+'/users');if(!_0xf7497d['ok']){const _0x43464c=await _0xf7497d['json']();throw new Error(_0x43464c['message']||'Failed\x20to\x20get\x20users');}return await _0xf7497d['json']();},async 'getUser'(_0x5add01){const _0x49ef04=await fetch(API_BASE+'/users/'+_0x5add01);if(!_0x49ef04['ok']){const _0x9fba0d=await _0x49ef04['json']();throw new Error(_0x9fba0d['message']||'Failed\x20to\x20get\x20user');}return await _0x49ef04['json']();},async 'createUser'(_0x4e3b5a){const _0x223b43=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e3b5a)});if(!_0x223b43['ok']){const _0x4233be=await _0x223b43['json']();throw new Error(_0x4233be['message']||'Failed\x20to\x20create\x20user');}return await _0x223b43['json']();},async 'updateUser'(_0x42be33,_0x23d1d0){const _0x39942d=await fetch(API_BASE+'/users/'+_0x42be33,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23d1d0)});if(!_0x39942d['ok']){const _0x331be5=await _0x39942d['json']();throw new Error(_0x331be5['message']||'Failed\x20to\x20update\x20user');}return await _0x39942d['json']();},async 'deleteUser'(_0x9e6019){const _0x448400=await fetch(API_BASE+'/users/'+_0x9e6019,{'method':'DELETE'});if(!_0x448400['ok']){const _0x584266=await _0x448400['json']();throw new Error(_0x584266['message']||'Failed\x20to\x20delete\x20user');}return await _0x448400['json']();},async 'stopAllContainers'(){const _0x8b6e3f=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0xa6f530=await _0x8b6e3f['json']()['catch'](()=>({}));if(!_0x8b6e3f['ok'])throw new Error(_0xa6f530['message']||_0xa6f530['error']||'Failed\x20to\x20stop\x20containers');return _0xa6f530;},async 'removeStoppedContainers'(){const _0x5e4891=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x3ba002=await _0x5e4891['json']()['catch'](()=>({}));if(!_0x5e4891['ok'])throw new Error(_0x3ba002['message']||_0x3ba002['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x3ba002;},async 'pruneDockerResources'(){const _0x38265a=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x59ccf7=await _0x38265a['json']()['catch'](()=>({}));if(!_0x38265a['ok'])throw new Error(_0x59ccf7['message']||_0x59ccf7['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x59ccf7;},async 'createPasswordToken'(_0x52b428,_0x23ea30='setup',_0x16c789=![]){const _0x2a69b4=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x52b428,'type':_0x23ea30,'sendEmail':_0x16c789})});if(!_0x2a69b4['ok']){const _0x2eafd9=await _0x2a69b4['json']();throw new Error(_0x2eafd9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2a69b4['json']();},async 'getEmailConfig'(){const _0x65dceb=await fetch(API_BASE+'/password/email-config');if(!_0x65dceb['ok']){const _0x4c0621=await _0x65dceb['json']();throw new Error(_0x4c0621['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x65dceb['json']();},async 'updateTaskName'(_0x3bb867,_0x5a9492){const _0x1e6e20=await fetch(API_BASE+'/tasks/'+_0x3bb867,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x5a9492})});if(!_0x1e6e20['ok']){const _0x32bb44=await _0x1e6e20['json']();throw new Error(_0x32bb44['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x1e6e20['json']();},async 'pinTask'(_0x5d7df7,_0x3fee0e,_0x2d1316=null){if(!_0x5d7df7)throw new Error('Task\x20ID\x20is\x20required');const _0x2ca8fd={'pinned':_0x3fee0e};_0x2d1316&&_0x2d1316['length']>0x0&&(_0x2ca8fd['additionalTaskIds']=_0x2d1316);const _0x1c73b1=await fetch(API_BASE+'/tasks/'+_0x5d7df7+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2ca8fd)});if(!_0x1c73b1['ok']){const _0x43b1e5=await _0x1c73b1['json']();throw new Error(_0x43b1e5['error']||'Failed\x20to\x20pin\x20task');}return await _0x1c73b1['json']();},async 'setTaskWinner'(_0x1a21c5,_0x4aba08,_0x44a9da=[]){if(!_0x1a21c5)throw new Error('Task\x20ID\x20is\x20required');const _0x49d21a=await fetch(API_BASE+'/tasks/'+_0x1a21c5+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x4aba08,'siblings':_0x44a9da})});if(!_0x49d21a['ok']){const _0x9cf7b8=await _0x49d21a['json']();throw new Error(_0x9cf7b8['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x49d21a['json']();},async 'setTaskLoser'(_0x498bc2,_0x51fdbb){if(!_0x498bc2)throw new Error('Task\x20ID\x20is\x20required');const _0x542cd3=await fetch(API_BASE+'/tasks/'+_0x498bc2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x51fdbb})});if(!_0x542cd3['ok']){const _0x31a7ea=await _0x542cd3['json']();throw new Error(_0x31a7ea['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x542cd3['json']();},async 'createTaskGroup'(_0x162a3c){const _0x2b3910=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x162a3c)});if(!_0x2b3910['ok']){const _0x1266bc=await _0x2b3910['json']();throw new Error(_0x1266bc['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x2b3910['json']();},async 'getTaskGroups'(_0x3dc670={}){const _0x4fe512=new URLSearchParams();if(_0x3dc670['userId'])_0x4fe512['set']('userId',String(_0x3dc670['userId']));if(_0x3dc670['status'])_0x4fe512['set']('status',String(_0x3dc670['status']));if(_0x3dc670['limit'])_0x4fe512['set']('limit',String(_0x3dc670['limit']));const _0x70204f=API_BASE+'/tasks/groups'+(_0x4fe512['toString']()?'?'+_0x4fe512['toString']():''),_0x45ca6c=await fetch(_0x70204f);if(!_0x45ca6c['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x45ca6c['json']();},async 'getTaskGroup'(_0x429f59){const _0x4d5507=await fetch(API_BASE+'/tasks/groups/'+_0x429f59);if(!_0x4d5507['ok']){const _0x5abe9b=await _0x4d5507['json']();throw new Error(_0x5abe9b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4d5507['json']();},async 'updateTaskGroup'(_0x56cce8,_0x47b7f5,_0x25eea5){const _0x2498c2=await fetch(API_BASE+'/tasks/'+_0x56cce8+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x47b7f5,'groupIndex':_0x25eea5})});if(!_0x2498c2['ok']){const _0x836d38=await _0x2498c2['json']();throw new Error(_0x836d38['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2498c2['json']();},async 'removeTaskFromGroup'(_0x13ae3f){return this['updateTaskGroup'](_0x13ae3f,null,null);},async 'deleteTaskGroup'(_0x301653,_0x495b4a=![]){const _0x399c28=_0x495b4a?'?deleteTasks=true':'',_0x282e19=await fetch(API_BASE+'/tasks/groups/'+_0x301653+_0x399c28,{'method':'DELETE'});if(!_0x282e19['ok']){const _0xcfbc99=await _0x282e19['json']();throw new Error(_0xcfbc99['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x57d592,_0x2fc9a2){const _0x1bd14b=await fetch(API_BASE+'/tasks/groups/'+_0x57d592+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2fc9a2})});if(!_0x1bd14b['ok']){const _0x276064=await _0x1bd14b['json']();throw new Error(_0x276064['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x1bd14b['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x35f2d7){if(!_0x35f2d7)throw new Error('Task\x20ID\x20is\x20required');const _0x40b9bc=await fetch(API_BASE+'/tasks/'+_0x35f2d7+'/comments');if(!_0x40b9bc['ok']){const _0x2b8905=await _0x40b9bc['json']()['catch'](()=>({}));throw new Error(_0x2b8905['error']||'Failed\x20to\x20get\x20comments');}return await _0x40b9bc['json']();},async 'addComment'(_0x4e2c1d,_0xb67962){if(!_0x4e2c1d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb67962)throw new Error('Comment\x20content\x20is\x20required');const _0x29fb0d=await fetch(API_BASE+'/tasks/'+_0x4e2c1d+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xb67962})});if(!_0x29fb0d['ok']){const _0x5afb47=await _0x29fb0d['json']()['catch'](()=>({}));throw new Error(_0x5afb47['error']||'Failed\x20to\x20add\x20comment');}return await _0x29fb0d['json']();},async 'updateComment'(_0x98deba,_0x441d67,_0x2273ae){if(!_0x98deba)throw new Error('Task\x20ID\x20is\x20required');if(!_0x441d67)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x2273ae)throw new Error('Comment\x20content\x20is\x20required');const _0x1d892e=await fetch(API_BASE+'/tasks/'+_0x98deba+'/comments/'+_0x441d67,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x2273ae})});if(!_0x1d892e['ok']){const _0x4cd2a9=await _0x1d892e['json']()['catch'](()=>({}));throw new Error(_0x4cd2a9['error']||'Failed\x20to\x20update\x20comment');}return await _0x1d892e['json']();},async 'deleteComment'(_0x3a1c42,_0x5ecde4){if(!_0x3a1c42)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5ecde4)throw new Error('Comment\x20ID\x20is\x20required');const _0x3a4277=await fetch(API_BASE+'/tasks/'+_0x3a1c42+'/comments/'+_0x5ecde4,{'method':'DELETE'});if(!_0x3a4277['ok']){const _0x2cc968=await _0x3a4277['json']()['catch'](()=>({}));throw new Error(_0x2cc968['error']||'Failed\x20to\x20delete\x20comment');}return await _0x3a4277['json']();},async 'createObjective'(_0x27cff4){const _0x5bf398={'objective':!![],'name':_0x27cff4['name']||'','environment':_0x27cff4['environment']||null,'agents':_0x27cff4['agents']||[],'branches':_0x27cff4['branches']||{},'isPinned':_0x27cff4['isPinned']||![],'parentObjectiveId':_0x27cff4['parentObjectiveId']||null,'env_vars':_0x27cff4['envVars']||{},'parameters':{'instructions':_0x27cff4['instructions']||''},'files':_0x27cff4['files']||[],'jira':_0x27cff4['jira']||null};return this['createTask'](_0x5bf398);},async 'updateObjective'(_0x36a690,_0x4c6ab1,_0x2a2713=[],_0x23b1a2=[]){let _0x59579b,_0x2683bc={};const _0x2187a4={..._0x4c6ab1};_0x23b1a2&&_0x23b1a2['length']>0x0&&(_0x2187a4['removeAttachments']=_0x23b1a2);if(_0x2a2713&&_0x2a2713['length']>0x0){const _0x3fac32=new FormData();for(const [_0x2d0391,_0x14f2ba]of Object['entries'](_0x2187a4)){if(_0x14f2ba==null)continue;typeof _0x14f2ba==='object'?_0x3fac32['append'](_0x2d0391,JSON['stringify'](_0x14f2ba)):_0x3fac32['append'](_0x2d0391,String(_0x14f2ba));}for(const _0x5f568a of _0x2a2713){_0x3fac32['append']('attachments',_0x5f568a);}_0x59579b=_0x3fac32;}else _0x2683bc['Content-Type']='application/json',_0x59579b=JSON['stringify'](_0x2187a4);const _0x4d474d=await fetch(API_BASE+'/tasks/'+_0x36a690,{'method':'PATCH','headers':_0x2683bc,'body':_0x59579b});if(!_0x4d474d['ok']){const _0x858bba=await _0x4d474d['json']();throw new Error(_0x858bba['error']||'Failed\x20to\x20update\x20objective');}return await _0x4d474d['json']();},async 'deleteObjective'(_0x5b05bd){return this['deleteTask'](_0x5b05bd);},async 'launchObjective'(_0x4faae2,_0x213139={}){const _0x1d7040=await fetch(API_BASE+'/tasks/'+_0x4faae2+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x213139)});if(!_0x1d7040['ok']){const _0xb3aa89=await _0x1d7040['json']();throw new Error(_0xb3aa89['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1d7040['json']();},async 'getObjectiveAttachments'(_0x19359b){return this['getTaskAttachments'](_0x19359b);},async 'createJudgeTask'({environment:_0x302472,judgeAgent:_0x10e343,groupId:_0x418b1c,taskIds:_0x142b67,judgeCustomInstructions:_0x5b63ef,isPinned:_0x47aa5b}){const _0x4c58c1=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x302472,'judgeAgent':_0x10e343,'groupId':_0x418b1c,'taskIds':_0x142b67,'judgeCustomInstructions':_0x5b63ef,'isPinned':_0x47aa5b})});if(!_0x4c58c1['ok']){const _0x7c09e1=await _0x4c58c1['json']();throw new Error(_0x7c09e1['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x4c58c1['json']();},async 'getJudgeTasks'(_0x3f0f35){const _0x4774ff=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3f0f35));if(!_0x4774ff['ok']){const _0x4c05de=await _0x4774ff['json']();throw new Error(_0x4c05de['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4774ff['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x2841cb,_0x2e06bb,_0x183ca6=''){const _0x254bb6=await fetch(API_BASE+'/tasks/'+_0x2841cb+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2e06bb,'customPreamble':_0x183ca6})});if(!_0x254bb6['ok']){const _0x3f7117=await _0x254bb6['json']();throw new Error(_0x3f7117['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x254bb6['json']();},async 'getJiraConfig'(){const _0x531aef=await fetch(API_BASE+'/jira/config');if(!_0x531aef['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x531aef['json']();},async 'getJiraIssue'(_0x4d07ce){const _0x1c5ed3=await fetch(API_BASE+'/jira/issues/'+_0x4d07ce);if(!_0x1c5ed3['ok']){const _0x498643=await _0x1c5ed3['json']()['catch'](()=>({}));throw new Error(_0x498643['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1c5ed3['statusText']);}return await _0x1c5ed3['json']();},async 'searchJiraIssues'(_0x48b873,_0x5234ad=0x14){const _0x4acc1e=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x48b873,'maxResults':_0x5234ad})});if(!_0x4acc1e['ok']){const _0x5ac6af=await _0x4acc1e['json']()['catch'](()=>({}));throw new Error(_0x5ac6af['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x4acc1e['statusText']);}return await _0x4acc1e['json']();},async 'postJiraComment'(_0x311a47,_0x30f330){const _0x371365=await fetch(API_BASE+'/jira/issues/'+_0x311a47+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x30f330})});if(!_0x371365['ok']){const _0x4d69d8=await _0x371365['json']()['catch'](()=>({}));throw new Error(_0x4d69d8['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x371365['statusText']);}return await _0x371365['json']();},async 'getJiraComments'(_0x295bce){const _0x2415db=await fetch(API_BASE+'/jira/issues/'+_0x295bce+'/comments');if(!_0x2415db['ok']){const _0x5ea678=await _0x2415db['json']()['catch'](()=>({}));throw new Error(_0x5ea678['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2415db['statusText']);}return await _0x2415db['json']();},async 'promptParameter'({environment:_0x228656,command:_0x512fbb,parser:parser='json'}){const _0x681078=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x228656,'command':_0x512fbb,'parser':parser})});if(!_0x681078['ok']){const _0x3e9d5e=await _0x681078['json']()['catch'](()=>({}));throw new Error(_0x3e9d5e['message']||_0x3e9d5e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x681078['statusText']);}return await _0x681078['json']();},async 'promptParameterStream'(_0x13eb2d,_0x4cb0ec){const _0x59301a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13eb2d)});if(!_0x59301a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x59301a['statusText']);const _0x281ae2=_0x59301a['body']['getReader'](),_0x24c8fa=new TextDecoder();let _0x448425='';return new Promise((_0x18e116,_0x2813d6)=>{const _0x23243f=async()=>{try{const {done:_0x181b37,value:_0x5747bf}=await _0x281ae2['read']();if(_0x181b37)return;_0x448425+=_0x24c8fa['decode'](_0x5747bf,{'stream':!![]});const _0x1d5746=_0x448425['split']('\x0a\x0a');_0x448425=_0x1d5746['pop']()||'';for(const _0x4562ad of _0x1d5746){if(!_0x4562ad['trim']())continue;const _0x2391c1=_0x4562ad['split']('\x0a');let _0xd99147='message',_0xd18977='';for(const _0x30b990 of _0x2391c1){if(_0x30b990['startsWith']('event:'))_0xd99147=_0x30b990['substring'](0x6)['trim']();else _0x30b990['startsWith']('data:')&&(_0xd18977=_0x30b990['substring'](0x5)['trim']());}if(!_0xd18977)continue;try{const _0xc90548=JSON['parse'](_0xd18977);if(_0xd99147==='progress'&&_0x4cb0ec)_0x4cb0ec(_0xc90548['stage'],_0xc90548['message']);else{if(_0xd99147==='result'){_0x18e116(_0xc90548);return;}else{if(_0xd99147==='error'){let _0x172aa0=_0xc90548['message']||_0xc90548['error']||'Prompt\x20command\x20failed';_0xc90548['rawOutput']&&(_0x172aa0+='\x0a\x0aRaw\x20output:\x0a'+_0xc90548['rawOutput']);_0x2813d6(new Error(_0x172aa0));return;}}}}catch(_0x582232){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x582232),console['error']('Event\x20type:',_0xd99147),console['error']('Event\x20data:',_0xd18977),console['error']('First\x20200\x20chars:',_0xd18977['substring'](0x0,0xc8)),_0x2813d6(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x582232['message']+'\x0a\x0aData:\x20'+_0xd18977['substring'](0x0,0x1f4)));return;}}_0x23243f();}catch(_0x1bf04f){_0x2813d6(_0x1bf04f);}};_0x23243f();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x33e7a7){const _0x67832=await fetch(''+API_BASE+_0x33e7a7);if(!_0x67832['ok']){const _0x55ddee=await _0x67832['json']()['catch'](()=>({'error':_0x67832['statusText']})),_0xd59556=new Error(_0x55ddee['error']||_0x55ddee['message']||_0x67832['statusText']);if(_0x55ddee['detail']!==undefined)_0xd59556['detail']=_0x55ddee['detail'];throw _0xd59556;}return await _0x67832['json']();},async 'post'(_0x3afda6,_0xbc1797){const _0x473ba7=await fetch(''+API_BASE+_0x3afda6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbc1797)});if(!_0x473ba7['ok']){const _0x4d33aa=await _0x473ba7['json']()['catch'](()=>({'error':_0x473ba7['statusText']})),_0x563148=new Error(_0x4d33aa['error']||_0x4d33aa['message']||_0x473ba7['statusText']);if(_0x4d33aa['detail']!==undefined)_0x563148['detail']=_0x4d33aa['detail'];throw _0x563148;}return await _0x473ba7['json']();},async 'put'(_0x4b07b1,_0x740cb5){const _0x260e00=await fetch(''+API_BASE+_0x4b07b1,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x740cb5)});if(!_0x260e00['ok']){const _0x548708=await _0x260e00['json']()['catch'](()=>({'error':_0x260e00['statusText']})),_0x14b075=new Error(_0x548708['error']||_0x548708['message']||_0x260e00['statusText']);if(_0x548708['detail']!==undefined)_0x14b075['detail']=_0x548708['detail'];throw _0x14b075;}return await _0x260e00['json']();},async 'delete'(_0x5f075e,_0x5aae92){const _0x5eb781={'method':'DELETE'};_0x5aae92&&(_0x5eb781['headers']={'Content-Type':'application/json'},_0x5eb781['body']=JSON['stringify'](_0x5aae92));const _0xa9bf49=await fetch(''+API_BASE+_0x5f075e,_0x5eb781);if(!_0xa9bf49['ok']){const _0xd1e509=await _0xa9bf49['json']()['catch'](()=>({'error':_0xa9bf49['statusText']})),_0x3e745c=new Error(_0xd1e509['error']||_0xd1e509['message']||_0xa9bf49['statusText']);if(_0xd1e509['detail']!==undefined)_0x3e745c['detail']=_0xd1e509['detail'];throw _0x3e745c;}return await _0xa9bf49['json']();},async 'getSkills'(){const _0x938983=await fetch(API_BASE+'/skills');if(!_0x938983['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x938983['statusText']);return await _0x938983['json']();},async 'getSkill'(_0x1b232d){const _0x2dae9b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b232d));if(!_0x2dae9b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x2dae9b['statusText']);return await _0x2dae9b['json']();},async 'createSkill'(_0x276c1d){const _0x1a189b=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x276c1d)});if(!_0x1a189b['ok']){const _0x5b4792=await _0x1a189b['json']()['catch'](()=>({'error':_0x1a189b['statusText']})),_0x4e5e33=new Error(_0x5b4792['error']||_0x5b4792['message']||_0x1a189b['statusText']);if(_0x5b4792['detail']!==undefined)_0x4e5e33['detail']=_0x5b4792['detail'];throw _0x4e5e33;}return await _0x1a189b['json']();},async 'updateSkill'(_0x57ddec,_0x246a1a){const _0x4a3630=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x57ddec),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x246a1a)});if(!_0x4a3630['ok']){const _0xfb87ba=await _0x4a3630['json']()['catch'](()=>({'error':_0x4a3630['statusText']})),_0x4ffe04=new Error(_0xfb87ba['error']||_0xfb87ba['message']||_0x4a3630['statusText']);if(_0xfb87ba['detail']!==undefined)_0x4ffe04['detail']=_0xfb87ba['detail'];throw _0x4ffe04;}return await _0x4a3630['json']();},async 'deleteSkill'(_0xbfa485){const _0x30300d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xbfa485),{'method':'DELETE'});if(!_0x30300d['ok']){const _0x259a20=await _0x30300d['json']()['catch'](()=>({'error':_0x30300d['statusText']})),_0xce8951=new Error(_0x259a20['error']||_0x259a20['message']||_0x30300d['statusText']);if(_0x259a20['detail']!==undefined)_0xce8951['detail']=_0x259a20['detail'];throw _0xce8951;}return await _0x30300d['json']();},async 'getSkillFile'(_0x4f5857,_0x582897){const _0x381b81=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4f5857)+'/files/'+_0x582897);if(!_0x381b81['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x381b81['statusText']);return await _0x381b81['json']();},async 'saveSkillFile'(_0x1f736f,_0x5d8281,_0x434630){const _0x2dbf72=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1f736f)+'/files/'+_0x5d8281,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x434630})});if(!_0x2dbf72['ok']){const _0x4db9ed=await _0x2dbf72['json']()['catch'](()=>({'error':_0x2dbf72['statusText']})),_0x170dd1=new Error(_0x4db9ed['error']||_0x4db9ed['message']||_0x2dbf72['statusText']);if(_0x4db9ed['detail']!==undefined)_0x170dd1['detail']=_0x4db9ed['detail'];throw _0x170dd1;}return await _0x2dbf72['json']();},async 'deleteSkillFile'(_0x5f2acb,_0x2ebbd7){const _0x1f5201=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f2acb)+'/files/'+_0x2ebbd7,{'method':'DELETE'});if(!_0x1f5201['ok']){const _0xc03948=await _0x1f5201['json']()['catch'](()=>({'error':_0x1f5201['statusText']})),_0x46c6ec=new Error(_0xc03948['error']||_0xc03948['message']||_0x1f5201['statusText']);if(_0xc03948['detail']!==undefined)_0x46c6ec['detail']=_0xc03948['detail'];throw _0x46c6ec;}return await _0x1f5201['json']();},async 'pullSkills'(){const _0x4aecd0=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x4aecd0['ok']){const _0x4298bf=await _0x4aecd0['json']()['catch'](()=>({'error':_0x4aecd0['statusText']})),_0x598b70=new Error(_0x4298bf['error']||_0x4298bf['message']||_0x4aecd0['statusText']);if(_0x4298bf['detail']!==undefined)_0x598b70['detail']=_0x4298bf['detail'];throw _0x598b70;}return await _0x4aecd0['json']();},async 'commitSkills'(_0x17ac62,_0x105aa7={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x105aa7,_0x2f1dc4=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x17ac62,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x2f1dc4['ok']){const _0x41a62d=await _0x2f1dc4['json']()['catch'](()=>({'error':_0x2f1dc4['statusText']})),_0x525059=new Error(_0x41a62d['error']||_0x41a62d['message']||_0x2f1dc4['statusText']);if(_0x41a62d['detail']!==undefined)_0x525059['detail']=_0x41a62d['detail'];throw _0x525059;}return await _0x2f1dc4['json']();},async 'discardSkillsChanges'(){const _0x107552=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x107552['ok']){const _0x1ca7c9=await _0x107552['json']()['catch'](()=>({'error':_0x107552['statusText']})),_0x4c8756=new Error(_0x1ca7c9['error']||_0x1ca7c9['message']||_0x107552['statusText']);if(_0x1ca7c9['detail']!==undefined)_0x4c8756['detail']=_0x1ca7c9['detail'];throw _0x4c8756;}return await _0x107552['json']();},async 'getSkillCatalog'(){const _0x243248=await fetch(API_BASE+'/external-skills/catalog');if(!_0x243248['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x243248['statusText']);return await _0x243248['json']();},async 'getImportedSkillsRegistry'(){const _0x36087d=await fetch(API_BASE+'/external-skills/registry');if(!_0x36087d['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x36087d['statusText']);return await _0x36087d['json']();},async 'importCatalogSkill'(_0x2a743a){const _0x1d7251=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2a743a})});if(!_0x1d7251['ok']){const _0x577bda=await _0x1d7251['json']()['catch'](()=>({'error':_0x1d7251['statusText']})),_0x4f2785=new Error(_0x577bda['error']||_0x577bda['message']||_0x1d7251['statusText']);if(_0x577bda['detail']!==undefined)_0x4f2785['detail']=_0x577bda['detail'];throw _0x4f2785;}return await _0x1d7251['json']();},async 'importSkillFromGit'(_0x4c3389,_0x9fdfae,_0x3399b6='main',_0x1b7416=null){const _0x1f7b59=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4c3389,'skillPath':_0x9fdfae,'branch':_0x3399b6,'skillId':_0x1b7416})});if(!_0x1f7b59['ok']){const _0x17a00f=await _0x1f7b59['json']()['catch'](()=>({'error':_0x1f7b59['statusText']})),_0x1fe6cd=new Error(_0x17a00f['error']||_0x17a00f['message']||_0x1f7b59['statusText']);if(_0x17a00f['detail']!==undefined)_0x1fe6cd['detail']=_0x17a00f['detail'];throw _0x1fe6cd;}return await _0x1f7b59['json']();},async 'probeMarketplace'(_0x5a89c8,_0x45726c='main'){const _0x192f56=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5a89c8,'branch':_0x45726c})});if(!_0x192f56['ok']){const _0x4fcfbe=await _0x192f56['json']()['catch'](()=>({'error':_0x192f56['statusText']})),_0x5028d0=new Error(_0x4fcfbe['error']||_0x4fcfbe['message']||_0x192f56['statusText']);if(_0x4fcfbe['detail']!==undefined)_0x5028d0['detail']=_0x4fcfbe['detail'];throw _0x5028d0;}return await _0x192f56['json']();},async 'importMarketplaceBundle'(_0x14f744,_0x2feb4d,_0x3d3068,_0x24e9b9=null){const _0x57e06c=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x14f744,'branch':_0x2feb4d,'bundleId':_0x3d3068,'selectedSkills':_0x24e9b9})});if(!_0x57e06c['ok']){const _0x502b02=await _0x57e06c['json']()['catch'](()=>({'error':_0x57e06c['statusText']})),_0x1cb7b1=new Error(_0x502b02['error']||_0x502b02['message']||_0x57e06c['statusText']);if(_0x502b02['detail']!==undefined)_0x1cb7b1['detail']=_0x502b02['detail'];throw _0x1cb7b1;}return await _0x57e06c['json']();},async 'importSkillFromFolder'(_0xda63a2,_0x3300d6=null){const _0x5639f7=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xda63a2,'skillId':_0x3300d6})});if(!_0x5639f7['ok']){const _0x7dc0dd=await _0x5639f7['json']()['catch'](()=>({'error':_0x5639f7['statusText']})),_0x4f7d46=new Error(_0x7dc0dd['error']||_0x7dc0dd['message']||_0x5639f7['statusText']);if(_0x7dc0dd['detail']!==undefined)_0x4f7d46['detail']=_0x7dc0dd['detail'];throw _0x4f7d46;}return await _0x5639f7['json']();},async 'importSkillFromNpm'(_0x3d963d,_0xcc98ba='latest',_0x58e403=null,_0x35af46=null){const _0x3e2d24=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x3d963d,'version':_0xcc98ba,'skillId':_0x58e403,'registry':_0x35af46})});if(!_0x3e2d24['ok']){const _0x55c88e=await _0x3e2d24['json']()['catch'](()=>({'error':_0x3e2d24['statusText']})),_0x40b0a8=new Error(_0x55c88e['error']||_0x55c88e['message']||_0x3e2d24['statusText']);if(_0x55c88e['detail']!==undefined)_0x40b0a8['detail']=_0x55c88e['detail'];throw _0x40b0a8;}return await _0x3e2d24['json']();},async 'checkSkillUpdates'(_0x3a32dd){const _0x52f482=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3a32dd)+'/check-updates',{'method':'POST'});if(!_0x52f482['ok']){const _0x2cf308=await _0x52f482['json']()['catch'](()=>({'error':_0x52f482['statusText']})),_0x2d3d36=new Error(_0x2cf308['error']||_0x2cf308['message']||_0x52f482['statusText']);if(_0x2cf308['detail']!==undefined)_0x2d3d36['detail']=_0x2cf308['detail'];throw _0x2d3d36;}return await _0x52f482['json']();},async 'updateExternalSkill'(_0xafc721){const _0x44209d=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xafc721)+'/update',{'method':'POST'});if(!_0x44209d['ok']){const _0x2a3a0d=await _0x44209d['json']()['catch'](()=>({'error':_0x44209d['statusText']})),_0x5243a9=new Error(_0x2a3a0d['error']||_0x2a3a0d['message']||_0x44209d['statusText']);if(_0x2a3a0d['detail']!==undefined)_0x5243a9['detail']=_0x2a3a0d['detail'];throw _0x5243a9;}return await _0x44209d['json']();},async 'updateSkillFlags'(_0x6c5183,_0x4b9199){const _0x19a72f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x6c5183)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4b9199})});if(!_0x19a72f['ok']){const _0x3f2937=await _0x19a72f['json']()['catch'](()=>({'error':_0x19a72f['statusText']})),_0x1ddf5e=new Error(_0x3f2937['error']||_0x3f2937['message']||_0x19a72f['statusText']);if(_0x3f2937['detail']!==undefined)_0x1ddf5e['detail']=_0x3f2937['detail'];throw _0x1ddf5e;}return await _0x19a72f['json']();},async 'removeFromImportedRegistry'(_0x17f781){const _0x2eb0e3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x17f781)+'/registry',{'method':'DELETE'});if(!_0x2eb0e3['ok']){const _0x1f953f=await _0x2eb0e3['json']()['catch'](()=>({'error':_0x2eb0e3['statusText']})),_0x47f809=new Error(_0x1f953f['error']||_0x1f953f['message']||_0x2eb0e3['statusText']);if(_0x1f953f['detail']!==undefined)_0x47f809['detail']=_0x1f953f['detail'];throw _0x47f809;}return await _0x2eb0e3['json']();},async 'getTeams'(){const _0x22cd45=await fetch(API_BASE+'/teams');if(!_0x22cd45['ok']){const _0x4545ab=await _0x22cd45['json']()['catch'](()=>({'message':_0x22cd45['statusText']}));throw new Error(_0x4545ab['message']||'Failed\x20to\x20get\x20teams');}return await _0x22cd45['json']();},async 'getTeam'(_0x2c3ce3){const _0x167c78=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2c3ce3));if(!_0x167c78['ok']){const _0x3fc8c5=await _0x167c78['json']()['catch'](()=>({'message':_0x167c78['statusText']}));throw new Error(_0x3fc8c5['message']||'Failed\x20to\x20get\x20team');}return await _0x167c78['json']();},async 'createTeam'(_0x24ed46){const _0x489c79=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24ed46)});if(!_0x489c79['ok']){const _0x5d09f3=await _0x489c79['json']()['catch'](()=>({'message':_0x489c79['statusText']}));throw new Error(_0x5d09f3['message']||'Failed\x20to\x20create\x20team');}return await _0x489c79['json']();},async 'updateTeam'(_0x36c4f3,_0x163fa9){const _0x38ade7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x36c4f3),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x163fa9)});if(!_0x38ade7['ok']){const _0x168902=await _0x38ade7['json']()['catch'](()=>({'message':_0x38ade7['statusText']}));throw new Error(_0x168902['message']||'Failed\x20to\x20update\x20team');}return await _0x38ade7['json']();},async 'deleteTeam'(_0x5bf272){const _0xdbe280=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5bf272),{'method':'DELETE'});if(!_0xdbe280['ok']){const _0x56f7cf=await _0xdbe280['json']()['catch'](()=>({'message':_0xdbe280['statusText']}));throw new Error(_0x56f7cf['message']||'Failed\x20to\x20delete\x20team');}return await _0xdbe280['json']();},async 'addTeamMember'(_0x26db57,_0x3f7c80){const _0x42a88e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x26db57)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3f7c80})});if(!_0x42a88e['ok']){const _0x487db4=await _0x42a88e['json']()['catch'](()=>({'message':_0x42a88e['statusText']}));throw new Error(_0x487db4['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x42a88e['json']();},async 'removeTeamMember'(_0x226747,_0x85fec1){const _0x2c854f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x226747)+'/members/'+encodeURIComponent(_0x85fec1),{'method':'DELETE'});if(!_0x2c854f['ok']){const _0x36d4d2=await _0x2c854f['json']()['catch'](()=>({'message':_0x2c854f['statusText']}));throw new Error(_0x36d4d2['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x2c854f['json']();},async 'getBindings'(_0x483a01={}){const _0x50e384=new URLSearchParams();if(_0x483a01['resource_type'])_0x50e384['set']('resource_type',_0x483a01['resource_type']);if(_0x483a01['resource_id'])_0x50e384['set']('resource_id',_0x483a01['resource_id']);if(_0x483a01['subject_type'])_0x50e384['set']('subject_type',_0x483a01['subject_type']);if(_0x483a01['subject_id'])_0x50e384['set']('subject_id',_0x483a01['subject_id']);const _0xb48a16=_0x50e384['toString'](),_0x8fa2f8=await fetch(API_BASE+'/bindings'+(_0xb48a16?'?'+_0xb48a16:''));if(!_0x8fa2f8['ok']){const _0x55f404=await _0x8fa2f8['json']()['catch'](()=>({'message':_0x8fa2f8['statusText']}));throw new Error(_0x55f404['message']||'Failed\x20to\x20get\x20bindings');}return await _0x8fa2f8['json']();},async 'createBinding'(_0x4a625b){const _0x50304b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4a625b)});if(!_0x50304b['ok']){const _0x58b335=await _0x50304b['json']()['catch'](()=>({'message':_0x50304b['statusText']}));throw new Error(_0x58b335['message']||'Failed\x20to\x20create\x20binding');}return await _0x50304b['json']();},async 'updateBinding'(_0x33305b,_0x59a9e4){const _0x3cf0cd=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x33305b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x59a9e4)});if(!_0x3cf0cd['ok']){const _0x2d8426=await _0x3cf0cd['json']()['catch'](()=>({'message':_0x3cf0cd['statusText']}));throw new Error(_0x2d8426['message']||'Failed\x20to\x20update\x20binding');}return await _0x3cf0cd['json']();},async 'deleteBinding'(_0x465ee2){const _0x3086ac=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x465ee2),{'method':'DELETE'});if(!_0x3086ac['ok']){const _0x1da9c1=await _0x3086ac['json']()['catch'](()=>({'message':_0x3086ac['statusText']}));throw new Error(_0x1da9c1['message']||'Failed\x20to\x20delete\x20binding');}return await _0x3086ac['json']();},async 'getRoleDefinitions'(){const _0x1254d6=await fetch(API_BASE+'/roles');if(!_0x1254d6['ok']){const _0x37311a=await _0x1254d6['json']()['catch'](()=>({'message':_0x1254d6['statusText']}));throw new Error(_0x37311a['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1254d6['json']();},async 'getRoleDefinition'(_0x15cb64){const _0x3e1962=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x15cb64));if(!_0x3e1962['ok']){const _0x4499f8=await _0x3e1962['json']()['catch'](()=>({'message':_0x3e1962['statusText']}));throw new Error(_0x4499f8['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3e1962['json']();},async 'createRoleDefinition'(_0xd1bfce){const _0x3754ce=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd1bfce)});if(!_0x3754ce['ok']){const _0x527db2=await _0x3754ce['json']()['catch'](()=>({'message':_0x3754ce['statusText']}));throw new Error(_0x527db2['message']||_0x527db2['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3754ce['json']();},async 'updateRoleDefinition'(_0x10e5ca,_0x177dd5){const _0x355242=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x10e5ca),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x177dd5)});if(!_0x355242['ok']){const _0x511225=await _0x355242['json']()['catch'](()=>({'message':_0x355242['statusText']}));throw new Error(_0x511225['message']||_0x511225['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x355242['json']();},async 'deleteRoleDefinition'(_0x63e646){const _0x533281=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x63e646),{'method':'DELETE'});if(!_0x533281['ok']){const _0x5bdc9f=await _0x533281['json']()['catch'](()=>({'message':_0x533281['statusText']}));throw new Error(_0x5bdc9f['message']||_0x5bdc9f['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x533281['json']();},async 'getAvailablePermissions'(){const _0x2e0841=await fetch(API_BASE+'/roles/available-permissions');if(!_0x2e0841['ok']){const _0x35854b=await _0x2e0841['json']()['catch'](()=>({'message':_0x2e0841['statusText']}));throw new Error(_0x35854b['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x2e0841['json']();},async 'getGitProviderAllowedTeams'(_0x264db8){const _0x27d8f0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x264db8)+'/allowed-teams');if(!_0x27d8f0['ok']){const _0x1bf7c8=await _0x27d8f0['json']()['catch'](()=>({'message':_0x27d8f0['statusText']}));throw new Error(_0x1bf7c8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x27d8f0['json']();},async 'setGitProviderAllowedTeams'(_0x4998f3,_0x52bae5){const _0x244732=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4998f3)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x52bae5})});if(!_0x244732['ok']){const _0x57da88=await _0x244732['json']()['catch'](()=>({'message':_0x244732['statusText']}));throw new Error(_0x57da88['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x244732['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x4c2902=toastState['baseBottom'];toastState['toasts']['forEach'](_0xe35c97=>{_0xe35c97['el']['style']['bottom']=_0x4c2902+'px';const _0x4c0110=_0xe35c97['el']['offsetHeight']||toastState['defaultHeight'];_0x4c2902+=_0x4c0110+toastState['gap'];});});}function removeToastById(_0x365ae5){const _0xb4b21b=toastState['toasts']['findIndex'](_0x54515d=>_0x54515d['id']===_0x365ae5);if(_0xb4b21b===-0x1)return;const _0xa9b087=toastState['toasts'][_0xb4b21b];if(_0xa9b087['timeoutId'])clearTimeout(_0xa9b087['timeoutId']);_0xa9b087['el']['classList']['remove']('show'),setTimeout(()=>_0xa9b087['el']['remove'](),0x12c),toastState['toasts']['splice'](_0xb4b21b,0x1),repositionAllToasts();}function registerToast(_0x1cd0b4){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x1cd0b4),repositionAllToasts(),_0x1cd0b4['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x1b824e){if(_0x1b824e===null||_0x1b824e===undefined)return'';return String(_0x1b824e)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x2985b2,_0x1d7728){if(_0x2985b2&&typeof _0x2985b2==='object'&&!Array['isArray'](_0x2985b2))return{'code':typeof _0x2985b2['text']==='string'?_0x2985b2['text']:'','language':typeof _0x2985b2['lang']==='string'?_0x2985b2['lang']:''};return{'code':typeof _0x2985b2==='string'?_0x2985b2:'','language':typeof _0x1d7728==='string'?_0x1d7728:''};}function buildMermaidBlock(_0x1ceffc){const _0x31e826=String(_0x1ceffc||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x31e826))+'\x22>'+escapeHtmlValue(_0x31e826)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x46c478=new marked['Renderer'](),_0x1e6556=_0x46c478['code']['bind'](_0x46c478);return _0x46c478['code']=function(_0x351a50,_0x3328a3,..._0x3034ee){const {code:_0x5ecec5,language:_0x449464}=getMarkdownCodeBlockPayload(_0x351a50,_0x3328a3),_0x16508c=String(_0x449464||'')['trim']()['toLowerCase']();if(_0x16508c==='mermaid')return buildMermaidBlock(_0x5ecec5);const _0x3c08db=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x3c08db&&_0x16508c)try{const _0x1fc544=_0x3c08db['getLanguage'](_0x16508c)?_0x16508c:'plaintext',_0x3dc6b2=_0x3c08db['highlight'](_0x5ecec5,{'language':_0x1fc544})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x16508c)+'\x22>'+_0x3dc6b2+'</code></pre>';}catch(_0x1dc94a){console['error']('Syntax\x20highlighting\x20error:',_0x1dc94a);}return _0x1e6556(_0x351a50,_0x3328a3,..._0x3034ee);},sharedMarkedRenderer=_0x46c478,_0x46c478;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x4a6c92=window['mermaid'];if(!_0x4a6c92||typeof _0x4a6c92['initialize']!=='function')return _0x4a6c92||null;return _0x4a6c92['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4a6c92;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x119e12,_0x39469f)=>{const _0x3ce292=()=>_0x119e12(configureMermaidInstance()),_0x3f6524=()=>{mermaidLoadPromise=null,_0x39469f(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x1b92cd=document['getElementById'](MERMAID_SCRIPT_ID);!_0x1b92cd&&(_0x1b92cd=document['createElement']('script'),_0x1b92cd['id']=MERMAID_SCRIPT_ID,_0x1b92cd['src']=MERMAID_SCRIPT_SRC,_0x1b92cd['async']=!![],document['head']['appendChild'](_0x1b92cd));if(window['mermaid']){_0x3ce292();return;}_0x1b92cd['addEventListener']('load',_0x3ce292,{'once':!![]}),_0x1b92cd['addEventListener']('error',_0x3f6524,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x11df7a){const _0x4ed22f=_0x11df7a['getAttribute']('data-mermaid-source');if(!_0x4ed22f)return null;let _0xad0cd3=_0x4ed22f;try{_0xad0cd3=decodeURIComponent(_0x4ed22f);}catch{}return _0x11df7a['textContent']=_0xad0cd3,_0x11df7a['removeAttribute']('data-processed'),_0x11df7a['removeAttribute']('aria-roledescription'),_0x11df7a['removeAttribute']('role'),_0x11df7a['removeAttribute']('aria-label'),_0xad0cd3;}function collectMermaidNodes(_0x404ce5,_0x45460a){if(!(_0x404ce5 instanceof Element))return;_0x404ce5['matches']('.mermaid[data-mermaid-source]')&&_0x45460a['add'](_0x404ce5),_0x404ce5['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x272954=>{_0x45460a['add'](_0x272954);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x54bb95=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x170cfe=>setTimeout(_0x170cfe,0x0);_0x54bb95(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0xd07517=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0xd07517);});});}function queueMermaidRender(_0x14dfad){const _0x9c4461=new Set();_0x14dfad instanceof Document||_0x14dfad instanceof DocumentFragment?_0x14dfad['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x207cae=>_0x9c4461['add'](_0x207cae)):collectMermaidNodes(_0x14dfad,_0x9c4461);if(_0x9c4461['size']===0x0)return;_0x9c4461['forEach'](_0x47085d=>pendingMermaidNodes['add'](_0x47085d)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5290a9=Array['from'](pendingMermaidNodes)['filter'](_0x3653a0=>_0x3653a0['isConnected']);pendingMermaidNodes['clear']();if(_0x5290a9['length']===0x0)return;const _0x4c83ba=await loadMermaid();if(!_0x4c83ba)return;configureMermaidInstance();const _0x18124f=getMermaidTheme();for(const _0x1075ac of _0x5290a9){const _0x386d42=_0x1075ac['getAttribute']('data-mermaid-source');if(!_0x386d42)continue;const _0x3b9a7d=_0x1075ac['getAttribute']('data-processed')==='true';if(_0x3b9a7d&&_0x1075ac['dataset']['mermaidTheme']===_0x18124f)continue;restoreMermaidSource(_0x1075ac);try{if(typeof _0x4c83ba['run']==='function')await _0x4c83ba['run']({'nodes':[_0x1075ac]});else typeof _0x4c83ba['init']==='function'&&_0x4c83ba['init'](undefined,[_0x1075ac]);_0x1075ac['dataset']['mermaidTheme']=_0x18124f,delete _0x1075ac['dataset']['mermaidError'];}catch(_0x3e8334){console['error']('Mermaid\x20render\x20failed:',_0x3e8334),restoreMermaidSource(_0x1075ac),_0x1075ac['dataset']['mermaidError']='true',delete _0x1075ac['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x13f2a3=>{_0x13f2a3['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x13f2a3);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x51676f=>{_0x51676f['forEach'](_0x255a9d=>{_0x255a9d['addedNodes']['forEach'](_0x43be1e=>{_0x43be1e['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x43be1e);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x16336a){const _0x28c4e6=new Date(_0x16336a),_0x41d454=new Date(),_0x6a2b68=_0x41d454-_0x28c4e6,_0x4d2cd2=Math['floor'](_0x6a2b68/0x3e8),_0x3f2c63=Math['floor'](_0x4d2cd2/0x3c),_0x3da884=Math['floor'](_0x3f2c63/0x3c),_0xa2990f=Math['floor'](_0x3da884/0x18);if(_0x4d2cd2<0x3c)return'now';if(_0x3f2c63<0x3c)return _0x3f2c63+'m\x20ago';if(_0x3da884<0x18)return _0x3da884+'h\x20ago';return _0xa2990f+'d\x20ago';},'getStatusIcon'(_0x163a84){switch(_0x163a84){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x14e172){switch(_0x14e172){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x5becba,_0x1ebce1=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x59353b={};_0x59353b['text/plain']=new Blob([_0x5becba],{'type':'text/plain'});_0x1ebce1&&(_0x59353b['text/html']=new Blob([_0x1ebce1],{'type':'text/html'}));const _0x4b4806=new ClipboardItem(_0x59353b);return await navigator['clipboard']['write']([_0x4b4806]),!![];}catch(_0x1ecb97){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1ecb97);}try{const _0x35fc34=_0x3e6de0=>{_0x3e6de0['preventDefault'](),_0x3e6de0['clipboardData']['setData']('text/plain',_0x5becba),_0x1ebce1&&_0x3e6de0['clipboardData']['setData']('text/html',_0x1ebce1);};document['addEventListener']('copy',_0x35fc34);const _0x228e81=document['execCommand']('copy');document['removeEventListener']('copy',_0x35fc34);if(_0x228e81)return!![];}catch(_0x493166){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x493166);}try{const _0x55578b=document['createElement']('textarea');_0x55578b['value']=_0x5becba,_0x55578b['style']['position']='fixed',_0x55578b['style']['opacity']='0',_0x55578b['style']['pointerEvents']='none',document['body']['appendChild'](_0x55578b),_0x55578b['select']();const _0x1ee14e=document['execCommand']('copy');return document['body']['removeChild'](_0x55578b),_0x1ee14e;}catch(_0x426342){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x426342),![];}},'showToast'(_0xce16fb,_0x47b95c='info'){const _0x5a27e5=getNextToastId(),_0x5688df=document['createElement']('div');_0x5688df['className']='toast\x20toast-'+_0x47b95c,_0x5688df['textContent']=_0xce16fb,_0x5688df['dataset']['toastId']=_0x5a27e5,document['body']['appendChild'](_0x5688df);const _0x41ff8b=_0x47b95c==='error'?0x2710:0xbb8,_0x126bb3=setTimeout(()=>{removeToastById(_0x5a27e5);},_0x41ff8b),_0x337ce0={'id':_0x5a27e5,'el':_0x5688df,'timeoutId':_0x126bb3};return registerToast(_0x337ce0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5688df['classList']['add']('show');});}),_0x5a27e5;},'showError'(_0x38fb8c){console['error'](_0x38fb8c);const _0x49cfa7=typeof _0x38fb8c==='string'?_0x38fb8c:_0x38fb8c['message']||'An\x20error\x20occurred';this['showToast'](_0x49cfa7,'error');},'showSuccess'(_0x45287d){this['showToast'](_0x45287d,'success');},'capitalize'(_0x4a9345){if(!_0x4a9345)return'';return _0x4a9345['charAt'](0x0)['toUpperCase']()+_0x4a9345['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x9ebc86){return escapeHtmlValue(_0x9ebc86);},'ansiToHtml'(_0x39f09b){if(_0x39f09b===null||_0x39f09b===undefined)return'';let _0x1a9063=this['escapeHtml'](_0x39f09b);const _0x35a5fe={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0x465707={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x349b19=0x0;return _0x1a9063=_0x1a9063['replace'](/\x1b\[([0-9;]*)m/g,(_0x16bd4f,_0x5c0c24)=>{if(!_0x5c0c24||_0x5c0c24==='0'){const _0x489f53='</span>'['repeat'](_0x349b19);return _0x349b19=0x0,_0x489f53;}const _0x5a2900=_0x5c0c24['split'](';'),_0x425f48=[];for(const _0x2c4b53 of _0x5a2900){if(_0x2c4b53==='1')_0x425f48['push']('font-weight:bold');else{if(_0x2c4b53==='2')_0x425f48['push']('opacity:0.7');else{if(_0x2c4b53==='3')_0x425f48['push']('font-style:italic');else{if(_0x2c4b53==='4')_0x425f48['push']('text-decoration:underline');else{if(_0x2c4b53==='9')_0x425f48['push']('text-decoration:line-through');else{if(_0x35a5fe[_0x2c4b53])_0x425f48['push']('color:'+_0x35a5fe[_0x2c4b53]);else{if(_0x465707[_0x2c4b53])_0x425f48['push']('background-color:'+_0x465707[_0x2c4b53]);}}}}}}}if(_0x425f48['length']>0x0)return _0x349b19++,'<span\x20style=\x22'+_0x425f48['join'](';')+'\x22>';return'';}),_0x1a9063+='</span>'['repeat'](_0x349b19),_0x1a9063=_0x1a9063['replace'](/\\u001b\[([0-9;]*)m/g,(_0x29d009,_0x1321a1)=>{if(!_0x1321a1||_0x1321a1==='0')return'';const _0x517131=_0x1321a1['split'](';'),_0x4c752c=[];for(const _0x481e49 of _0x517131){if(_0x481e49==='1')_0x4c752c['push']('font-weight:bold');else{if(_0x35a5fe[_0x481e49])_0x4c752c['push']('color:'+_0x35a5fe[_0x481e49]);else{if(_0x465707[_0x481e49])_0x4c752c['push']('background-color:'+_0x465707[_0x481e49]);}}}if(_0x4c752c['length']>0x0)return'<span\x20style=\x22'+_0x4c752c['join'](';')+'\x22>';return'';}),_0x1a9063;},'showModal'({title:_0x4199ad,content:_0x15f00e,buttons:buttons=[]}){const _0x3738f9='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x4199ad)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x15f00e+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x19ce4d,_0xd02056)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x19ce4d['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xd02056+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x19ce4d['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x6fc013=document['createElement']('div');_0x6fc013['id']='utils-modal',_0x6fc013['className']='modal',_0x6fc013['innerHTML']=_0x3738f9,document['body']['appendChild'](_0x6fc013);const _0x353689=document['getElementById']('utils-modal-close');_0x353689&&_0x353689['addEventListener']('click',()=>this['hideModal']());const _0x35dd73=_0x6fc013['querySelectorAll']('[data-btn-index]');_0x35dd73['forEach'](_0x5a80f3=>{const _0x4be12b=parseInt(_0x5a80f3['dataset']['btnIndex']);buttons[_0x4be12b]?.['onClick']&&_0x5a80f3['addEventListener']('click',buttons[_0x4be12b]['onClick']);});const _0x445e26=document['getElementById']('utils-modal-overlay');_0x445e26&&_0x445e26['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x333619=document['getElementById']('utils-modal');_0x333619&&_0x333619['remove']();},'parseKeyValuePairs'(_0x1b1de3){const _0x17454d={};if(!_0x1b1de3)return _0x17454d;return _0x1b1de3['split'](/\r?\n/)['map'](_0x54316b=>_0x54316b['trim']())['filter'](Boolean)['forEach'](_0x3d2731=>{const _0x4f31dc=_0x3d2731['indexOf']('=');if(_0x4f31dc>0x0){const _0x3082c1=_0x3d2731['slice'](0x0,_0x4f31dc)['trim'](),_0x37d149=_0x3d2731['slice'](_0x4f31dc+0x1)['trim']();if(_0x3082c1)_0x17454d[_0x3082c1]=_0x37d149;}}),_0x17454d;},'debounce'(_0x3cf860,_0x25fe1a=0xfa){let _0x531729=null;return(..._0x2605d0)=>{clearTimeout(_0x531729),_0x531729=setTimeout(()=>_0x3cf860['apply'](this,_0x2605d0),_0x25fe1a);};},'formatTimestamp'(_0x2f13ea){if(!_0x2f13ea)return'N/A';const _0x28c8c1=new Date(_0x2f13ea);return _0x28c8c1['toLocaleDateString']()+'\x20'+_0x28c8c1['toLocaleTimeString']();},'getQueryParams'(){const _0x191862=new URLSearchParams(window['location']['search']),_0x40f05c={};for(const [_0x510b13,_0x24e2d0]of _0x191862){_0x40f05c[_0x510b13]=_0x24e2d0;}return _0x40f05c;},'formatDuration'(_0x5a08aa,_0x1d7be8){if(!_0x5a08aa)return'N/A';const _0x31d62f=new Date(_0x5a08aa),_0x50aabe=_0x1d7be8?new Date(_0x1d7be8):new Date(),_0x216bea=_0x50aabe-_0x31d62f;if(_0x216bea<0x0)return'0s';const _0x560328=Math['floor'](_0x216bea/0x3e8),_0x5553ab=Math['floor'](_0x560328/0x3c),_0x5572ac=Math['floor'](_0x5553ab/0x3c),_0x581fa4=Math['floor'](_0x5572ac/0x18);if(_0x560328<0x3c)return _0x560328+'s';if(_0x5553ab<0x3c)return _0x5553ab+'m\x20'+_0x560328%0x3c+'s';if(_0x5572ac<0x18)return _0x5572ac+'h\x20'+_0x5553ab%0x3c+'m\x20'+_0x560328%0x3c+'s';return _0x581fa4+'d\x20'+_0x5572ac%0x18+'h\x20'+_0x5553ab%0x3c+'m';},'renderMarkdown'(_0x5a0d07,_0x236ad7={}){if(!_0x5a0d07)return'';_0x5a0d07=this['rewriteAttachmentLinks'](_0x5a0d07,_0x236ad7),_0x5a0d07=this['rewriteColorSyntax'](_0x5a0d07);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5a0d07,_0x236ad7);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5a0d07);}catch(_0x153d30){return console['error']('Markdown\x20parsing\x20error:',_0x153d30),this['renderMarkdownFallback'](_0x5a0d07,_0x236ad7);}},'rewriteAttachmentLinks'(_0x450913,_0x3f9f99={}){const _0x9159e2=typeof _0x3f9f99['resolveAttachmentUrl']==='function'?_0x3f9f99['resolveAttachmentUrl']:_0x3f9f99['taskId']?_0x31fde8=>API_BASE+'/tasks/'+_0x3f9f99['taskId']+'/attachments/'+encodeURIComponent(_0x31fde8):null;if(!_0x9159e2)return _0x450913;return String(_0x450913)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x1c2d94,_0x2e06a9)=>{const _0x11dedf=String(_0x2e06a9||'')['trim']();if(!_0x11dedf)return _0x1c2d94;let _0x1c6b7f=_0x11dedf;try{_0x1c6b7f=decodeURIComponent(_0x11dedf);}catch{}const _0x10cb90=_0x9159e2(_0x1c6b7f);if(!_0x10cb90)return _0x1c2d94;return']('+_0x10cb90+')';});},'rewriteColorSyntax'(_0x42e86a){if(!_0x42e86a)return _0x42e86a;return String(_0x42e86a)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x166b6a,_0x353b06,_0x566358)=>{const _0x424434=this['rewriteColorSyntax'](_0x566358);return'<span\x20style=\x22color:\x20'+_0x353b06+'\x22>'+_0x424434+'</span>';});},'renderMarkdownFallback'(_0x3b1c15,_0x53e05c={}){if(!_0x3b1c15)return'';_0x3b1c15=_0x3b1c15['replace'](/\r\n/g,'\x0a'),_0x3b1c15=_0x3b1c15['replace'](/\r/g,'\x0a'),_0x3b1c15=this['rewriteAttachmentLinks'](_0x3b1c15,_0x53e05c);let _0x4075ff=this['escapeHtml'](_0x3b1c15);return _0x4075ff=_0x4075ff['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x4075ff=_0x4075ff['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x4075ff=_0x4075ff['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x4075ff=_0x4075ff['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x4075ff=_0x4075ff['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x4075ff=_0x4075ff['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x4075ff=_0x4075ff['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x4075ff=_0x4075ff['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x4075ff=_0x4075ff['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x4075ff=_0x4075ff['replace'](/\n\n/g,'</p><p>'),_0x4075ff=_0x4075ff['replace'](/\n/g,'<br>'),'<p>'+_0x4075ff+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x305bbc=new Uint8Array(0x10);crypto['getRandomValues'](_0x305bbc),_0x305bbc[0x6]=_0x305bbc[0x6]&0xf|0x40,_0x305bbc[0x8]=_0x305bbc[0x8]&0x3f|0x80;const _0x210ab6=Array['from'](_0x305bbc,_0x4ed157=>_0x4ed157['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x210ab6['slice'](0x0,0x8)+'-'+_0x210ab6['slice'](0x8,0xc)+'-'+_0x210ab6['slice'](0xc,0x10)+'-'+_0x210ab6['slice'](0x10,0x14)+'-'+_0x210ab6['slice'](0x14);}};export class CustomSelect{constructor(_0x59d31d,_0x4f81f3={}){this['nativeSelect']=_0x59d31d,this['options']=_0x4f81f3,this['isOpen']=![],this['selectedValue']=_0x59d31d['value']||'',this['searchable']=_0x4f81f3['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4604f9=document['createElement']('div');_0x4604f9['className']='custom-select';const _0x5198fd=document['createElement']('div');_0x5198fd['className']='custom-select-trigger',_0x5198fd['setAttribute']('tabindex','0'),_0x5198fd['setAttribute']('role','button'),_0x5198fd['setAttribute']('aria-haspopup','listbox');const _0x1805e1=document['createElement']('span');_0x1805e1['className']='custom-select-trigger-text';const _0x74180c=document['createElement']('span');_0x74180c['className']='custom-select-arrow',_0x74180c['textContent']='▼',_0x5198fd['appendChild'](_0x1805e1),_0x5198fd['appendChild'](_0x74180c);const _0x1b8c53=document['createElement']('div');_0x1b8c53['className']='custom-select-dropdown',_0x1b8c53['setAttribute']('role','listbox');if(this['searchable']){const _0x129bf2=document['createElement']('div');_0x129bf2['className']='custom-select-search';const _0x2ef2f0=document['createElement']('input');_0x2ef2f0['type']='text',_0x2ef2f0['className']='custom-select-search-input',_0x2ef2f0['placeholder']='Type\x20to\x20search...',_0x2ef2f0['setAttribute']('aria-label','Search\x20options'),_0x2ef2f0['addEventListener']('input',_0x328b7b=>{this['searchQuery']=_0x328b7b['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x2ef2f0['addEventListener']('keydown',_0x18150a=>{if(_0x18150a['key']==='Escape')_0x18150a['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x18150a['key']==='Enter'){_0x18150a['preventDefault'](),_0x18150a['stopPropagation']();const _0x2d9640=_0x1b8c53['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2d9640){const _0x2ae8c7=_0x2d9640['getAttribute']('data-value');this['select'](_0x2ae8c7);}}}}),_0x129bf2['appendChild'](_0x2ef2f0),_0x1b8c53['appendChild'](_0x129bf2),this['searchInput']=_0x2ef2f0;}const _0x1ef40b=document['createElement']('div');_0x1ef40b['className']='custom-select-options',_0x1b8c53['appendChild'](_0x1ef40b),_0x4604f9['appendChild'](_0x5198fd),_0x4604f9['appendChild'](_0x1b8c53),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4604f9,this['nativeSelect']),this['wrapper']=_0x4604f9,this['trigger']=_0x5198fd,this['triggerText']=_0x1805e1,this['dropdown']=_0x1b8c53,this['optionsContainer']=_0x1ef40b,_0x5198fd['addEventListener']('click',()=>this['toggle']()),_0x5198fd['addEventListener']('keydown',_0x259e87=>this['handleKeydown'](_0x259e87)),document['addEventListener']('click',_0x72a8d8=>{!_0x4604f9['contains'](_0x72a8d8['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x27a59e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x27a59e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x2b9eea=new MutationObserver(()=>{this['updateDisabledState']();});_0x2b9eea['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x3d6805=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x3d6805['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x395704=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x395704),this['trigger']['setAttribute']('aria-disabled',_0x395704?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x395704?'-1':'0'),_0x395704&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x4b1c6a=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x5bc821=_0x4b1c6a['filter'](_0x42bae6=>!_0x42bae6['disabled']&&!_0x42bae6['hidden']);_0x4b1c6a['forEach']((_0x334362,_0x8cb48)=>{const _0x599e04=document['createElement']('div');_0x599e04['className']='custom-select-option',_0x599e04['textContent']=_0x334362['textContent'],_0x599e04['setAttribute']('data-value',_0x334362['value']),_0x599e04['setAttribute']('data-index',_0x8cb48),_0x599e04['setAttribute']('role','option'),_0x334362['disabled']?_0x599e04['classList']['add']('disabled'):_0x599e04['addEventListener']('click',()=>this['select'](_0x334362['value'])),_0x334362['value']===this['selectedValue']&&_0x599e04['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x599e04),this['allOptions']['push']({'element':_0x599e04,'text':_0x334362['textContent']['toLowerCase'](),'value':_0x334362['value'],'disabled':_0x334362['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3a04bb=this['searchInput']['parentElement'];_0x5bc821['length']>0x3?_0x3a04bb['style']['display']='':_0x3a04bb['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2b78c6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x193f4d=>{if(!_0x2b78c6||_0x193f4d['disabled'])_0x193f4d['element']['style']['display']='';else{const _0x264d74=_0x193f4d['text']['includes'](_0x2b78c6);_0x193f4d['element']['style']['display']=_0x264d74?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2ea686){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2ea686,this['nativeSelect']['value']=_0x2ea686;const _0x1ee825=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1ee825),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3e4dbb=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3e4dbb&&(this['triggerText']['textContent']=_0x3e4dbb['textContent'],_0x3e4dbb['disabled']||_0x3e4dbb['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x355746=>{_0x355746['getAttribute']('data-value')===this['selectedValue']?_0x355746['classList']['add']('selected'):_0x355746['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x433eb7=window['getComputedStyle'](this['dropdown']);if(_0x433eb7['position']==='fixed'){const _0x17ff82=this['trigger']['getBoundingClientRect'](),_0x17d78e=parseInt(_0x433eb7['maxHeight'])||0xc8,_0xecd5b8=window['innerHeight'],_0x52ad33=_0xecd5b8-_0x17ff82['bottom'],_0xb40a2a=_0x17ff82['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x373d41;_0x52ad33<_0x17d78e&&_0xb40a2a>_0x52ad33?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0xecd5b8-_0x17ff82['top']+'px',_0x373d41=Math['min'](_0x17d78e,_0xb40a2a-0xa),this['dropdown']['style']['maxHeight']=_0x373d41+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x17ff82['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x373d41=Math['min'](_0x17d78e,_0x52ad33-0xa),this['dropdown']['style']['maxHeight']=_0x373d41+'px');if(this['optionsContainer']){let _0x1b685d=_0x373d41;if(this['searchInput']){const _0x5a56cc=this['searchInput']['parentElement'];_0x5a56cc&&(_0x1b685d-=_0x5a56cc['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1b685d)+'px';}this['dropdown']['style']['left']=_0x17ff82['left']+'px',this['dropdown']['style']['width']=_0x17ff82['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xc11c6a=this['searchInput']['parentElement'];_0xc11c6a&&_0xc11c6a['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x3e7033){if(this['nativeSelect']['disabled'])return;if(_0x3e7033['key']==='Enter'||_0x3e7033['key']==='\x20')_0x3e7033['preventDefault'](),this['toggle']();else _0x3e7033['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x105cff='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x105cff),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xbab33c=document['getElementById']('confirm-dialog-close'),_0x100286=document['getElementById']('confirm-dialog-cancel'),_0x2df082=document['getElementById']('confirm-dialog-confirm'),_0x3d7b1a=this['_modal']['querySelector']('.modal-overlay');_0xbab33c['addEventListener']('click',()=>this['_resolve'](![])),_0x100286['addEventListener']('click',()=>this['_resolve'](![])),_0x2df082['addEventListener']('click',()=>this['_resolve'](!![])),_0x3d7b1a['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x4efbdc=>{if(_0x4efbdc['key']==='Escape')_0x4efbdc['preventDefault'](),this['_resolve'](![]);else _0x4efbdc['key']==='Enter'&&(_0x4efbdc['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4f7642,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2cc41f=>{this['_resolvePromise']=_0x2cc41f,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4f7642;const _0x35f81f=document['getElementById']('confirm-dialog-cancel'),_0x39216f=document['getElementById']('confirm-dialog-confirm');_0x35f81f['textContent']=cancelText,_0x39216f['textContent']=confirmText,_0x39216f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x39216f['focus']();});},'_resolve'(_0x60ddd1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x60ddd1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x2e6abc,_0x59efdb={}){this['container']=_0x2e6abc,this['options']={'placeholder':_0x59efdb['placeholder']||'Type\x20to\x20search...','maxItems':_0x59efdb['maxItems']||0x64,'loadItems':_0x59efdb['loadItems']||(async()=>[]),'renderItem':_0x59efdb['renderItem']||(_0xaaa199=>({'primary':String(_0xaaa199),'secondary':''})),'onSelect':_0x59efdb['onSelect']||(()=>{}),'filterItems':_0x59efdb['filterItems']||null,'getItemValue':_0x59efdb['getItemValue']||(_0x5d4076=>_0x5d4076),'sortItems':_0x59efdb['sortItems']||null,'debounceMs':_0x59efdb['debounceMs']||0xc8,'minCharsForSearch':_0x59efdb['minCharsForSearch']||0x0,'emptyMessage':_0x59efdb['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x59efdb['loadingMessage']||'Loading...','preload':_0x59efdb['preload']!==![],'searchMode':_0x59efdb['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='&times;',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x3db129=>this['onBlur'](_0x3db129)),this['input']['addEventListener']('input',_0x277092=>this['onInput'](_0x277092)),this['input']['addEventListener']('keydown',_0x35f4c9=>this['onKeydown'](_0x35f4c9)),this['clearBtn']['addEventListener']('mousedown',_0x26d703=>{_0x26d703['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x2cbbbd=>{_0x2cbbbd['preventDefault']();}),document['addEventListener']('click',_0x3b26bb=>{!this['wrapper']['contains'](_0x3b26bb['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0x36a937){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x36a937);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x36fef0){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x513189){const _0x1f8034=_0x513189['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1f8034);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1f8034):this['loadAndShow'](_0x1f8034);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x1baeed){switch(_0x1baeed['key']){case'ArrowDown':_0x1baeed['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x1baeed['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x1baeed['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x1baeed['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x399d26){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x1cab46=this['selectedIndex']+_0x399d26;if(_0x1cab46>=0x0&&_0x1cab46<this['filteredItems']['length']){this['selectedIndex']=_0x1cab46,this['updateSelectionHighlight']();const _0x5bebbe=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5bebbe[this['selectedIndex']]&&_0x5bebbe[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x5a2350=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5a2350['forEach']((_0x2972c8,_0x2e71bd)=>{_0x2972c8['classList']['toggle']('keyboard-selected',_0x2e71bd===this['selectedIndex']);});}async['loadAndShow'](_0x158f37){this['showLoading']();try{const _0x1151fc=await this['options']['loadItems'](_0x158f37);if(this['options']['searchMode']==='server'){let _0x5f3ce6=_0x1151fc;this['options']['sortItems']&&(_0x5f3ce6=this['options']['sortItems']([..._0x1151fc]));this['filteredItems']=_0x5f3ce6;const _0x2dc858=this['filteredItems']['length']>=this['options']['maxItems'];_0x2dc858&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2dc858),this['open']();}else this['allItems']=_0x1151fc,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x158f37);}catch(_0x4c9210){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x4c9210),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x57807e){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x57807e):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x283afd=this['filteredItems']['length']>=this['options']['maxItems'];_0x283afd&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x283afd),this['open']();}['renderItems'](_0x2cf239){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x2e3af5,_0x5cf34e)=>{const _0x104ff1=document['createElement']('div');_0x104ff1['className']='autocomplete-select-item',_0x104ff1['setAttribute']('role','option'),_0x104ff1['setAttribute']('data-index',_0x5cf34e);const _0x20afd5=this['options']['renderItem'](_0x2e3af5);let _0x1f3144='';_0x20afd5['icon']&&(_0x1f3144='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x20afd5['iconClass']||'')+'\x22>'+_0x20afd5['icon']+'</span>'),_0x104ff1['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1f3144+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x20afd5['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x20afd5['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x20afd5['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x104ff1['addEventListener']('click',()=>{this['selectItem'](_0x2e3af5);}),_0x104ff1['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x5cf34e,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x104ff1);}),_0x2cf239?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x5cee98){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5cee98)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1484f4){this['selectedItem']=_0x1484f4;const _0x1c1a56=this['options']['renderItem'](_0x1484f4);this['input']['value']=_0x1c1a56['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1484f4);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x519307){if(_0x519307){this['selectedItem']=_0x519307;const _0x40795f=this['options']['renderItem'](_0x519307);this['input']['value']=_0x40795f['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1cff3c){this['allItems']=_0x1cff3c,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x31f8c2){this['input']['placeholder']=_0x31f8c2;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3a1d08=null){const _0x236bf1=document['getElementById']('admin-menu-container'),_0x593927=document['getElementById']('admin-menu-btn'),_0x44812e=document['getElementById']('admin-menu');if(!_0x236bf1||!_0x593927||!_0x44812e)return;try{!_0x3a1d08&&(_0x3a1d08=await API['getCurrentUser']());if(_0x3a1d08){const _0x15566a=window['Permissions'],_0x1188fb=_0x15566a['hasServerPermission'](_0x3a1d08,'*')||_0x15566a['hasEnvPermission'](_0x3a1d08,'environments:manage')||_0x15566a['hasServerPermission'](_0x3a1d08,'users:create')||_0x15566a['hasTeamPermission'](_0x3a1d08,'teams:manage')||_0x15566a['hasEnvPermission'](_0x3a1d08,'environments:view_details');if(!_0x1188fb)return;_0x236bf1['hidden']=![];if(!_0x15566a['hasServerPermission'](_0x3a1d08,'*')){const _0x4c97a2=_0x44812e['querySelectorAll']('.admin-menu-item');_0x4c97a2['forEach'](_0x7215ae=>{const _0x22a248=_0x7215ae['querySelector']('.option-text')?.['textContent']?.['trim']();_0x22a248==='Users'&&!_0x15566a['hasServerPermission'](_0x3a1d08,'users:create')&&(_0x7215ae['hidden']=!![]),_0x22a248==='Skills'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Server\x20Settings'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Server\x20Health'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Git\x20History'&&(_0x7215ae['hidden']=!![]),_0x22a248==='Roles'&&(_0x7215ae['hidden']=!![]);});}_0x593927['addEventListener']('click',_0x3a943a=>{_0x3a943a['stopPropagation']();const _0x595990=document['getElementById']('actions-menu');if(_0x595990)_0x595990['hidden']=!![];_0x44812e['hidden']=!_0x44812e['hidden'];}),document['addEventListener']('click',_0x5ba54c=>{!_0x44812e['hidden']&&!_0x593927['contains'](_0x5ba54c['target'])&&!_0x44812e['contains'](_0x5ba54c['target'])&&(_0x44812e['hidden']=!![]);}),document['addEventListener']('keydown',_0x458c93=>{_0x458c93['key']==='Escape'&&!_0x44812e['hidden']&&(_0x44812e['hidden']=!![]);});const _0xbed42b=document['getElementById']('server-health-btn');_0xbed42b&&_0xbed42b['addEventListener']('click',async()=>{_0x44812e['hidden']=!![];const {openServerHealthModal:_0x5427d3}=await import('./server-health.js');_0x5427d3();});}}catch(_0x52fcf3){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x52fcf3['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
1
+ function detectApiBase(){const _0xe75446=window['location']['pathname'],_0x242d87=_0xe75446['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x242d87)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x242d87[0x1]),_0x242d87[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x160712={}){const _0x504545=new URLSearchParams();_0x160712['userId']&&_0x504545['set']('userId',String(_0x160712['userId']));_0x160712['automation']&&_0x504545['set']('automation',String(_0x160712['automation']));const _0x3e2874=API_BASE+'/tasks/stats'+(_0x504545['toString']()?'?'+_0x504545['toString']():''),_0x26fdb8=await fetch(_0x3e2874);if(!_0x26fdb8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x26fdb8['statusText']);return await _0x26fdb8['json']();},async 'getTasks'(_0x2bdb84={}){const _0x3c361e=new URLSearchParams();_0x2bdb84['status']&&_0x3c361e['set']('status',String(_0x2bdb84['status']));_0x2bdb84['environment']&&_0x3c361e['set']('environment',String(_0x2bdb84['environment']));_0x2bdb84['automation']&&_0x3c361e['set']('automation',String(_0x2bdb84['automation']));if(_0x2bdb84['include']){const _0x2c051f=Array['isArray'](_0x2bdb84['include'])?_0x2bdb84['include']['join'](','):String(_0x2bdb84['include']);_0x2c051f&&_0x3c361e['set']('include',_0x2c051f);}_0x2bdb84['filter']&&_0x3c361e['set']('filter',String(_0x2bdb84['filter']));_0x2bdb84['page']&&_0x3c361e['set']('page',String(_0x2bdb84['page']));_0x2bdb84['limit']&&_0x3c361e['set']('limit',String(_0x2bdb84['limit']));_0x2bdb84['userId']&&_0x3c361e['set']('userId',String(_0x2bdb84['userId']));_0x2bdb84['search']&&_0x3c361e['set']('search',String(_0x2bdb84['search']));_0x2bdb84['includeChildTasks']&&_0x3c361e['set']('includeChildTasks','true');const _0xe2699c=API_BASE+'/tasks'+(_0x3c361e['toString']()?'?'+_0x3c361e['toString']():''),_0xfc479b=await fetch(_0xe2699c);if(!_0xfc479b['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xfc479b['statusText']);return await _0xfc479b['json']();},async 'getAutomations'(_0x1e8b63={}){const _0x49f636=new URLSearchParams();_0x1e8b63['environment']&&_0x49f636['set']('environment',String(_0x1e8b63['environment']));const _0x4d480e=await fetch(API_BASE+'/api/automations'+(_0x49f636['toString']()?'?'+_0x49f636['toString']():''));if(!_0x4d480e['ok']){const _0x1174e3=await _0x4d480e['json']()['catch'](()=>({}));throw new Error(_0x1174e3['message']||_0x1174e3['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4d480e['statusText']);}return await _0x4d480e['json']();},async 'getAutomation'(_0x47be6e){const _0x3fabeb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x47be6e));if(!_0x3fabeb['ok']){const _0x1c01f6=await _0x3fabeb['json']()['catch'](()=>({}));throw new Error(_0x1c01f6['message']||_0x1c01f6['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3fabeb['statusText']);}return await _0x3fabeb['json']();},async 'createAutomation'(_0x536834){const _0x21d6fe=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x536834||{})});if(!_0x21d6fe['ok']){const _0x278026=await _0x21d6fe['json']()['catch'](()=>({}));throw new Error(_0x278026['message']||_0x278026['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x21d6fe['statusText']);}return await _0x21d6fe['json']();},async 'updateAutomation'(_0x45b3f0,_0x42e21){const _0x38c6b7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x45b3f0),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42e21||{})});if(!_0x38c6b7['ok']){const _0x32be5e=await _0x38c6b7['json']()['catch'](()=>({}));throw new Error(_0x32be5e['message']||_0x32be5e['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x38c6b7['statusText']);}return await _0x38c6b7['json']();},async 'deleteAutomation'(_0x46b157){const _0x298c87=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x46b157),{'method':'DELETE'});if(!_0x298c87['ok']){const _0x2e506a=await _0x298c87['json']()['catch'](()=>({}));throw new Error(_0x2e506a['message']||_0x2e506a['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x298c87['statusText']);}return await _0x298c87['json']();},async 'triggerAutomation'(_0x4e2a42){const _0x350c4c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e2a42)+'/trigger',{'method':'POST'});if(!_0x350c4c['ok']){const _0x27a7e1=await _0x350c4c['json']()['catch'](()=>({}));throw new Error(_0x27a7e1['message']||_0x27a7e1['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x350c4c['statusText']);}return await _0x350c4c['json']();},async 'setAutomationEnabled'(_0x698066,_0x559ef0){const _0x36ace3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x698066)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x559ef0})});if(!_0x36ace3['ok']){const _0x350f6e=await _0x36ace3['json']()['catch'](()=>({}));throw new Error(_0x350f6e['message']||_0x350f6e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x36ace3['statusText']);}return await _0x36ace3['json']();},async 'getAutomationHistory'(_0x48024b,_0x204777=0x32){const _0x153cd4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x48024b)+'/history?limit='+encodeURIComponent(String(_0x204777)));if(!_0x153cd4['ok']){const _0x1388d2=await _0x153cd4['json']()['catch'](()=>({}));throw new Error(_0x1388d2['message']||_0x1388d2['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x153cd4['statusText']);}return await _0x153cd4['json']();},async 'getTask'(_0x35a820,_0x5a8818={}){const _0x38f146=new URLSearchParams();if(_0x5a8818['include']){const _0x45747=Array['isArray'](_0x5a8818['include'])?_0x5a8818['include']['join'](','):String(_0x5a8818['include']);if(_0x45747)_0x38f146['set']('include',_0x45747);}const _0x1d12d5=await fetch(API_BASE+'/tasks/'+_0x35a820+(_0x38f146['toString']()?'?'+_0x38f146['toString']():''));if(!_0x1d12d5['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x1d12d5['statusText']);return await _0x1d12d5['json']();},async 'getTaskResults'(_0x5a6b1b){const _0xeaae28=await fetch(API_BASE+'/tasks/'+_0x5a6b1b+'/results');if(!_0xeaae28['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xeaae28['statusText']);return await _0xeaae28['json']();},async 'getTaskPatches'(_0x3dd7f5){const _0x28d359=await fetch(API_BASE+'/tasks/'+_0x3dd7f5+'/patches');if(!_0x28d359['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x28d359['statusText']);return await _0x28d359['json']();},async 'getTaskAttachments'(_0x5da68f){const _0x58bcd1=await fetch(API_BASE+'/tasks/'+_0x5da68f+'/attachments');if(!_0x58bcd1['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x58bcd1['statusText']);return await _0x58bcd1['json']();},async 'uploadAttachments'(_0x12fd2a,_0x5b05af){const _0x52a749=new FormData();for(const _0x85787d of _0x5b05af){_0x52a749['append']('attachments',_0x85787d);}const _0x3a0100=await fetch(API_BASE+'/tasks/'+_0x12fd2a+'/attachments',{'method':'POST','body':_0x52a749});if(!_0x3a0100['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x3a0100['statusText']);return await _0x3a0100['json']();},async 'isAINameGenerationAvailable'(){try{const _0x40dcd9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x40dcd9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x40dcd9['json']();}catch(_0xa3333a){return{'available':![],'reason':_0xa3333a['message']};}},async 'generateTaskName'(_0x19ce25){try{const _0x57f323=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x19ce25})});return await _0x57f323['json']();}catch(_0xc482f4){return{'success':![],'error':_0xc482f4['message']};}},async 'createTask'(_0x4e3fdc){let _0x10263f,_0x255f4b={};if(_0x4e3fdc['files']&&_0x4e3fdc['files']['length']>0x0){const _0x3f1684=new FormData();for(const [_0x3673a6,_0xb8086e]of Object['entries'](_0x4e3fdc)){if(_0x3673a6!=='files'){if(_0xb8086e==null)continue;typeof _0xb8086e==='object'?_0x3f1684['append'](_0x3673a6,JSON['stringify'](_0xb8086e)):_0x3f1684['append'](_0x3673a6,String(_0xb8086e));}}for(const _0x51296f of _0x4e3fdc['files']){_0x3f1684['append']('attachments',_0x51296f);}_0x10263f=_0x3f1684;}else _0x255f4b['Content-Type']='application/json',_0x10263f=JSON['stringify'](_0x4e3fdc);const _0x3c912e=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x255f4b,'body':_0x10263f});if(!_0x3c912e['ok']){const _0xa87c=await _0x3c912e['json'](),_0x501eaf=new Error(_0xa87c['error']||'Failed\x20to\x20create\x20task:\x20'+_0x3c912e['statusText']),{message:_0x231644,..._0x5854cd}=_0xa87c;Object['assign'](_0x501eaf,_0x5854cd);throw _0x501eaf;}return await _0x3c912e['json']();},async 'createTestTask'(_0x572a13){const _0x5390a1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572a13)});if(!_0x5390a1['ok']){const _0x1918cf=await _0x5390a1['json']();throw new Error(_0x1918cf['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x5390a1['statusText']);}return await _0x5390a1['json']();},async 'createEphemeralTest'(_0x544742){const _0x6ddbce=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x544742)});if(!_0x6ddbce['ok']){const _0x5be8bb=await _0x6ddbce['json']();throw new Error(_0x5be8bb['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x6ddbce['statusText']);}return await _0x6ddbce['json']();},async 'createDeployTask'(_0x54c2a7){const _0xccbf4d=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54c2a7)});if(!_0xccbf4d['ok']){const _0x5de944=await _0xccbf4d['json']();throw new Error(_0x5de944['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xccbf4d['statusText']);}return await _0xccbf4d['json']();},async 'getEnvironments'(){const _0x3642e9=await fetch(API_BASE+'/environments');if(!_0x3642e9['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3642e9['statusText']);return await _0x3642e9['json']();},async 'getEnvironment'(_0x13d3a4){const _0x51823b=await fetch(API_BASE+'/environments/'+_0x13d3a4);if(!_0x51823b['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x51823b['statusText']);return await _0x51823b['json']();},async 'getEnvironmentRepoHistory'(_0x56a836,_0x598fd3,_0x4d9816={}){if(!_0x56a836||!_0x598fd3)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1b6844=new URLSearchParams();if(_0x4d9816['limit'])_0x1b6844['set']('limit',String(_0x4d9816['limit']));if(_0x4d9816['offset'])_0x1b6844['set']('offset',String(_0x4d9816['offset']));if(_0x4d9816['search'])_0x1b6844['set']('search',String(_0x4d9816['search']));if(_0x4d9816['branch'])_0x1b6844['set']('branch',String(_0x4d9816['branch']));const _0x35a43d=API_BASE+'/environments/'+encodeURIComponent(_0x56a836)+'/repos/'+encodeURIComponent(_0x598fd3)+'/git/history',_0x26b58e=await fetch(''+_0x35a43d+(_0x1b6844['toString']()?'?'+_0x1b6844['toString']():''));if(!_0x26b58e['ok']){const _0x233f2a=await _0x26b58e['json']()['catch'](()=>({}));throw new Error(_0x233f2a['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x26b58e['statusText']);}return await _0x26b58e['json']();},async 'getEnvironmentRepoCommit'(_0x183eed,_0x5c9455,_0x444b8c){if(!_0x183eed||!_0x5c9455||!_0x444b8c)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x35002f=API_BASE+'/environments/'+encodeURIComponent(_0x183eed)+'/repos/'+encodeURIComponent(_0x5c9455)+'/git/commits/'+encodeURIComponent(_0x444b8c),_0x609e14=await fetch(_0x35002f);if(!_0x609e14['ok']){const _0x31ba54=await _0x609e14['json']()['catch'](()=>({}));throw new Error(_0x31ba54['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x609e14['statusText']);}return await _0x609e14['json']();},async 'getEnvironmentRepoBranches'(_0x523550,_0x3f4d6c){if(!_0x523550||!_0x3f4d6c)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3e533f=API_BASE+'/environments/'+encodeURIComponent(_0x523550)+'/repos/'+encodeURIComponent(_0x3f4d6c)+'/git/branches',_0x17979f=await fetch(_0x3e533f);if(!_0x17979f['ok']){const _0x1d433a=await _0x17979f['json']()['catch'](()=>({}));throw new Error(_0x1d433a['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x17979f['statusText']);}return await _0x17979f['json']();},async 'revertEnvironmentRepoCommit'(_0x557006,_0x5304fb,_0x45d406,_0x4be97={}){if(!_0x557006||!_0x5304fb||!_0x45d406)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5eb4a6=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x557006)+'/repos/'+encodeURIComponent(_0x5304fb)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x45d406,..._0x4be97})});if(!_0x5eb4a6['ok']){const _0x723ce9=await _0x5eb4a6['json']()['catch'](()=>({}));throw new Error(_0x723ce9['message']||_0x723ce9['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5eb4a6['statusText']);}return await _0x5eb4a6['json']();},async 'getTemplates'(_0x2a9017={}){const _0x41baaf=new URLSearchParams();if(_0x2a9017['include']){const _0x159d29=Array['isArray'](_0x2a9017['include'])?_0x2a9017['include']['join'](','):String(_0x2a9017['include']);if(_0x159d29)_0x41baaf['set']('include',_0x159d29);}const _0x372a89=await fetch(API_BASE+'/templates'+(_0x41baaf['toString']()?'?'+_0x41baaf['toString']():''));if(!_0x372a89['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x372a89['statusText']);return await _0x372a89['json']();},async 'getTemplatesForEnvironment'(_0x27e41e,_0x4da9a6={}){if(!_0x27e41e)throw new Error('Environment\x20name\x20is\x20required');const _0x2612cd=new URLSearchParams();if(_0x4da9a6['include']){const _0x182b09=Array['isArray'](_0x4da9a6['include'])?_0x4da9a6['include']['join'](','):String(_0x4da9a6['include']);if(_0x182b09)_0x2612cd['set']('include',_0x182b09);}const _0x1f2b66=await fetch(API_BASE+'/templates/'+_0x27e41e+(_0x2612cd['toString']()?'?'+_0x2612cd['toString']():''));if(!_0x1f2b66['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x27e41e+':\x20'+_0x1f2b66['statusText']);return await _0x1f2b66['json']();},async 'getTemplate'(_0x4ff035,_0x19eb96,_0x20caa0={}){if(!_0x4ff035||!_0x19eb96)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x443131=new URLSearchParams();if(_0x20caa0['include']){const _0x468e3b=Array['isArray'](_0x20caa0['include'])?_0x20caa0['include']['join'](','):String(_0x20caa0['include']);if(_0x468e3b)_0x443131['set']('include',_0x468e3b);}const _0x3c1f39=await fetch(API_BASE+'/templates/'+_0x4ff035+'/'+_0x19eb96+(_0x443131['toString']()?'?'+_0x443131['toString']():''));if(!_0x3c1f39['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x3c1f39['statusText']);return await _0x3c1f39['json']();},async 'getTaskLogs'(_0x3f11ee,_0x5a9e6c={}){if(!_0x3f11ee)throw new Error('Task\x20ID\x20is\x20required');const _0x38cac3=new URLSearchParams();_0x5a9e6c['tail']&&_0x38cac3['set']('tail',String(_0x5a9e6c['tail']));const _0x23be6b=await fetch(API_BASE+'/tasks/'+_0x3f11ee+'/logs'+(_0x38cac3['toString']()?'?'+_0x38cac3['toString']():''));if(!_0x23be6b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x23be6b['statusText']);return await _0x23be6b['text']();},async 'getContainers'(){const _0xa50f22=await fetch(API_BASE+'/containers');if(!_0xa50f22['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0xa50f22['statusText']);return await _0xa50f22['json']();},async 'getContainer'(_0x4d7ac5){const _0x20f975=await fetch(API_BASE+'/containers/'+_0x4d7ac5);if(!_0x20f975['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x20f975['statusText']);return await _0x20f975['json']();},async 'startInteractiveContainer'(_0x2783b1){const _0x1826ab=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2783b1)});if(!_0x1826ab['ok']){const _0x1704b7=await _0x1826ab['json']()['catch'](()=>({}));throw new Error(_0x1704b7['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1826ab['statusText']);}return await _0x1826ab['json']();},async 'stopContainer'(_0x4252ae){const _0x315caa=await fetch(API_BASE+'/containers/'+_0x4252ae,{'method':'DELETE'});if(!_0x315caa['ok']){const _0x3d6cb1=await _0x315caa['json']()['catch'](()=>({}));throw new Error(_0x3d6cb1['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x315caa['statusText']);}return await _0x315caa['json']();},async 'stopTask'(_0x1504ea){if(!_0x1504ea)throw new Error('Task\x20ID\x20is\x20required');const _0x10b51c=await fetch(API_BASE+'/tasks/'+_0x1504ea+'/stop',{'method':'POST'});if(!_0x10b51c['ok']){const _0x255a3d=await _0x10b51c['json']()['catch'](()=>({}));throw new Error(_0x255a3d['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x10b51c['statusText']);}return await _0x10b51c['json']();},async 'interruptTask'(_0x3d1a96){if(!_0x3d1a96)throw new Error('Task\x20ID\x20is\x20required');const _0x711d88=await fetch(API_BASE+'/tasks/'+_0x3d1a96+'/interrupt',{'method':'POST'});if(!_0x711d88['ok']){const _0x11e92f=await _0x711d88['json']()['catch'](()=>({}));throw new Error(_0x11e92f['error']||_0x11e92f['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x711d88['statusText']);}return await _0x711d88['json']();},async 'startTask'(_0x476f73){if(!_0x476f73)throw new Error('Task\x20ID\x20is\x20required');const _0x468e65=await fetch(API_BASE+'/tasks/'+_0x476f73+'/start',{'method':'POST'});if(!_0x468e65['ok']){const _0x1c98ba=await _0x468e65['json']()['catch'](()=>({}));throw new Error(_0x1c98ba['error']||'Failed\x20to\x20start\x20task:\x20'+_0x468e65['statusText']);}return await _0x468e65['json']();},async 'deleteTask'(_0xbf10f8){if(!_0xbf10f8)throw new Error('Task\x20ID\x20is\x20required');const _0x33e721=await fetch(API_BASE+'/tasks/'+_0xbf10f8,{'method':'DELETE'});if(!_0x33e721['ok']){const _0x4a9a93=await _0x33e721['json']()['catch'](()=>({}));throw new Error(_0x4a9a93['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x33e721['statusText']);}return await _0x33e721['json']();},async 'refreshTasksFromDisk'(){const _0x1b24e1=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1b24e1['ok']){const _0x57b47a=await _0x1b24e1['json']()['catch'](()=>({}));throw new Error(_0x57b47a['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1b24e1['statusText']);}return await _0x1b24e1['json']();},async 'approveTask'(_0x3fdea7,_0x4c95e1={}){if(!_0x3fdea7)throw new Error('Task\x20ID\x20is\x20required');const _0x1a6dab={'commit_message':_0x4c95e1['commit_message']||'','pull':_0x4c95e1['pull']??![],'push':_0x4c95e1['push']??![]};_0x4c95e1['new_branch']&&(_0x1a6dab['new_branch']=_0x4c95e1['new_branch']);const _0xf74ab5=await fetch(API_BASE+'/tasks/'+_0x3fdea7+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a6dab)});if(!_0xf74ab5['ok']){const _0x5da999=await _0xf74ab5['json']()['catch'](()=>({}));let _0x49e69d=_0x5da999['error']||_0x5da999['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xf74ab5['statusText'];if(_0x5da999['results']&&Array['isArray'](_0x5da999['results'])){const _0x41f2da=_0x5da999['results']['filter'](_0x3e14b2=>!_0x3e14b2['success']&&_0x3e14b2['error']);_0x41f2da['length']>0x0&&(_0x49e69d=_0x41f2da[0x0]['error']);}throw new Error(_0x49e69d);}return await _0xf74ab5['json']();},async 'getPullRequestInfo'(_0x297202){if(!_0x297202)throw new Error('Task\x20ID\x20is\x20required');const _0x25b29e=await fetch(API_BASE+'/tasks/'+_0x297202+'/pull-request-info');if(!_0x25b29e['ok']){const _0x533846=await _0x25b29e['json']()['catch'](()=>({}));throw new Error(_0x533846['error']||_0x533846['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x25b29e['statusText']);}return await _0x25b29e['json']();},async 'createPullRequests'(_0x4e8ea2,_0x331814){if(!_0x4e8ea2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x331814||!Array['isArray'](_0x331814))throw new Error('repos\x20array\x20is\x20required');const _0x5ad418=await fetch(API_BASE+'/tasks/'+_0x4e8ea2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x331814})});if(!_0x5ad418['ok']){const _0x5910fd=await _0x5ad418['json']()['catch'](()=>({}));let _0x235cf9=_0x5910fd['error']||_0x5910fd['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x5ad418['statusText'];if(_0x5910fd['results']&&Array['isArray'](_0x5910fd['results'])){const _0x2a99ff=_0x5910fd['results']['filter'](_0x45dbdb=>!_0x45dbdb['success']&&_0x45dbdb['error']);_0x2a99ff['length']>0x0&&(_0x235cf9=_0x2a99ff[0x0]['error']);}throw new Error(_0x235cf9);}return await _0x5ad418['json']();},async 'syncRepos'(_0x30956d){if(!_0x30956d)throw new Error('Task\x20ID\x20is\x20required');const _0x525597=await fetch(API_BASE+'/tasks/'+_0x30956d+'/sync-repos',{'method':'POST'});if(!_0x525597['ok']){const _0x2adc2a=await _0x525597['json']()['catch'](()=>({}));throw new Error(_0x2adc2a['error']||_0x2adc2a['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x525597['statusText']);}return await _0x525597['json']();},async 'getIbmiSyncInfo'(_0x5c9fdb){if(!_0x5c9fdb)throw new Error('Task\x20ID\x20is\x20required');const _0x5a0d70=await fetch(API_BASE+'/tasks/'+_0x5c9fdb+'/ibmi-sync-info');if(!_0x5a0d70['ok']){const _0xa48dec=await _0x5a0d70['json']()['catch'](()=>({}));throw new Error(_0xa48dec['error']||_0xa48dec['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x5a0d70['json']();},async 'getSyncFiles'(_0x2d295f){if(!_0x2d295f)throw new Error('Task\x20ID\x20is\x20required');const _0x1b5225=await fetch(API_BASE+'/tasks/'+_0x2d295f+'/sync-to-ibmi/files');if(!_0x1b5225['ok']){const _0x33e7ca=await _0x1b5225['json']()['catch'](()=>({}));throw new Error(_0x33e7ca['error']||_0x33e7ca['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x1b5225['json']();},async 'syncToIbmi'(_0x1f636c,_0x2d8847,_0xb72997=null,_0xb6b3c9=null,_0x152308=null){if(!_0x1f636c)throw new Error('Task\x20ID\x20is\x20required');const _0x21ab79={'library':_0x2d8847};if(_0xb72997)_0x21ab79['user']=_0xb72997;if(_0xb6b3c9)_0x21ab79['password']=_0xb6b3c9;if(_0x152308)_0x21ab79['files']=_0x152308;const _0x19e207=await fetch(API_BASE+'/tasks/'+_0x1f636c+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21ab79)});if(!_0x19e207['ok']){const _0x540104=await _0x19e207['json']()['catch'](()=>({}));throw new Error(_0x540104['error']||_0x540104['message']||'Sync\x20failed');}return await _0x19e207['json']();},async 'getIbmiSyncLog'(_0x54cc5a){if(!_0x54cc5a)throw new Error('Task\x20ID\x20is\x20required');const _0x224a1c=await fetch(API_BASE+'/tasks/'+_0x54cc5a+'/ibmi-sync-log');if(!_0x224a1c['ok']){const _0x4d86c0=await _0x224a1c['json']()['catch'](()=>({}));throw new Error(_0x4d86c0['error']||_0x4d86c0['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x224a1c['json']();},async 'pullChanges'(_0x51d8fa){if(!_0x51d8fa)throw new Error('Task\x20ID\x20is\x20required');const _0x5517d7=await fetch(API_BASE+'/tasks/'+_0x51d8fa+'/pull-changes',{'method':'POST'});if(!_0x5517d7['ok']){const _0x531bb5=await _0x5517d7['json']()['catch'](()=>({}));throw new Error(_0x531bb5['error']||_0x531bb5['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5517d7['statusText']);}return await _0x5517d7['json']();},async 'readFile'(_0x21a92c,_0x4ac747){if(!_0x21a92c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4ac747)throw new Error('File\x20path\x20is\x20required');const _0x3007a1=await fetch(API_BASE+'/tasks/'+_0x21a92c+'/files?path='+encodeURIComponent(_0x4ac747));if(!_0x3007a1['ok']){const _0x2e9a26=await _0x3007a1['json']()['catch'](()=>({}));throw new Error(_0x2e9a26['error']||_0x2e9a26['message']||'Failed\x20to\x20read\x20file:\x20'+_0x3007a1['statusText']);}return await _0x3007a1['json']();},'getTaskFileDownloadUrl'(_0x485211,_0x4a53a5){if(!_0x485211)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4a53a5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x485211+'/files/download?path='+encodeURIComponent(_0x4a53a5);},async 'writeFile'(_0x1ab033,_0x106a99,_0xaa35b6){if(!_0x1ab033)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106a99)throw new Error('File\x20path\x20is\x20required');if(_0xaa35b6===undefined)throw new Error('Content\x20is\x20required');const _0x48cde3=await fetch(API_BASE+'/tasks/'+_0x1ab033+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x106a99,'content':_0xaa35b6})});if(!_0x48cde3['ok']){const _0x5815b7=await _0x48cde3['json']()['catch'](()=>({}));throw new Error(_0x5815b7['error']||_0x5815b7['message']||'Failed\x20to\x20write\x20file:\x20'+_0x48cde3['statusText']);}return await _0x48cde3['json']();},async 'uploadTaskFiles'(_0x2bb558,_0x6d0079,_0x52c9a8){if(!_0x2bb558)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6d0079)throw new Error('Target\x20directory\x20is\x20required');if(!_0x52c9a8||_0x52c9a8['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x52eb48=new FormData();_0x52eb48['append']('targetDir',_0x6d0079);for(const _0x5a2986 of _0x52c9a8){_0x52eb48['append']('files',_0x5a2986,_0x5a2986['name']);}const _0x2027c1=await fetch(API_BASE+'/tasks/'+_0x2bb558+'/files/upload',{'method':'POST','body':_0x52eb48});if(!_0x2027c1['ok']){const _0x54939c=await _0x2027c1['json']()['catch'](()=>({}));throw new Error(_0x54939c['error']||_0x54939c['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2027c1['statusText']);}return await _0x2027c1['json']();},async 'createDirectory'(_0x37b51e,_0x4104e6){if(!_0x37b51e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4104e6)throw new Error('Directory\x20path\x20is\x20required');const _0x23a7c4=await fetch(API_BASE+'/tasks/'+_0x37b51e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4104e6})});if(!_0x23a7c4['ok']){const _0x3602d6=await _0x23a7c4['json']()['catch'](()=>({}));throw new Error(_0x3602d6['error']||_0x3602d6['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x23a7c4['statusText']);}return await _0x23a7c4['json']();},async 'renamePath'(_0xcc5aa4,_0x2f03b6,_0x5edded){if(!_0xcc5aa4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2f03b6)throw new Error('Source\x20path\x20is\x20required');if(!_0x5edded)throw new Error('Destination\x20path\x20is\x20required');const _0x4c50b8=await fetch(API_BASE+'/tasks/'+_0xcc5aa4+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x2f03b6,'newPath':_0x5edded})});if(!_0x4c50b8['ok']){const _0x10984f=await _0x4c50b8['json']()['catch'](()=>({}));throw new Error(_0x10984f['error']||_0x10984f['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x4c50b8['statusText']);}return await _0x4c50b8['json']();},async 'deleteFile'(_0x48fa9f,_0x106b13){if(!_0x48fa9f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x106b13)throw new Error('File\x20path\x20is\x20required');const _0x1a8ab1=await fetch(API_BASE+'/tasks/'+_0x48fa9f+'/files?path='+encodeURIComponent(_0x106b13),{'method':'DELETE'});if(!_0x1a8ab1['ok']){const _0x28c8be=await _0x1a8ab1['json']()['catch'](()=>({}));throw new Error(_0x28c8be['error']||_0x28c8be['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x1a8ab1['statusText']);}return await _0x1a8ab1['json']();},async 'deleteDirectory'(_0x5e7f29,_0x44f19e){if(!_0x5e7f29)throw new Error('Task\x20ID\x20is\x20required');if(!_0x44f19e)throw new Error('Directory\x20path\x20is\x20required');const _0x258719=await fetch(API_BASE+'/tasks/'+_0x5e7f29+'/files/directory?path='+encodeURIComponent(_0x44f19e),{'method':'DELETE'});if(!_0x258719['ok']){const _0x3787c4=await _0x258719['json']()['catch'](()=>({}));throw new Error(_0x3787c4['error']||_0x3787c4['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x258719['statusText']);}return await _0x258719['json']();},async 'discardFile'(_0x3704a3,_0x3176f3,_0x225b6a){if(!_0x3704a3)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3176f3)throw new Error('File\x20path\x20is\x20required');if(!_0x225b6a)throw new Error('Repository\x20path\x20is\x20required');const _0x4db01d=await fetch(API_BASE+'/tasks/'+_0x3704a3+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3176f3,'repoPath':_0x225b6a})});if(!_0x4db01d['ok']){const _0x13c1e9=await _0x4db01d['json']()['catch'](()=>({}));throw new Error(_0x13c1e9['error']||_0x13c1e9['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x4db01d['statusText']);}return await _0x4db01d['json']();},async 'followUpTask'(_0x3c3e06,_0x5335f5={}){if(!_0x3c3e06)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5335f5['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x4aed42,_0x4dde62={};if(_0x5335f5['files']&&_0x5335f5['files']['length']>0x0){const _0x3d5818=new FormData();_0x3d5818['append']('instructions',_0x5335f5['instructions']);for(const _0x1c8b83 of _0x5335f5['files']){_0x3d5818['append']('attachments',_0x1c8b83);}_0x4aed42=_0x3d5818;}else _0x4dde62['Content-Type']='application/json',_0x4aed42=JSON['stringify']({'instructions':_0x5335f5['instructions']});const _0x16fc2e=await fetch(API_BASE+'/tasks/'+_0x3c3e06+'/follow-up',{'method':'POST','headers':_0x4dde62,'body':_0x4aed42});if(!_0x16fc2e['ok']){const _0x20918c=await _0x16fc2e['json']()['catch'](()=>({}));throw new Error(_0x20918c['error']||_0x20918c['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x16fc2e['statusText']);}return await _0x16fc2e['json']();},async 'getTaskRewindPoints'(_0x4ce594){if(!_0x4ce594)throw new Error('Task\x20ID\x20is\x20required');const _0x4c1b43=await fetch(API_BASE+'/tasks/'+_0x4ce594+'/rewind-points');if(!_0x4c1b43['ok']){const _0x1a9ffe=await _0x4c1b43['json']()['catch'](()=>({}));throw new Error(_0x1a9ffe['error']||_0x1a9ffe['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4c1b43['statusText']);}return await _0x4c1b43['json']();},async 'rewindTask'(_0x26eebf,_0x3dd7cc={}){if(!_0x26eebf)throw new Error('Task\x20ID\x20is\x20required');const _0x2ef09d=Number['isInteger'](_0x3dd7cc['targetFollowUpCount'])?_0x3dd7cc['targetFollowUpCount']:0x0,_0xccca9d={'targetFollowUpCount':_0x2ef09d};typeof _0x3dd7cc['instructions']==='string'&&_0x3dd7cc['instructions']['trim']()&&(_0xccca9d['instructions']=_0x3dd7cc['instructions']['trim']());typeof _0x3dd7cc['rewindFiles']==='boolean'&&(_0xccca9d['rewindFiles']=_0x3dd7cc['rewindFiles']);const _0x10c00c=await fetch(API_BASE+'/tasks/'+_0x26eebf+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xccca9d)});if(!_0x10c00c['ok']){const _0x47f1cc=await _0x10c00c['json']()['catch'](()=>({}));throw new Error(_0x47f1cc['error']||_0x47f1cc['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x10c00c['statusText']);}return await _0x10c00c['json']();},async 'login'(_0x1fa377,_0x4c2265){const _0x5d25f6=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1fa377,'password':_0x4c2265})});if(!_0x5d25f6['ok']){const _0x3c5463=await _0x5d25f6['json']();throw new Error(_0x3c5463['message']||'Login\x20failed');}return await _0x5d25f6['json']();},async 'logout'(){const _0x5afba8=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5afba8['ok']){const _0x82d051=await _0x5afba8['json']();throw new Error(_0x82d051['message']||'Logout\x20failed');}return await _0x5afba8['json']();},async 'getCurrentUser'(){const _0x36c891=await fetch(API_BASE+'/auth/me');if(!_0x36c891['ok'])throw new Error('Not\x20authenticated');const _0x1d391c=await _0x36c891['json']();return _0x1d391c['user'];},async 'getRolesInfo'(){const _0x2b63d7=await fetch(API_BASE+'/users/roles');if(!_0x2b63d7['ok']){const _0x2d4d17=await _0x2b63d7['json']();throw new Error(_0x2d4d17['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2b63d7['json']();},async 'getUsers'(){const _0x45a610=await fetch(API_BASE+'/users');if(!_0x45a610['ok']){const _0x7a2890=await _0x45a610['json']();throw new Error(_0x7a2890['message']||'Failed\x20to\x20get\x20users');}return await _0x45a610['json']();},async 'getUser'(_0x3b4021){const _0x55436f=await fetch(API_BASE+'/users/'+_0x3b4021);if(!_0x55436f['ok']){const _0x3756c8=await _0x55436f['json']();throw new Error(_0x3756c8['message']||'Failed\x20to\x20get\x20user');}return await _0x55436f['json']();},async 'createUser'(_0x22a654){const _0x321c19=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x22a654)});if(!_0x321c19['ok']){const _0x3fa49c=await _0x321c19['json']();throw new Error(_0x3fa49c['message']||'Failed\x20to\x20create\x20user');}return await _0x321c19['json']();},async 'updateUser'(_0x5b8b7a,_0x3794a3){const _0x5ca934=await fetch(API_BASE+'/users/'+_0x5b8b7a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3794a3)});if(!_0x5ca934['ok']){const _0x1dbd2b=await _0x5ca934['json']();throw new Error(_0x1dbd2b['message']||'Failed\x20to\x20update\x20user');}return await _0x5ca934['json']();},async 'deleteUser'(_0x47ee0e){const _0x56a991=await fetch(API_BASE+'/users/'+_0x47ee0e,{'method':'DELETE'});if(!_0x56a991['ok']){const _0x11b7ef=await _0x56a991['json']();throw new Error(_0x11b7ef['message']||'Failed\x20to\x20delete\x20user');}return await _0x56a991['json']();},async 'stopAllContainers'(){const _0x3cd357=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x361e27=await _0x3cd357['json']()['catch'](()=>({}));if(!_0x3cd357['ok'])throw new Error(_0x361e27['message']||_0x361e27['error']||'Failed\x20to\x20stop\x20containers');return _0x361e27;},async 'removeStoppedContainers'(){const _0x3140d6=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5ecdde=await _0x3140d6['json']()['catch'](()=>({}));if(!_0x3140d6['ok'])throw new Error(_0x5ecdde['message']||_0x5ecdde['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5ecdde;},async 'pruneDockerResources'(){const _0x1354ef=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x594a58=await _0x1354ef['json']()['catch'](()=>({}));if(!_0x1354ef['ok'])throw new Error(_0x594a58['message']||_0x594a58['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x594a58;},async 'createPasswordToken'(_0x4ce690,_0x139e2f='setup',_0x44cb48=![]){const _0x2ec2d3=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ce690,'type':_0x139e2f,'sendEmail':_0x44cb48})});if(!_0x2ec2d3['ok']){const _0x24c170=await _0x2ec2d3['json']();throw new Error(_0x24c170['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x2ec2d3['json']();},async 'getEmailConfig'(){const _0x50176e=await fetch(API_BASE+'/password/email-config');if(!_0x50176e['ok']){const _0x216da3=await _0x50176e['json']();throw new Error(_0x216da3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x50176e['json']();},async 'updateTaskName'(_0x438ab6,_0x9269f8){const _0x5a9829=await fetch(API_BASE+'/tasks/'+_0x438ab6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x9269f8})});if(!_0x5a9829['ok']){const _0x45ffcf=await _0x5a9829['json']();throw new Error(_0x45ffcf['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5a9829['json']();},async 'pinTask'(_0x583770,_0x371272,_0xdfe2d3=null){if(!_0x583770)throw new Error('Task\x20ID\x20is\x20required');const _0x389f84={'pinned':_0x371272};_0xdfe2d3&&_0xdfe2d3['length']>0x0&&(_0x389f84['additionalTaskIds']=_0xdfe2d3);const _0x2a5425=await fetch(API_BASE+'/tasks/'+_0x583770+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x389f84)});if(!_0x2a5425['ok']){const _0x5c958f=await _0x2a5425['json']();throw new Error(_0x5c958f['error']||'Failed\x20to\x20pin\x20task');}return await _0x2a5425['json']();},async 'setTaskWinner'(_0x18e9ab,_0x357acc,_0x5b7ae5=[]){if(!_0x18e9ab)throw new Error('Task\x20ID\x20is\x20required');const _0x44f8fe=await fetch(API_BASE+'/tasks/'+_0x18e9ab+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x357acc,'siblings':_0x5b7ae5})});if(!_0x44f8fe['ok']){const _0x41ade8=await _0x44f8fe['json']();throw new Error(_0x41ade8['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x44f8fe['json']();},async 'setTaskLoser'(_0x18a498,_0x3ddfb3){if(!_0x18a498)throw new Error('Task\x20ID\x20is\x20required');const _0xac9085=await fetch(API_BASE+'/tasks/'+_0x18a498+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3ddfb3})});if(!_0xac9085['ok']){const _0x5c20c3=await _0xac9085['json']();throw new Error(_0x5c20c3['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0xac9085['json']();},async 'createTaskGroup'(_0x3c14b5){const _0x4975d0=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c14b5)});if(!_0x4975d0['ok']){const _0x437e1c=await _0x4975d0['json']();throw new Error(_0x437e1c['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4975d0['json']();},async 'getTaskGroups'(_0x4aeee5={}){const _0x53618f=new URLSearchParams();if(_0x4aeee5['userId'])_0x53618f['set']('userId',String(_0x4aeee5['userId']));if(_0x4aeee5['status'])_0x53618f['set']('status',String(_0x4aeee5['status']));if(_0x4aeee5['limit'])_0x53618f['set']('limit',String(_0x4aeee5['limit']));const _0x394ae2=API_BASE+'/tasks/groups'+(_0x53618f['toString']()?'?'+_0x53618f['toString']():''),_0x13633e=await fetch(_0x394ae2);if(!_0x13633e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x13633e['json']();},async 'getTaskGroup'(_0x55782b){const _0x4ec24c=await fetch(API_BASE+'/tasks/groups/'+_0x55782b);if(!_0x4ec24c['ok']){const _0x2dd67b=await _0x4ec24c['json']();throw new Error(_0x2dd67b['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4ec24c['json']();},async 'updateTaskGroup'(_0x3a4828,_0xe5be75,_0x487e49){const _0x3cc652=await fetch(API_BASE+'/tasks/'+_0x3a4828+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0xe5be75,'groupIndex':_0x487e49})});if(!_0x3cc652['ok']){const _0x446939=await _0x3cc652['json']();throw new Error(_0x446939['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3cc652['json']();},async 'removeTaskFromGroup'(_0x127c03){return this['updateTaskGroup'](_0x127c03,null,null);},async 'deleteTaskGroup'(_0x5a5e61,_0x503b47=![]){const _0x52eba5=_0x503b47?'?deleteTasks=true':'',_0x550fb4=await fetch(API_BASE+'/tasks/groups/'+_0x5a5e61+_0x52eba5,{'method':'DELETE'});if(!_0x550fb4['ok']){const _0x198d66=await _0x550fb4['json']();throw new Error(_0x198d66['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x128a76,_0x331e52){const _0x3ae109=await fetch(API_BASE+'/tasks/groups/'+_0x128a76+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x331e52})});if(!_0x3ae109['ok']){const _0x47e322=await _0x3ae109['json']();throw new Error(_0x47e322['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3ae109['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x5a49f9){if(!_0x5a49f9)throw new Error('Task\x20ID\x20is\x20required');const _0x905a0=await fetch(API_BASE+'/tasks/'+_0x5a49f9+'/comments');if(!_0x905a0['ok']){const _0x55a3ab=await _0x905a0['json']()['catch'](()=>({}));throw new Error(_0x55a3ab['error']||'Failed\x20to\x20get\x20comments');}return await _0x905a0['json']();},async 'addComment'(_0x4ca22f,_0x3656b5){if(!_0x4ca22f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3656b5)throw new Error('Comment\x20content\x20is\x20required');const _0x3205c1=await fetch(API_BASE+'/tasks/'+_0x4ca22f+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x3656b5})});if(!_0x3205c1['ok']){const _0x5425c9=await _0x3205c1['json']()['catch'](()=>({}));throw new Error(_0x5425c9['error']||'Failed\x20to\x20add\x20comment');}return await _0x3205c1['json']();},async 'updateComment'(_0x2b7300,_0x26e732,_0x1f1fd5){if(!_0x2b7300)throw new Error('Task\x20ID\x20is\x20required');if(!_0x26e732)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1f1fd5)throw new Error('Comment\x20content\x20is\x20required');const _0x38687a=await fetch(API_BASE+'/tasks/'+_0x2b7300+'/comments/'+_0x26e732,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1f1fd5})});if(!_0x38687a['ok']){const _0xf270c2=await _0x38687a['json']()['catch'](()=>({}));throw new Error(_0xf270c2['error']||'Failed\x20to\x20update\x20comment');}return await _0x38687a['json']();},async 'deleteComment'(_0x2695bd,_0x6e36f){if(!_0x2695bd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6e36f)throw new Error('Comment\x20ID\x20is\x20required');const _0x2929a=await fetch(API_BASE+'/tasks/'+_0x2695bd+'/comments/'+_0x6e36f,{'method':'DELETE'});if(!_0x2929a['ok']){const _0x5c3235=await _0x2929a['json']()['catch'](()=>({}));throw new Error(_0x5c3235['error']||'Failed\x20to\x20delete\x20comment');}return await _0x2929a['json']();},async 'createObjective'(_0x3eb3d3){const _0x4ceb25={'objective':!![],'name':_0x3eb3d3['name']||'','environment':_0x3eb3d3['environment']||null,'agents':_0x3eb3d3['agents']||[],'branches':_0x3eb3d3['branches']||{},'isPinned':_0x3eb3d3['isPinned']||![],'parentObjectiveId':_0x3eb3d3['parentObjectiveId']||null,'env_vars':_0x3eb3d3['envVars']||{},'parameters':{'instructions':_0x3eb3d3['instructions']||''},'files':_0x3eb3d3['files']||[],'jira':_0x3eb3d3['jira']||null};return this['createTask'](_0x4ceb25);},async 'updateObjective'(_0x48a2af,_0x181c86,_0x2ddbd1=[],_0x1fd84c=[]){let _0x10b776,_0x1442d7={};const _0x171cfa={..._0x181c86};_0x1fd84c&&_0x1fd84c['length']>0x0&&(_0x171cfa['removeAttachments']=_0x1fd84c);if(_0x2ddbd1&&_0x2ddbd1['length']>0x0){const _0x1e6e49=new FormData();for(const [_0x410035,_0x22ca64]of Object['entries'](_0x171cfa)){if(_0x22ca64==null)continue;typeof _0x22ca64==='object'?_0x1e6e49['append'](_0x410035,JSON['stringify'](_0x22ca64)):_0x1e6e49['append'](_0x410035,String(_0x22ca64));}for(const _0x1ffee3 of _0x2ddbd1){_0x1e6e49['append']('attachments',_0x1ffee3);}_0x10b776=_0x1e6e49;}else _0x1442d7['Content-Type']='application/json',_0x10b776=JSON['stringify'](_0x171cfa);const _0x1f37b3=await fetch(API_BASE+'/tasks/'+_0x48a2af,{'method':'PATCH','headers':_0x1442d7,'body':_0x10b776});if(!_0x1f37b3['ok']){const _0x430a23=await _0x1f37b3['json']();throw new Error(_0x430a23['error']||'Failed\x20to\x20update\x20objective');}return await _0x1f37b3['json']();},async 'deleteObjective'(_0x4f0e36){return this['deleteTask'](_0x4f0e36);},async 'launchObjective'(_0x478978,_0x2dc8e4={}){const _0x922a6a=await fetch(API_BASE+'/tasks/'+_0x478978+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc8e4)});if(!_0x922a6a['ok']){const _0x248587=await _0x922a6a['json']();throw new Error(_0x248587['error']||'Failed\x20to\x20launch\x20objective');}return await _0x922a6a['json']();},async 'getObjectiveAttachments'(_0x644d58){return this['getTaskAttachments'](_0x644d58);},async 'createJudgeTask'({environment:_0x1cbc46,judgeAgent:_0x393e5b,groupId:_0x12588e,taskIds:_0x2d99ab,judgeCustomInstructions:_0x1bfee7,isPinned:_0x2d279c}){const _0x58270f=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1cbc46,'judgeAgent':_0x393e5b,'groupId':_0x12588e,'taskIds':_0x2d99ab,'judgeCustomInstructions':_0x1bfee7,'isPinned':_0x2d279c})});if(!_0x58270f['ok']){const _0x45a0ba=await _0x58270f['json']();throw new Error(_0x45a0ba['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x58270f['json']();},async 'getJudgeTasks'(_0x187b27){const _0x4ca6d5=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x187b27));if(!_0x4ca6d5['ok']){const _0x197ab6=await _0x4ca6d5['json']();throw new Error(_0x197ab6['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x4ca6d5['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x15a39e,_0x2a1fcf,_0x3a7fb7=''){const _0x239e4e=await fetch(API_BASE+'/tasks/'+_0x15a39e+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x2a1fcf,'customPreamble':_0x3a7fb7})});if(!_0x239e4e['ok']){const _0x2aa29a=await _0x239e4e['json']();throw new Error(_0x2aa29a['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x239e4e['json']();},async 'getJiraConfig'(){const _0x5137c1=await fetch(API_BASE+'/jira/config');if(!_0x5137c1['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5137c1['json']();},async 'getJiraIssue'(_0x3e0454){const _0x4d9533=await fetch(API_BASE+'/jira/issues/'+_0x3e0454);if(!_0x4d9533['ok']){const _0x436580=await _0x4d9533['json']()['catch'](()=>({}));throw new Error(_0x436580['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x4d9533['statusText']);}return await _0x4d9533['json']();},async 'searchJiraIssues'(_0x13f125,_0x512b95=0x14){const _0x11ae82=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x13f125,'maxResults':_0x512b95})});if(!_0x11ae82['ok']){const _0x5e56ad=await _0x11ae82['json']()['catch'](()=>({}));throw new Error(_0x5e56ad['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x11ae82['statusText']);}return await _0x11ae82['json']();},async 'postJiraComment'(_0x51ae79,_0x4fc474){const _0x4a10ba=await fetch(API_BASE+'/jira/issues/'+_0x51ae79+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x4fc474})});if(!_0x4a10ba['ok']){const _0x380b8b=await _0x4a10ba['json']()['catch'](()=>({}));throw new Error(_0x380b8b['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x4a10ba['statusText']);}return await _0x4a10ba['json']();},async 'getJiraComments'(_0x154dbe){const _0x5b757c=await fetch(API_BASE+'/jira/issues/'+_0x154dbe+'/comments');if(!_0x5b757c['ok']){const _0x1b5624=await _0x5b757c['json']()['catch'](()=>({}));throw new Error(_0x1b5624['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5b757c['statusText']);}return await _0x5b757c['json']();},async 'promptParameter'({environment:_0x11da74,command:_0x277c5f,parser:parser='json'}){const _0x4e8569=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x11da74,'command':_0x277c5f,'parser':parser})});if(!_0x4e8569['ok']){const _0x184969=await _0x4e8569['json']()['catch'](()=>({}));throw new Error(_0x184969['message']||_0x184969['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4e8569['statusText']);}return await _0x4e8569['json']();},async 'promptParameterStream'(_0xa48139,_0x2d615f){const _0x42fbb8=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa48139)});if(!_0x42fbb8['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x42fbb8['statusText']);const _0x2f0d6e=_0x42fbb8['body']['getReader'](),_0x46ec9b=new TextDecoder();let _0xb35547='';return new Promise((_0x29762a,_0x2abae0)=>{const _0x5a0670=async()=>{try{const {done:_0x2f38e3,value:_0x2988a8}=await _0x2f0d6e['read']();if(_0x2f38e3)return;_0xb35547+=_0x46ec9b['decode'](_0x2988a8,{'stream':!![]});const _0x2eca4c=_0xb35547['split']('\x0a\x0a');_0xb35547=_0x2eca4c['pop']()||'';for(const _0xe70b97 of _0x2eca4c){if(!_0xe70b97['trim']())continue;const _0x2eb6ff=_0xe70b97['split']('\x0a');let _0x559d27='message',_0x2138c2='';for(const _0x1fe3b3 of _0x2eb6ff){if(_0x1fe3b3['startsWith']('event:'))_0x559d27=_0x1fe3b3['substring'](0x6)['trim']();else _0x1fe3b3['startsWith']('data:')&&(_0x2138c2=_0x1fe3b3['substring'](0x5)['trim']());}if(!_0x2138c2)continue;try{const _0x5182ea=JSON['parse'](_0x2138c2);if(_0x559d27==='progress'&&_0x2d615f)_0x2d615f(_0x5182ea['stage'],_0x5182ea['message']);else{if(_0x559d27==='result'){_0x29762a(_0x5182ea);return;}else{if(_0x559d27==='error'){let _0x46bf8f=_0x5182ea['message']||_0x5182ea['error']||'Prompt\x20command\x20failed';_0x5182ea['rawOutput']&&(_0x46bf8f+='\x0a\x0aRaw\x20output:\x0a'+_0x5182ea['rawOutput']);_0x2abae0(new Error(_0x46bf8f));return;}}}}catch(_0xb74d99){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0xb74d99),console['error']('Event\x20type:',_0x559d27),console['error']('Event\x20data:',_0x2138c2),console['error']('First\x20200\x20chars:',_0x2138c2['substring'](0x0,0xc8)),_0x2abae0(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0xb74d99['message']+'\x0a\x0aData:\x20'+_0x2138c2['substring'](0x0,0x1f4)));return;}}_0x5a0670();}catch(_0x36faae){_0x2abae0(_0x36faae);}};_0x5a0670();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x2b8e3c){const _0x2bbd76=await fetch(''+API_BASE+_0x2b8e3c);if(!_0x2bbd76['ok']){const _0x579a78=await _0x2bbd76['json']()['catch'](()=>({'error':_0x2bbd76['statusText']})),_0x10e405=new Error(_0x579a78['error']||_0x579a78['message']||_0x2bbd76['statusText']);if(_0x579a78['detail']!==undefined)_0x10e405['detail']=_0x579a78['detail'];throw _0x10e405;}return await _0x2bbd76['json']();},async 'post'(_0x30100c,_0x792112){const _0x82cb0f=await fetch(''+API_BASE+_0x30100c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x792112)});if(!_0x82cb0f['ok']){const _0xf7d260=await _0x82cb0f['json']()['catch'](()=>({'error':_0x82cb0f['statusText']})),_0x106d30=new Error(_0xf7d260['error']||_0xf7d260['message']||_0x82cb0f['statusText']);if(_0xf7d260['detail']!==undefined)_0x106d30['detail']=_0xf7d260['detail'];throw _0x106d30;}return await _0x82cb0f['json']();},async 'put'(_0x503fbf,_0x368b12){const _0x18a1b5=await fetch(''+API_BASE+_0x503fbf,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x368b12)});if(!_0x18a1b5['ok']){const _0x3e7aea=await _0x18a1b5['json']()['catch'](()=>({'error':_0x18a1b5['statusText']})),_0x26a42d=new Error(_0x3e7aea['error']||_0x3e7aea['message']||_0x18a1b5['statusText']);if(_0x3e7aea['detail']!==undefined)_0x26a42d['detail']=_0x3e7aea['detail'];throw _0x26a42d;}return await _0x18a1b5['json']();},async 'delete'(_0x28a398,_0x59d4d7){const _0x15d34b={'method':'DELETE'};_0x59d4d7&&(_0x15d34b['headers']={'Content-Type':'application/json'},_0x15d34b['body']=JSON['stringify'](_0x59d4d7));const _0x2f402e=await fetch(''+API_BASE+_0x28a398,_0x15d34b);if(!_0x2f402e['ok']){const _0x29a690=await _0x2f402e['json']()['catch'](()=>({'error':_0x2f402e['statusText']})),_0x294920=new Error(_0x29a690['error']||_0x29a690['message']||_0x2f402e['statusText']);if(_0x29a690['detail']!==undefined)_0x294920['detail']=_0x29a690['detail'];throw _0x294920;}return await _0x2f402e['json']();},async 'getSkills'(){const _0x46c298=await fetch(API_BASE+'/skills');if(!_0x46c298['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x46c298['statusText']);return await _0x46c298['json']();},async 'getSkill'(_0x3bbd54){const _0x55569b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3bbd54));if(!_0x55569b['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x55569b['statusText']);return await _0x55569b['json']();},async 'createSkill'(_0x4cdadc){const _0x149328=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cdadc)});if(!_0x149328['ok']){const _0x11541d=await _0x149328['json']()['catch'](()=>({'error':_0x149328['statusText']})),_0x12e6f9=new Error(_0x11541d['error']||_0x11541d['message']||_0x149328['statusText']);if(_0x11541d['detail']!==undefined)_0x12e6f9['detail']=_0x11541d['detail'];throw _0x12e6f9;}return await _0x149328['json']();},async 'updateSkill'(_0x4b072,_0x179b7e){const _0x280390=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b072),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x179b7e)});if(!_0x280390['ok']){const _0x1c350b=await _0x280390['json']()['catch'](()=>({'error':_0x280390['statusText']})),_0x35ef78=new Error(_0x1c350b['error']||_0x1c350b['message']||_0x280390['statusText']);if(_0x1c350b['detail']!==undefined)_0x35ef78['detail']=_0x1c350b['detail'];throw _0x35ef78;}return await _0x280390['json']();},async 'deleteSkill'(_0x510ab1){const _0x33004e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x510ab1),{'method':'DELETE'});if(!_0x33004e['ok']){const _0x5ea4ce=await _0x33004e['json']()['catch'](()=>({'error':_0x33004e['statusText']})),_0x5a2496=new Error(_0x5ea4ce['error']||_0x5ea4ce['message']||_0x33004e['statusText']);if(_0x5ea4ce['detail']!==undefined)_0x5a2496['detail']=_0x5ea4ce['detail'];throw _0x5a2496;}return await _0x33004e['json']();},async 'getSkillFile'(_0x27ddb3,_0x1f8cad){const _0x45faa7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x27ddb3)+'/files/'+_0x1f8cad);if(!_0x45faa7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x45faa7['statusText']);return await _0x45faa7['json']();},async 'saveSkillFile'(_0x1598a2,_0x131620,_0x125721){const _0x3458f0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1598a2)+'/files/'+_0x131620,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x125721})});if(!_0x3458f0['ok']){const _0x10ae1c=await _0x3458f0['json']()['catch'](()=>({'error':_0x3458f0['statusText']})),_0x53699a=new Error(_0x10ae1c['error']||_0x10ae1c['message']||_0x3458f0['statusText']);if(_0x10ae1c['detail']!==undefined)_0x53699a['detail']=_0x10ae1c['detail'];throw _0x53699a;}return await _0x3458f0['json']();},async 'deleteSkillFile'(_0x14744d,_0x4b049d){const _0x189cd5=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x14744d)+'/files/'+_0x4b049d,{'method':'DELETE'});if(!_0x189cd5['ok']){const _0x2c7b96=await _0x189cd5['json']()['catch'](()=>({'error':_0x189cd5['statusText']})),_0xeb634d=new Error(_0x2c7b96['error']||_0x2c7b96['message']||_0x189cd5['statusText']);if(_0x2c7b96['detail']!==undefined)_0xeb634d['detail']=_0x2c7b96['detail'];throw _0xeb634d;}return await _0x189cd5['json']();},async 'pullSkills'(){const _0x58bd9f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x58bd9f['ok']){const _0xf0a93f=await _0x58bd9f['json']()['catch'](()=>({'error':_0x58bd9f['statusText']})),_0x55cd4e=new Error(_0xf0a93f['error']||_0xf0a93f['message']||_0x58bd9f['statusText']);if(_0xf0a93f['detail']!==undefined)_0x55cd4e['detail']=_0xf0a93f['detail'];throw _0x55cd4e;}return await _0x58bd9f['json']();},async 'commitSkills'(_0x25fc8c,_0x34433a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x34433a,_0x5895d5=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x25fc8c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x5895d5['ok']){const _0x557f01=await _0x5895d5['json']()['catch'](()=>({'error':_0x5895d5['statusText']})),_0x562aab=new Error(_0x557f01['error']||_0x557f01['message']||_0x5895d5['statusText']);if(_0x557f01['detail']!==undefined)_0x562aab['detail']=_0x557f01['detail'];throw _0x562aab;}return await _0x5895d5['json']();},async 'discardSkillsChanges'(){const _0x1691db=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x1691db['ok']){const _0x1c0c24=await _0x1691db['json']()['catch'](()=>({'error':_0x1691db['statusText']})),_0x56b2d3=new Error(_0x1c0c24['error']||_0x1c0c24['message']||_0x1691db['statusText']);if(_0x1c0c24['detail']!==undefined)_0x56b2d3['detail']=_0x1c0c24['detail'];throw _0x56b2d3;}return await _0x1691db['json']();},async 'getSkillCatalog'(){const _0x2ed70f=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2ed70f['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2ed70f['statusText']);return await _0x2ed70f['json']();},async 'getImportedSkillsRegistry'(){const _0x5a56f6=await fetch(API_BASE+'/external-skills/registry');if(!_0x5a56f6['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5a56f6['statusText']);return await _0x5a56f6['json']();},async 'importCatalogSkill'(_0x36aeaa){const _0x1ff798=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x36aeaa})});if(!_0x1ff798['ok']){const _0x2d7544=await _0x1ff798['json']()['catch'](()=>({'error':_0x1ff798['statusText']})),_0x421ada=new Error(_0x2d7544['error']||_0x2d7544['message']||_0x1ff798['statusText']);if(_0x2d7544['detail']!==undefined)_0x421ada['detail']=_0x2d7544['detail'];throw _0x421ada;}return await _0x1ff798['json']();},async 'importSkillFromGit'(_0x38ca08,_0x8842ad,_0xc9c89='main',_0x8069d0=null){const _0xa8887f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x38ca08,'skillPath':_0x8842ad,'branch':_0xc9c89,'skillId':_0x8069d0})});if(!_0xa8887f['ok']){const _0x5a0a30=await _0xa8887f['json']()['catch'](()=>({'error':_0xa8887f['statusText']})),_0x59945e=new Error(_0x5a0a30['error']||_0x5a0a30['message']||_0xa8887f['statusText']);if(_0x5a0a30['detail']!==undefined)_0x59945e['detail']=_0x5a0a30['detail'];throw _0x59945e;}return await _0xa8887f['json']();},async 'probeMarketplace'(_0x13d938,_0x9f349b='main'){const _0x31078d=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13d938,'branch':_0x9f349b})});if(!_0x31078d['ok']){const _0x34352c=await _0x31078d['json']()['catch'](()=>({'error':_0x31078d['statusText']})),_0x362dbb=new Error(_0x34352c['error']||_0x34352c['message']||_0x31078d['statusText']);if(_0x34352c['detail']!==undefined)_0x362dbb['detail']=_0x34352c['detail'];throw _0x362dbb;}return await _0x31078d['json']();},async 'importMarketplaceBundle'(_0x5d9cd4,_0x3ca55d,_0x21e541,_0x9e6440=null){const _0x260f52=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5d9cd4,'branch':_0x3ca55d,'bundleId':_0x21e541,'selectedSkills':_0x9e6440})});if(!_0x260f52['ok']){const _0x2f316a=await _0x260f52['json']()['catch'](()=>({'error':_0x260f52['statusText']})),_0x5059a4=new Error(_0x2f316a['error']||_0x2f316a['message']||_0x260f52['statusText']);if(_0x2f316a['detail']!==undefined)_0x5059a4['detail']=_0x2f316a['detail'];throw _0x5059a4;}return await _0x260f52['json']();},async 'importSkillFromFolder'(_0x305d51,_0x100a09=null){const _0x521b91=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x305d51,'skillId':_0x100a09})});if(!_0x521b91['ok']){const _0x3beb4d=await _0x521b91['json']()['catch'](()=>({'error':_0x521b91['statusText']})),_0x216bf2=new Error(_0x3beb4d['error']||_0x3beb4d['message']||_0x521b91['statusText']);if(_0x3beb4d['detail']!==undefined)_0x216bf2['detail']=_0x3beb4d['detail'];throw _0x216bf2;}return await _0x521b91['json']();},async 'importSkillFromNpm'(_0x49352a,_0x43937f='latest',_0x50af09=null,_0x19be08=null){const _0x13fb6e=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x49352a,'version':_0x43937f,'skillId':_0x50af09,'registry':_0x19be08})});if(!_0x13fb6e['ok']){const _0x2638c1=await _0x13fb6e['json']()['catch'](()=>({'error':_0x13fb6e['statusText']})),_0x2b32bf=new Error(_0x2638c1['error']||_0x2638c1['message']||_0x13fb6e['statusText']);if(_0x2638c1['detail']!==undefined)_0x2b32bf['detail']=_0x2638c1['detail'];throw _0x2b32bf;}return await _0x13fb6e['json']();},async 'checkSkillUpdates'(_0x2eb4d0){const _0x4c8b38=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2eb4d0)+'/check-updates',{'method':'POST'});if(!_0x4c8b38['ok']){const _0x12882e=await _0x4c8b38['json']()['catch'](()=>({'error':_0x4c8b38['statusText']})),_0x2c2fd7=new Error(_0x12882e['error']||_0x12882e['message']||_0x4c8b38['statusText']);if(_0x12882e['detail']!==undefined)_0x2c2fd7['detail']=_0x12882e['detail'];throw _0x2c2fd7;}return await _0x4c8b38['json']();},async 'updateExternalSkill'(_0x790739){const _0x3ad7aa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x790739)+'/update',{'method':'POST'});if(!_0x3ad7aa['ok']){const _0x1d8624=await _0x3ad7aa['json']()['catch'](()=>({'error':_0x3ad7aa['statusText']})),_0x33ff7a=new Error(_0x1d8624['error']||_0x1d8624['message']||_0x3ad7aa['statusText']);if(_0x1d8624['detail']!==undefined)_0x33ff7a['detail']=_0x1d8624['detail'];throw _0x33ff7a;}return await _0x3ad7aa['json']();},async 'updateSkillFlags'(_0x4edc0d,_0x208cd1){const _0x2603eb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4edc0d)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x208cd1})});if(!_0x2603eb['ok']){const _0x3cae26=await _0x2603eb['json']()['catch'](()=>({'error':_0x2603eb['statusText']})),_0x244211=new Error(_0x3cae26['error']||_0x3cae26['message']||_0x2603eb['statusText']);if(_0x3cae26['detail']!==undefined)_0x244211['detail']=_0x3cae26['detail'];throw _0x244211;}return await _0x2603eb['json']();},async 'removeFromImportedRegistry'(_0x54d98a){const _0x3c0bac=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x54d98a)+'/registry',{'method':'DELETE'});if(!_0x3c0bac['ok']){const _0x53c538=await _0x3c0bac['json']()['catch'](()=>({'error':_0x3c0bac['statusText']})),_0x2d29ea=new Error(_0x53c538['error']||_0x53c538['message']||_0x3c0bac['statusText']);if(_0x53c538['detail']!==undefined)_0x2d29ea['detail']=_0x53c538['detail'];throw _0x2d29ea;}return await _0x3c0bac['json']();},async 'getTeams'(){const _0x59182e=await fetch(API_BASE+'/teams');if(!_0x59182e['ok']){const _0x3a177a=await _0x59182e['json']()['catch'](()=>({'message':_0x59182e['statusText']}));throw new Error(_0x3a177a['message']||'Failed\x20to\x20get\x20teams');}return await _0x59182e['json']();},async 'getTeam'(_0x176b2b){const _0x531eb3=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x176b2b));if(!_0x531eb3['ok']){const _0x19f615=await _0x531eb3['json']()['catch'](()=>({'message':_0x531eb3['statusText']}));throw new Error(_0x19f615['message']||'Failed\x20to\x20get\x20team');}return await _0x531eb3['json']();},async 'createTeam'(_0x1bdbe2){const _0x55e996=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1bdbe2)});if(!_0x55e996['ok']){const _0x2f984d=await _0x55e996['json']()['catch'](()=>({'message':_0x55e996['statusText']}));throw new Error(_0x2f984d['message']||'Failed\x20to\x20create\x20team');}return await _0x55e996['json']();},async 'updateTeam'(_0x476cdb,_0x18d847){const _0x4f8444=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x476cdb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18d847)});if(!_0x4f8444['ok']){const _0x447fc8=await _0x4f8444['json']()['catch'](()=>({'message':_0x4f8444['statusText']}));throw new Error(_0x447fc8['message']||'Failed\x20to\x20update\x20team');}return await _0x4f8444['json']();},async 'deleteTeam'(_0x511b96){const _0x193c7b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x511b96),{'method':'DELETE'});if(!_0x193c7b['ok']){const _0x21ea1a=await _0x193c7b['json']()['catch'](()=>({'message':_0x193c7b['statusText']}));throw new Error(_0x21ea1a['message']||'Failed\x20to\x20delete\x20team');}return await _0x193c7b['json']();},async 'addTeamMember'(_0xd7bf23,_0x3c289d){const _0x1d0657=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xd7bf23)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3c289d})});if(!_0x1d0657['ok']){const _0x56a433=await _0x1d0657['json']()['catch'](()=>({'message':_0x1d0657['statusText']}));throw new Error(_0x56a433['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x1d0657['json']();},async 'removeTeamMember'(_0xab8754,_0x274a7a){const _0x3bc003=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xab8754)+'/members/'+encodeURIComponent(_0x274a7a),{'method':'DELETE'});if(!_0x3bc003['ok']){const _0x29b2a0=await _0x3bc003['json']()['catch'](()=>({'message':_0x3bc003['statusText']}));throw new Error(_0x29b2a0['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x3bc003['json']();},async 'getBindings'(_0x33676d={}){const _0x1f1507=new URLSearchParams();if(_0x33676d['resource_type'])_0x1f1507['set']('resource_type',_0x33676d['resource_type']);if(_0x33676d['resource_id'])_0x1f1507['set']('resource_id',_0x33676d['resource_id']);if(_0x33676d['subject_type'])_0x1f1507['set']('subject_type',_0x33676d['subject_type']);if(_0x33676d['subject_id'])_0x1f1507['set']('subject_id',_0x33676d['subject_id']);const _0x4a9917=_0x1f1507['toString'](),_0xf1b4b4=await fetch(API_BASE+'/bindings'+(_0x4a9917?'?'+_0x4a9917:''));if(!_0xf1b4b4['ok']){const _0x5afe56=await _0xf1b4b4['json']()['catch'](()=>({'message':_0xf1b4b4['statusText']}));throw new Error(_0x5afe56['message']||'Failed\x20to\x20get\x20bindings');}return await _0xf1b4b4['json']();},async 'createBinding'(_0x228622){const _0x111235=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x228622)});if(!_0x111235['ok']){const _0x5968a0=await _0x111235['json']()['catch'](()=>({'message':_0x111235['statusText']}));throw new Error(_0x5968a0['message']||'Failed\x20to\x20create\x20binding');}return await _0x111235['json']();},async 'updateBinding'(_0x37d4a9,_0x45c954){const _0x201d7e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x37d4a9),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45c954)});if(!_0x201d7e['ok']){const _0x54539a=await _0x201d7e['json']()['catch'](()=>({'message':_0x201d7e['statusText']}));throw new Error(_0x54539a['message']||'Failed\x20to\x20update\x20binding');}return await _0x201d7e['json']();},async 'deleteBinding'(_0x389bf1){const _0x386295=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x389bf1),{'method':'DELETE'});if(!_0x386295['ok']){const _0x11fb23=await _0x386295['json']()['catch'](()=>({'message':_0x386295['statusText']}));throw new Error(_0x11fb23['message']||'Failed\x20to\x20delete\x20binding');}return await _0x386295['json']();},async 'getRoleDefinitions'(){const _0x1e8e95=await fetch(API_BASE+'/roles');if(!_0x1e8e95['ok']){const _0x4710f6=await _0x1e8e95['json']()['catch'](()=>({'message':_0x1e8e95['statusText']}));throw new Error(_0x4710f6['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1e8e95['json']();},async 'getRoleDefinition'(_0x520d0c){const _0x565b54=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x520d0c));if(!_0x565b54['ok']){const _0x117946=await _0x565b54['json']()['catch'](()=>({'message':_0x565b54['statusText']}));throw new Error(_0x117946['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x565b54['json']();},async 'createRoleDefinition'(_0x16368f){const _0x1e2de1=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16368f)});if(!_0x1e2de1['ok']){const _0x23d5ba=await _0x1e2de1['json']()['catch'](()=>({'message':_0x1e2de1['statusText']}));throw new Error(_0x23d5ba['message']||_0x23d5ba['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e2de1['json']();},async 'updateRoleDefinition'(_0x21c822,_0x3aecf0){const _0x53337c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x21c822),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3aecf0)});if(!_0x53337c['ok']){const _0x2fde25=await _0x53337c['json']()['catch'](()=>({'message':_0x53337c['statusText']}));throw new Error(_0x2fde25['message']||_0x2fde25['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x53337c['json']();},async 'deleteRoleDefinition'(_0x428996){const _0x2d9d69=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x428996),{'method':'DELETE'});if(!_0x2d9d69['ok']){const _0x12a32e=await _0x2d9d69['json']()['catch'](()=>({'message':_0x2d9d69['statusText']}));throw new Error(_0x12a32e['message']||_0x12a32e['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2d9d69['json']();},async 'getAvailablePermissions'(){const _0x23585f=await fetch(API_BASE+'/roles/available-permissions');if(!_0x23585f['ok']){const _0x381b1a=await _0x23585f['json']()['catch'](()=>({'message':_0x23585f['statusText']}));throw new Error(_0x381b1a['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x23585f['json']();},async 'getGitProviderAllowedTeams'(_0x33d47b){const _0x32b274=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x33d47b)+'/allowed-teams');if(!_0x32b274['ok']){const _0x6f52dd=await _0x32b274['json']()['catch'](()=>({'message':_0x32b274['statusText']}));throw new Error(_0x6f52dd['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x32b274['json']();},async 'setGitProviderAllowedTeams'(_0x5ed604,_0x2c195b){const _0x1fc2ca=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5ed604)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x2c195b})});if(!_0x1fc2ca['ok']){const _0x42f53e=await _0x1fc2ca['json']()['catch'](()=>({'message':_0x1fc2ca['statusText']}));throw new Error(_0x42f53e['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1fc2ca['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 _0x597482=toastState['baseBottom'];toastState['toasts']['forEach'](_0x46d2b6=>{_0x46d2b6['el']['style']['bottom']=_0x597482+'px';const _0x5769b9=_0x46d2b6['el']['offsetHeight']||toastState['defaultHeight'];_0x597482+=_0x5769b9+toastState['gap'];});});}function removeToastById(_0x7b6319){const _0x3180e1=toastState['toasts']['findIndex'](_0x1f0920=>_0x1f0920['id']===_0x7b6319);if(_0x3180e1===-0x1)return;const _0x40f90d=toastState['toasts'][_0x3180e1];if(_0x40f90d['timeoutId'])clearTimeout(_0x40f90d['timeoutId']);_0x40f90d['el']['classList']['remove']('show'),setTimeout(()=>_0x40f90d['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3180e1,0x1),repositionAllToasts();}function registerToast(_0x2d77af){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x2d77af),repositionAllToasts(),_0x2d77af['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(_0x30e887){if(_0x30e887===null||_0x30e887===undefined)return'';return String(_0x30e887)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x48f4c9,_0x2c347e){if(_0x48f4c9&&typeof _0x48f4c9==='object'&&!Array['isArray'](_0x48f4c9))return{'code':typeof _0x48f4c9['text']==='string'?_0x48f4c9['text']:'','language':typeof _0x48f4c9['lang']==='string'?_0x48f4c9['lang']:''};return{'code':typeof _0x48f4c9==='string'?_0x48f4c9:'','language':typeof _0x2c347e==='string'?_0x2c347e:''};}function buildMermaidBlock(_0xcc6691){const _0x4c8e3c=String(_0xcc6691||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4c8e3c))+'\x22>'+escapeHtmlValue(_0x4c8e3c)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x34bee4=new marked['Renderer'](),_0x5c7bdb=_0x34bee4['code']['bind'](_0x34bee4);return _0x34bee4['code']=function(_0x7443a5,_0x5c4efb,..._0x434658){const {code:_0x3ab0af,language:_0x16b930}=getMarkdownCodeBlockPayload(_0x7443a5,_0x5c4efb),_0x72fc08=String(_0x16b930||'')['trim']()['toLowerCase']();if(_0x72fc08==='mermaid')return buildMermaidBlock(_0x3ab0af);const _0x1196e9=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1196e9&&_0x72fc08)try{const _0x4fdab1=_0x1196e9['getLanguage'](_0x72fc08)?_0x72fc08:'plaintext',_0x5080f9=_0x1196e9['highlight'](_0x3ab0af,{'language':_0x4fdab1})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x72fc08)+'\x22>'+_0x5080f9+'</code></pre>';}catch(_0x5bbc3b){console['error']('Syntax\x20highlighting\x20error:',_0x5bbc3b);}return _0x5c7bdb(_0x7443a5,_0x5c4efb,..._0x434658);},sharedMarkedRenderer=_0x34bee4,_0x34bee4;}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 _0x386839=window['mermaid'];if(!_0x386839||typeof _0x386839['initialize']!=='function')return _0x386839||null;return _0x386839['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x386839;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x1318bf,_0x295a3b)=>{const _0x1a1097=()=>_0x1318bf(configureMermaidInstance()),_0x10d44c=()=>{mermaidLoadPromise=null,_0x295a3b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x429a37=document['getElementById'](MERMAID_SCRIPT_ID);!_0x429a37&&(_0x429a37=document['createElement']('script'),_0x429a37['id']=MERMAID_SCRIPT_ID,_0x429a37['src']=MERMAID_SCRIPT_SRC,_0x429a37['async']=!![],document['head']['appendChild'](_0x429a37));if(window['mermaid']){_0x1a1097();return;}_0x429a37['addEventListener']('load',_0x1a1097,{'once':!![]}),_0x429a37['addEventListener']('error',_0x10d44c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x3e095f){const _0x1329fc=_0x3e095f['getAttribute']('data-mermaid-source');if(!_0x1329fc)return null;let _0x598e27=_0x1329fc;try{_0x598e27=decodeURIComponent(_0x1329fc);}catch{}return _0x3e095f['textContent']=_0x598e27,_0x3e095f['removeAttribute']('data-processed'),_0x3e095f['removeAttribute']('aria-roledescription'),_0x3e095f['removeAttribute']('role'),_0x3e095f['removeAttribute']('aria-label'),_0x598e27;}function collectMermaidNodes(_0x3d3d8e,_0x103640){if(!(_0x3d3d8e instanceof Element))return;_0x3d3d8e['matches']('.mermaid[data-mermaid-source]')&&_0x103640['add'](_0x3d3d8e),_0x3d3d8e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3c3198=>{_0x103640['add'](_0x3c3198);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x4e277c=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x294ff4=>setTimeout(_0x294ff4,0x0);_0x4e277c(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x4d3a17=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x4d3a17);});});}function queueMermaidRender(_0x53031b){const _0x327805=new Set();_0x53031b instanceof Document||_0x53031b instanceof DocumentFragment?_0x53031b['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xd0d846=>_0x327805['add'](_0xd0d846)):collectMermaidNodes(_0x53031b,_0x327805);if(_0x327805['size']===0x0)return;_0x327805['forEach'](_0x5a3d0f=>pendingMermaidNodes['add'](_0x5a3d0f)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x4d4a97=Array['from'](pendingMermaidNodes)['filter'](_0x1de7e5=>_0x1de7e5['isConnected']);pendingMermaidNodes['clear']();if(_0x4d4a97['length']===0x0)return;const _0x474d48=await loadMermaid();if(!_0x474d48)return;configureMermaidInstance();const _0x55e50f=getMermaidTheme();for(const _0x508813 of _0x4d4a97){const _0x1c998c=_0x508813['getAttribute']('data-mermaid-source');if(!_0x1c998c)continue;const _0x5e78f8=_0x508813['getAttribute']('data-processed')==='true';if(_0x5e78f8&&_0x508813['dataset']['mermaidTheme']===_0x55e50f)continue;restoreMermaidSource(_0x508813);try{if(typeof _0x474d48['run']==='function')await _0x474d48['run']({'nodes':[_0x508813]});else typeof _0x474d48['init']==='function'&&_0x474d48['init'](undefined,[_0x508813]);_0x508813['dataset']['mermaidTheme']=_0x55e50f,delete _0x508813['dataset']['mermaidError'];}catch(_0x3b7010){console['error']('Mermaid\x20render\x20failed:',_0x3b7010),restoreMermaidSource(_0x508813),_0x508813['dataset']['mermaidError']='true',delete _0x508813['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1fc439=>{_0x1fc439['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1fc439);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x42a7be=>{_0x42a7be['forEach'](_0x2a376d=>{_0x2a376d['addedNodes']['forEach'](_0x13b3f2=>{_0x13b3f2['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x13b3f2);});});}),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'(_0x16a201){const _0x375e01=new Date(_0x16a201),_0x592e2a=new Date(),_0x45c316=_0x592e2a-_0x375e01,_0x40ba47=Math['floor'](_0x45c316/0x3e8),_0x45bfb7=Math['floor'](_0x40ba47/0x3c),_0x38c6bf=Math['floor'](_0x45bfb7/0x3c),_0x165d09=Math['floor'](_0x38c6bf/0x18);if(_0x40ba47<0x3c)return'now';if(_0x45bfb7<0x3c)return _0x45bfb7+'m\x20ago';if(_0x38c6bf<0x18)return _0x38c6bf+'h\x20ago';return _0x165d09+'d\x20ago';},'getStatusIcon'(_0x5aa154){switch(_0x5aa154){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x21bb62){switch(_0x21bb62){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'(_0x3cf3a1,_0x5a214c=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3dea56={};_0x3dea56['text/plain']=new Blob([_0x3cf3a1],{'type':'text/plain'});_0x5a214c&&(_0x3dea56['text/html']=new Blob([_0x5a214c],{'type':'text/html'}));const _0x569920=new ClipboardItem(_0x3dea56);return await navigator['clipboard']['write']([_0x569920]),!![];}catch(_0x3533f7){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3533f7);}try{const _0x12971c=_0x4ed2c1=>{_0x4ed2c1['preventDefault'](),_0x4ed2c1['clipboardData']['setData']('text/plain',_0x3cf3a1),_0x5a214c&&_0x4ed2c1['clipboardData']['setData']('text/html',_0x5a214c);};document['addEventListener']('copy',_0x12971c);const _0x32d071=document['execCommand']('copy');document['removeEventListener']('copy',_0x12971c);if(_0x32d071)return!![];}catch(_0x4380a7){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x4380a7);}try{const _0x55804c=document['createElement']('textarea');_0x55804c['value']=_0x3cf3a1,_0x55804c['style']['position']='fixed',_0x55804c['style']['opacity']='0',_0x55804c['style']['pointerEvents']='none',document['body']['appendChild'](_0x55804c),_0x55804c['select']();const _0x2a7d40=document['execCommand']('copy');return document['body']['removeChild'](_0x55804c),_0x2a7d40;}catch(_0xa0544f){return console['error']('All\x20clipboard\x20methods\x20failed:',_0xa0544f),![];}},'showToast'(_0x356f12,_0x3eed47='info'){const _0x4ac450=getNextToastId(),_0x229211=document['createElement']('div');_0x229211['className']='toast\x20toast-'+_0x3eed47,_0x229211['textContent']=_0x356f12,_0x229211['dataset']['toastId']=_0x4ac450,document['body']['appendChild'](_0x229211);const _0x204c56=_0x3eed47==='error'?0x2710:0xbb8,_0x5c524f=setTimeout(()=>{removeToastById(_0x4ac450);},_0x204c56),_0x35f5f9={'id':_0x4ac450,'el':_0x229211,'timeoutId':_0x5c524f};return registerToast(_0x35f5f9),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x229211['classList']['add']('show');});}),_0x4ac450;},'showError'(_0x31adb3){console['error'](_0x31adb3);const _0x1023a6=typeof _0x31adb3==='string'?_0x31adb3:_0x31adb3['message']||'An\x20error\x20occurred';this['showToast'](_0x1023a6,'error');},'showSuccess'(_0x2566e1){this['showToast'](_0x2566e1,'success');},'capitalize'(_0x1d907b){if(!_0x1d907b)return'';return _0x1d907b['charAt'](0x0)['toUpperCase']()+_0x1d907b['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5b3fad){return escapeHtmlValue(_0x5b3fad);},'ansiToHtml'(_0x5a744b){if(_0x5a744b===null||_0x5a744b===undefined)return'';let _0x531979=this['escapeHtml'](_0x5a744b);const _0x73c867={'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'},_0x307c98={'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 _0x16aa48=0x0;return _0x531979=_0x531979['replace'](/\x1b\[([0-9;]*)m/g,(_0x12b1d6,_0x453d62)=>{if(!_0x453d62||_0x453d62==='0'){const _0x51c4ca='</span>'['repeat'](_0x16aa48);return _0x16aa48=0x0,_0x51c4ca;}const _0x46fe78=_0x453d62['split'](';'),_0x5c917e=[];for(const _0x303869 of _0x46fe78){if(_0x303869==='1')_0x5c917e['push']('font-weight:bold');else{if(_0x303869==='2')_0x5c917e['push']('opacity:0.7');else{if(_0x303869==='3')_0x5c917e['push']('font-style:italic');else{if(_0x303869==='4')_0x5c917e['push']('text-decoration:underline');else{if(_0x303869==='9')_0x5c917e['push']('text-decoration:line-through');else{if(_0x73c867[_0x303869])_0x5c917e['push']('color:'+_0x73c867[_0x303869]);else{if(_0x307c98[_0x303869])_0x5c917e['push']('background-color:'+_0x307c98[_0x303869]);}}}}}}}if(_0x5c917e['length']>0x0)return _0x16aa48++,'<span\x20style=\x22'+_0x5c917e['join'](';')+'\x22>';return'';}),_0x531979+='</span>'['repeat'](_0x16aa48),_0x531979=_0x531979['replace'](/\\u001b\[([0-9;]*)m/g,(_0x2e3033,_0x56be35)=>{if(!_0x56be35||_0x56be35==='0')return'';const _0x28969e=_0x56be35['split'](';'),_0x295e0e=[];for(const _0x81825 of _0x28969e){if(_0x81825==='1')_0x295e0e['push']('font-weight:bold');else{if(_0x73c867[_0x81825])_0x295e0e['push']('color:'+_0x73c867[_0x81825]);else{if(_0x307c98[_0x81825])_0x295e0e['push']('background-color:'+_0x307c98[_0x81825]);}}}if(_0x295e0e['length']>0x0)return'<span\x20style=\x22'+_0x295e0e['join'](';')+'\x22>';return'';}),_0x531979;},'showModal'({title:_0x155b2b,content:_0x34e6db,buttons:buttons=[]}){const _0x1be983='\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'](_0x155b2b)+'</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'+_0x34e6db+'\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']((_0x59a2e8,_0x19a6cc)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x59a2e8['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x19a6cc+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x59a2e8['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',_0x24cace=document['createElement']('div');_0x24cace['id']='utils-modal',_0x24cace['className']='modal',_0x24cace['innerHTML']=_0x1be983,document['body']['appendChild'](_0x24cace);const _0x52a509=document['getElementById']('utils-modal-close');_0x52a509&&_0x52a509['addEventListener']('click',()=>this['hideModal']());const _0x3cd490=_0x24cace['querySelectorAll']('[data-btn-index]');_0x3cd490['forEach'](_0x51982b=>{const _0x512fda=parseInt(_0x51982b['dataset']['btnIndex']);buttons[_0x512fda]?.['onClick']&&_0x51982b['addEventListener']('click',buttons[_0x512fda]['onClick']);});const _0xeccd6a=document['getElementById']('utils-modal-overlay');_0xeccd6a&&_0xeccd6a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x147dd6=document['getElementById']('utils-modal');_0x147dd6&&_0x147dd6['remove']();},'parseKeyValuePairs'(_0x2ccb52){const _0x1d8f26={};if(!_0x2ccb52)return _0x1d8f26;return _0x2ccb52['split'](/\r?\n/)['map'](_0x27169f=>_0x27169f['trim']())['filter'](Boolean)['forEach'](_0x40eb86=>{const _0x946f18=_0x40eb86['indexOf']('=');if(_0x946f18>0x0){const _0x3dd032=_0x40eb86['slice'](0x0,_0x946f18)['trim'](),_0x536b5d=_0x40eb86['slice'](_0x946f18+0x1)['trim']();if(_0x3dd032)_0x1d8f26[_0x3dd032]=_0x536b5d;}}),_0x1d8f26;},'debounce'(_0x276755,_0x53efb9=0xfa){let _0x58c18f=null;return(..._0x4a1974)=>{clearTimeout(_0x58c18f),_0x58c18f=setTimeout(()=>_0x276755['apply'](this,_0x4a1974),_0x53efb9);};},'formatTimestamp'(_0x2eb6be){if(!_0x2eb6be)return'N/A';const _0x41d44e=new Date(_0x2eb6be);return _0x41d44e['toLocaleDateString']()+'\x20'+_0x41d44e['toLocaleTimeString']();},'getQueryParams'(){const _0x5294c4=new URLSearchParams(window['location']['search']),_0x1195b0={};for(const [_0x1f7276,_0x566708]of _0x5294c4){_0x1195b0[_0x1f7276]=_0x566708;}return _0x1195b0;},'formatDuration'(_0x25a114,_0x5b6185){if(!_0x25a114)return'N/A';const _0x26a242=new Date(_0x25a114),_0x1142f1=_0x5b6185?new Date(_0x5b6185):new Date(),_0x1c9cbb=_0x1142f1-_0x26a242;if(_0x1c9cbb<0x0)return'0s';const _0x1e352c=Math['floor'](_0x1c9cbb/0x3e8),_0x809cd4=Math['floor'](_0x1e352c/0x3c),_0x12b841=Math['floor'](_0x809cd4/0x3c),_0x451be6=Math['floor'](_0x12b841/0x18);if(_0x1e352c<0x3c)return _0x1e352c+'s';if(_0x809cd4<0x3c)return _0x809cd4+'m\x20'+_0x1e352c%0x3c+'s';if(_0x12b841<0x18)return _0x12b841+'h\x20'+_0x809cd4%0x3c+'m\x20'+_0x1e352c%0x3c+'s';return _0x451be6+'d\x20'+_0x12b841%0x18+'h\x20'+_0x809cd4%0x3c+'m';},'renderMarkdown'(_0x5e50e8,_0x2882f1={}){if(!_0x5e50e8)return'';_0x5e50e8=this['rewriteAttachmentLinks'](_0x5e50e8,_0x2882f1),_0x5e50e8=this['rewriteColorSyntax'](_0x5e50e8);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5e50e8);}catch(_0x4654b6){return console['error']('Markdown\x20parsing\x20error:',_0x4654b6),this['renderMarkdownFallback'](_0x5e50e8,_0x2882f1);}},'rewriteAttachmentLinks'(_0x2be6a3,_0x1beaf2={}){const _0x49faec=typeof _0x1beaf2['resolveAttachmentUrl']==='function'?_0x1beaf2['resolveAttachmentUrl']:_0x1beaf2['taskId']?_0x5cda00=>API_BASE+'/tasks/'+_0x1beaf2['taskId']+'/attachments/'+encodeURIComponent(_0x5cda00):null;if(!_0x49faec)return _0x2be6a3;return String(_0x2be6a3)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x535251,_0x38ccf0)=>{const _0x5bd055=String(_0x38ccf0||'')['trim']();if(!_0x5bd055)return _0x535251;let _0x40973b=_0x5bd055;try{_0x40973b=decodeURIComponent(_0x5bd055);}catch{}const _0x543637=_0x49faec(_0x40973b);if(!_0x543637)return _0x535251;return']('+_0x543637+')';});},'rewriteColorSyntax'(_0x24de39){if(!_0x24de39)return _0x24de39;return String(_0x24de39)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4094e4,_0x217377,_0x7615fe)=>{const _0x526bc0=this['rewriteColorSyntax'](_0x7615fe);return'<span\x20style=\x22color:\x20'+_0x217377+'\x22>'+_0x526bc0+'</span>';});},'renderMarkdownFallback'(_0x581d11,_0x348987={}){if(!_0x581d11)return'';_0x581d11=_0x581d11['replace'](/\r\n/g,'\x0a'),_0x581d11=_0x581d11['replace'](/\r/g,'\x0a'),_0x581d11=this['rewriteAttachmentLinks'](_0x581d11,_0x348987);let _0x5e0063=this['escapeHtml'](_0x581d11);return _0x5e0063=_0x5e0063['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x5e0063=_0x5e0063['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x5e0063=_0x5e0063['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x5e0063=_0x5e0063['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x5e0063=_0x5e0063['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x5e0063=_0x5e0063['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x5e0063=_0x5e0063['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x5e0063=_0x5e0063['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x5e0063=_0x5e0063['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x5e0063=_0x5e0063['replace'](/\n\n/g,'</p><p>'),_0x5e0063=_0x5e0063['replace'](/\n/g,'<br>'),'<p>'+_0x5e0063+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5cf9ee=new Uint8Array(0x10);crypto['getRandomValues'](_0x5cf9ee),_0x5cf9ee[0x6]=_0x5cf9ee[0x6]&0xf|0x40,_0x5cf9ee[0x8]=_0x5cf9ee[0x8]&0x3f|0x80;const _0x2a651c=Array['from'](_0x5cf9ee,_0x371916=>_0x371916['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2a651c['slice'](0x0,0x8)+'-'+_0x2a651c['slice'](0x8,0xc)+'-'+_0x2a651c['slice'](0xc,0x10)+'-'+_0x2a651c['slice'](0x10,0x14)+'-'+_0x2a651c['slice'](0x14);}};export class CustomSelect{constructor(_0x3d21eb,_0x5d7aa4={}){this['nativeSelect']=_0x3d21eb,this['options']=_0x5d7aa4,this['isOpen']=![],this['selectedValue']=_0x3d21eb['value']||'',this['searchable']=_0x5d7aa4['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x38ca61=document['createElement']('div');_0x38ca61['className']='custom-select';const _0x169d8a=document['createElement']('div');_0x169d8a['className']='custom-select-trigger',_0x169d8a['setAttribute']('tabindex','0'),_0x169d8a['setAttribute']('role','button'),_0x169d8a['setAttribute']('aria-haspopup','listbox');const _0x73f3aa=document['createElement']('span');_0x73f3aa['className']='custom-select-trigger-text';const _0x1287c7=document['createElement']('span');_0x1287c7['className']='custom-select-arrow',_0x1287c7['textContent']='▼',_0x169d8a['appendChild'](_0x73f3aa),_0x169d8a['appendChild'](_0x1287c7);const _0x423055=document['createElement']('div');_0x423055['className']='custom-select-dropdown',_0x423055['setAttribute']('role','listbox');if(this['searchable']){const _0x39224a=document['createElement']('div');_0x39224a['className']='custom-select-search';const _0x43f5ff=document['createElement']('input');_0x43f5ff['type']='text',_0x43f5ff['className']='custom-select-search-input',_0x43f5ff['placeholder']='Type\x20to\x20search...',_0x43f5ff['setAttribute']('aria-label','Search\x20options'),_0x43f5ff['addEventListener']('input',_0x9df05=>{this['searchQuery']=_0x9df05['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x43f5ff['addEventListener']('keydown',_0x3817b0=>{if(_0x3817b0['key']==='Escape')_0x3817b0['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3817b0['key']==='Enter'){_0x3817b0['preventDefault'](),_0x3817b0['stopPropagation']();const _0x287346=_0x423055['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x287346){const _0x1acc1e=_0x287346['getAttribute']('data-value');this['select'](_0x1acc1e);}}}}),_0x39224a['appendChild'](_0x43f5ff),_0x423055['appendChild'](_0x39224a),this['searchInput']=_0x43f5ff;}const _0x1742de=document['createElement']('div');_0x1742de['className']='custom-select-options',_0x423055['appendChild'](_0x1742de),_0x38ca61['appendChild'](_0x169d8a),_0x38ca61['appendChild'](_0x423055),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x38ca61,this['nativeSelect']),this['wrapper']=_0x38ca61,this['trigger']=_0x169d8a,this['triggerText']=_0x73f3aa,this['dropdown']=_0x423055,this['optionsContainer']=_0x1742de,_0x169d8a['addEventListener']('click',()=>this['toggle']()),_0x169d8a['addEventListener']('keydown',_0x4d5916=>this['handleKeydown'](_0x4d5916)),document['addEventListener']('click',_0x386067=>{!_0x38ca61['contains'](_0x386067['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x44a844=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x44a844['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1de64c=new MutationObserver(()=>{this['updateDisabledState']();});_0x1de64c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x4406ab=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x4406ab['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x52ec88=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x52ec88),this['trigger']['setAttribute']('aria-disabled',_0x52ec88?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x52ec88?'-1':'0'),_0x52ec88&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x351aef=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x39651f=_0x351aef['filter'](_0x261e24=>!_0x261e24['disabled']&&!_0x261e24['hidden']);_0x351aef['forEach']((_0xb2f934,_0x3cf0ce)=>{const _0x188870=document['createElement']('div');_0x188870['className']='custom-select-option',_0x188870['textContent']=_0xb2f934['textContent'],_0x188870['setAttribute']('data-value',_0xb2f934['value']),_0x188870['setAttribute']('data-index',_0x3cf0ce),_0x188870['setAttribute']('role','option'),_0xb2f934['disabled']?_0x188870['classList']['add']('disabled'):_0x188870['addEventListener']('click',()=>this['select'](_0xb2f934['value'])),_0xb2f934['value']===this['selectedValue']&&_0x188870['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x188870),this['allOptions']['push']({'element':_0x188870,'text':_0xb2f934['textContent']['toLowerCase'](),'value':_0xb2f934['value'],'disabled':_0xb2f934['disabled']});});if(this['searchable']&&this['searchInput']){const _0x495e3a=this['searchInput']['parentElement'];_0x39651f['length']>0x3?_0x495e3a['style']['display']='':_0x495e3a['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x25addc=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x12dac8=>{if(!_0x25addc||_0x12dac8['disabled'])_0x12dac8['element']['style']['display']='';else{const _0x403633=_0x12dac8['text']['includes'](_0x25addc);_0x12dac8['element']['style']['display']=_0x403633?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3824dd){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3824dd,this['nativeSelect']['value']=_0x3824dd;const _0x2edf20=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2edf20),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x578214=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x578214&&(this['triggerText']['textContent']=_0x578214['textContent'],_0x578214['disabled']||_0x578214['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x4c62e0=>{_0x4c62e0['getAttribute']('data-value')===this['selectedValue']?_0x4c62e0['classList']['add']('selected'):_0x4c62e0['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 _0xd928c2=window['getComputedStyle'](this['dropdown']);if(_0xd928c2['position']==='fixed'){const _0x3605c3=this['trigger']['getBoundingClientRect'](),_0xdef1c7=parseInt(_0xd928c2['maxHeight'])||0xc8,_0x12459e=window['innerHeight'],_0xcb444d=_0x12459e-_0x3605c3['bottom'],_0x46f274=_0x3605c3['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4d8f82;_0xcb444d<_0xdef1c7&&_0x46f274>_0xcb444d?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x12459e-_0x3605c3['top']+'px',_0x4d8f82=Math['min'](_0xdef1c7,_0x46f274-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3605c3['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4d8f82=Math['min'](_0xdef1c7,_0xcb444d-0xa),this['dropdown']['style']['maxHeight']=_0x4d8f82+'px');if(this['optionsContainer']){let _0x314f15=_0x4d8f82;if(this['searchInput']){const _0x5f43cf=this['searchInput']['parentElement'];_0x5f43cf&&(_0x314f15-=_0x5f43cf['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x314f15)+'px';}this['dropdown']['style']['left']=_0x3605c3['left']+'px',this['dropdown']['style']['width']=_0x3605c3['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x5b9953=this['searchInput']['parentElement'];_0x5b9953&&_0x5b9953['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'](_0x581759){if(this['nativeSelect']['disabled'])return;if(_0x581759['key']==='Enter'||_0x581759['key']==='\x20')_0x581759['preventDefault'](),this['toggle']();else _0x581759['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x13d5a8='\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',_0x13d5a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x43f587=document['getElementById']('confirm-dialog-close'),_0x357bd3=document['getElementById']('confirm-dialog-cancel'),_0x449fb8=document['getElementById']('confirm-dialog-confirm'),_0x1f9517=this['_modal']['querySelector']('.modal-overlay');_0x43f587['addEventListener']('click',()=>this['_resolve'](![])),_0x357bd3['addEventListener']('click',()=>this['_resolve'](![])),_0x449fb8['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f9517['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x247888=>{if(_0x247888['key']==='Escape')_0x247888['preventDefault'](),this['_resolve'](![]);else _0x247888['key']==='Enter'&&(_0x247888['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x29a998,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2d1d33=>{this['_resolvePromise']=_0x2d1d33,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x29a998;const _0x45af30=document['getElementById']('confirm-dialog-cancel'),_0x34f2c1=document['getElementById']('confirm-dialog-confirm');_0x45af30['textContent']=cancelText,_0x34f2c1['textContent']=confirmText,_0x34f2c1['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x34f2c1['focus']();});},'_resolve'(_0x1b2a0a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1b2a0a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x561d37,_0x1416d4={}){this['container']=_0x561d37,this['options']={'placeholder':_0x1416d4['placeholder']||'Type\x20to\x20search...','maxItems':_0x1416d4['maxItems']||0x64,'loadItems':_0x1416d4['loadItems']||(async()=>[]),'renderItem':_0x1416d4['renderItem']||(_0x22e2f2=>({'primary':String(_0x22e2f2),'secondary':''})),'onSelect':_0x1416d4['onSelect']||(()=>{}),'filterItems':_0x1416d4['filterItems']||null,'getItemValue':_0x1416d4['getItemValue']||(_0x289192=>_0x289192),'sortItems':_0x1416d4['sortItems']||null,'debounceMs':_0x1416d4['debounceMs']||0xc8,'minCharsForSearch':_0x1416d4['minCharsForSearch']||0x0,'emptyMessage':_0x1416d4['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1416d4['loadingMessage']||'Loading...','preload':_0x1416d4['preload']!==![],'searchMode':_0x1416d4['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',_0x3506f7=>this['onBlur'](_0x3506f7)),this['input']['addEventListener']('input',_0x100616=>this['onInput'](_0x100616)),this['input']['addEventListener']('keydown',_0x4b7728=>this['onKeydown'](_0x4b7728)),this['clearBtn']['addEventListener']('mousedown',_0x132e6a=>{_0x132e6a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x7e646e=>{_0x7e646e['preventDefault']();}),document['addEventListener']('click',_0x1725fa=>{!this['wrapper']['contains'](_0x1725fa['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(_0x432b4){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x432b4);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x9196a6){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x26301d){const _0x2b5ff1=_0x26301d['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x2b5ff1);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x2b5ff1):this['loadAndShow'](_0x2b5ff1);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x47d06f){switch(_0x47d06f['key']){case'ArrowDown':_0x47d06f['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x47d06f['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x47d06f['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x47d06f['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2e7ef3){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x432356=this['selectedIndex']+_0x2e7ef3;if(_0x432356>=0x0&&_0x432356<this['filteredItems']['length']){this['selectedIndex']=_0x432356,this['updateSelectionHighlight']();const _0x27662a=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x27662a[this['selectedIndex']]&&_0x27662a[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x1a2976=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1a2976['forEach']((_0x2751c3,_0x26ad97)=>{_0x2751c3['classList']['toggle']('keyboard-selected',_0x26ad97===this['selectedIndex']);});}async['loadAndShow'](_0x2bd452){this['showLoading']();try{const _0x192faf=await this['options']['loadItems'](_0x2bd452);if(this['options']['searchMode']==='server'){let _0x4d96a9=_0x192faf;this['options']['sortItems']&&(_0x4d96a9=this['options']['sortItems']([..._0x192faf]));this['filteredItems']=_0x4d96a9;const _0x449f4e=this['filteredItems']['length']>=this['options']['maxItems'];_0x449f4e&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x449f4e),this['open']();}else this['allItems']=_0x192faf,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2bd452);}catch(_0x5c601e){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x5c601e),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x5283c4){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x5283c4):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0xb3dee3=this['filteredItems']['length']>=this['options']['maxItems'];_0xb3dee3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0xb3dee3),this['open']();}['renderItems'](_0x24e15c){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']((_0x509372,_0x18fd67)=>{const _0x3903b2=document['createElement']('div');_0x3903b2['className']='autocomplete-select-item',_0x3903b2['setAttribute']('role','option'),_0x3903b2['setAttribute']('data-index',_0x18fd67);const _0x464e8b=this['options']['renderItem'](_0x509372);let _0x208bd6='';_0x464e8b['icon']&&(_0x208bd6='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x464e8b['iconClass']||'')+'\x22>'+_0x464e8b['icon']+'</span>'),_0x3903b2['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x208bd6+'\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'](_0x464e8b['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x464e8b['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x464e8b['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3903b2['addEventListener']('click',()=>{this['selectItem'](_0x509372);}),_0x3903b2['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x18fd67,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3903b2);}),_0x24e15c?(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'](_0x1d3e8e){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x1d3e8e)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0xda1433){this['selectedItem']=_0xda1433;const _0x3d044a=this['options']['renderItem'](_0xda1433);this['input']['value']=_0x3d044a['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0xda1433);}['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'](_0x203c10){if(_0x203c10){this['selectedItem']=_0x203c10;const _0x1bc184=this['options']['renderItem'](_0x203c10);this['input']['value']=_0x1bc184['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x1ee9cf){this['allItems']=_0x1ee9cf,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'](_0x55da25){this['input']['placeholder']=_0x55da25;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x15ad7c=null){const _0x396990=document['getElementById']('admin-menu-container'),_0x51ef87=document['getElementById']('admin-menu-btn'),_0x2eaefa=document['getElementById']('admin-menu');if(!_0x396990||!_0x51ef87||!_0x2eaefa)return;try{!_0x15ad7c&&(_0x15ad7c=await API['getCurrentUser']());if(_0x15ad7c){const _0x5b8273=window['Permissions'],_0x31d865=_0x5b8273['hasServerPermission'](_0x15ad7c,'*')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:manage')||_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')||_0x5b8273['hasTeamPermission'](_0x15ad7c,'teams:manage')||_0x5b8273['hasEnvPermission'](_0x15ad7c,'environments:view_details');if(!_0x31d865)return;_0x396990['hidden']=![];if(!_0x5b8273['hasServerPermission'](_0x15ad7c,'*')){const _0x1891fc=_0x2eaefa['querySelectorAll']('.admin-menu-item');_0x1891fc['forEach'](_0x20a2bb=>{const _0xf6c8fc=_0x20a2bb['querySelector']('.option-text')?.['textContent']?.['trim']();_0xf6c8fc==='Users'&&!_0x5b8273['hasServerPermission'](_0x15ad7c,'users:create')&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Skills'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Settings'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Server\x20Health'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Git\x20History'&&(_0x20a2bb['hidden']=!![]),_0xf6c8fc==='Roles'&&(_0x20a2bb['hidden']=!![]);});}_0x51ef87['addEventListener']('click',_0x4ae0fe=>{_0x4ae0fe['stopPropagation']();const _0x55a903=document['getElementById']('actions-menu');if(_0x55a903)_0x55a903['hidden']=!![];_0x2eaefa['hidden']=!_0x2eaefa['hidden'];}),document['addEventListener']('click',_0x40e09b=>{!_0x2eaefa['hidden']&&!_0x51ef87['contains'](_0x40e09b['target'])&&!_0x2eaefa['contains'](_0x40e09b['target'])&&(_0x2eaefa['hidden']=!![]);}),document['addEventListener']('keydown',_0x19dd24=>{_0x19dd24['key']==='Escape'&&!_0x2eaefa['hidden']&&(_0x2eaefa['hidden']=!![]);});const _0x4d6b9f=document['getElementById']('server-health-btn');_0x4d6b9f&&_0x4d6b9f['addEventListener']('click',async()=>{_0x2eaefa['hidden']=!![];const {openServerHealthModal:_0x3ec906}=await import('./server-health.js');_0x3ec906();});}}catch(_0x5cf1b0){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5cf1b0['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};