@profoundlogic/coderflow-server 0.7.8 → 0.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/compression-filter.js +1 -1
  32. package/dist/lib/config-migration.js +1 -1
  33. package/dist/lib/container-credential-sync.js +1 -1
  34. package/dist/lib/container-tokens.js +1 -1
  35. package/dist/lib/data-dir.js +1 -1
  36. package/dist/lib/deployment-history.js +1 -1
  37. package/dist/lib/deployment-service.js +1 -1
  38. package/dist/lib/docker-utils.js +1 -1
  39. package/dist/lib/email.js +1 -1
  40. package/dist/lib/emailTemplates.js +1 -1
  41. package/dist/lib/entitlement.js +1 -1
  42. package/dist/lib/external-connections.js +1 -1
  43. package/dist/lib/fetch-utils.js +1 -1
  44. package/dist/lib/git-commit-details-route.js +1 -1
  45. package/dist/lib/git-history-diff-guardrails.js +1 -1
  46. package/dist/lib/git-provider-service.js +1 -1
  47. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  48. package/dist/lib/git-provider-setup/index.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  51. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  52. package/dist/lib/git-providers/github-app-provider.js +1 -1
  53. package/dist/lib/git-providers/index.js +1 -1
  54. package/dist/lib/git-providers/provider-factory.js +1 -1
  55. package/dist/lib/git-providers/provider-interface.js +1 -1
  56. package/dist/lib/github-urls.js +1 -1
  57. package/dist/lib/group-objective-linking.js +1 -1
  58. package/dist/lib/ibmi-sync.js +1 -1
  59. package/dist/lib/jira-client.js +1 -1
  60. package/dist/lib/judge-blinding.js +1 -1
  61. package/dist/lib/logger.js +1 -1
  62. package/dist/lib/memory-utils.js +1 -1
  63. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  64. package/dist/lib/model-fetcher.js +1 -1
  65. package/dist/lib/notifications.js +1 -1
  66. package/dist/lib/objective-context.js +1 -1
  67. package/dist/lib/oidc-auth.js +1 -1
  68. package/dist/lib/oidc-device-flow.js +1 -1
  69. package/dist/lib/passwordTokens.js +1 -1
  70. package/dist/lib/permission-resolver.js +1 -1
  71. package/dist/lib/pin-cascade.js +1 -1
  72. package/dist/lib/provider-accounts.js +1 -1
  73. package/dist/lib/provider-oauth.js +1 -1
  74. package/dist/lib/provider-profile.js +1 -1
  75. package/dist/lib/provider-token-refresh.js +1 -1
  76. package/dist/lib/rbac-user-state.js +1 -1
  77. package/dist/lib/request-url.js +1 -1
  78. package/dist/lib/rewind.js +1 -1
  79. package/dist/lib/role-definitions.js +1 -1
  80. package/dist/lib/roles.js +1 -1
  81. package/dist/lib/secrets.js +1 -1
  82. package/dist/lib/setup-repo-git-auth.js +1 -1
  83. package/dist/lib/state-capture.js +1 -1
  84. package/dist/lib/static-files.js +1 -1
  85. package/dist/lib/task-aliases.js +1 -1
  86. package/dist/lib/task-name-format.js +1 -1
  87. package/dist/lib/task-name-generator.js +1 -1
  88. package/dist/lib/task-source-metadata.js +1 -1
  89. package/dist/lib/teams.js +1 -1
  90. package/dist/lib/user-git-oauth.js +1 -1
  91. package/dist/lib/user-git-tokens.js +1 -1
  92. package/dist/lib/users.js +1 -1
  93. package/dist/middleware/requireAuth.js +1 -1
  94. package/dist/middleware/requireInit.js +1 -1
  95. package/dist/middleware/requirePermission.js +1 -1
  96. package/dist/package.json +1 -1
  97. package/dist/playwright.config.js +1 -1
  98. package/dist/playwright.task-terminal.config.js +1 -1
  99. package/dist/routes/apiKeys.js +1 -1
  100. package/dist/routes/auth-oidc.js +1 -1
  101. package/dist/routes/auth.js +1 -1
  102. package/dist/routes/automations.js +1 -1
  103. package/dist/routes/bindings.js +1 -1
  104. package/dist/routes/build.js +1 -1
  105. package/dist/routes/containers.js +1 -1
  106. package/dist/routes/deploy-task.js +1 -1
  107. package/dist/routes/environment-management.js +1 -1
  108. package/dist/routes/environments.js +1 -1
  109. package/dist/routes/external-skills.js +1 -1
  110. package/dist/routes/git-credentials.js +1 -1
  111. package/dist/routes/git-oauth.js +1 -1
  112. package/dist/routes/git-provider-setup.js +1 -1
  113. package/dist/routes/health.js +1 -1
  114. package/dist/routes/jira.js +1 -1
  115. package/dist/routes/logs.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/stats.js +1 -1
  126. package/dist/routes/tasks.js +1 -1
  127. package/dist/routes/teams.js +1 -1
  128. package/dist/routes/templates.js +1 -1
  129. package/dist/routes/test-task.js +1 -1
  130. package/dist/routes/test.js +1 -1
  131. package/dist/routes/users.js +1 -1
  132. package/dist/routes/visualizations.js +1 -1
  133. package/dist/scripts/create-user.js +1 -1
  134. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  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/admin.css +108 -1
  140. package/dist/web-ui/public/admin.html +35 -23
  141. package/dist/web-ui/public/admin.js +1 -1
  142. package/dist/web-ui/public/agent-event-parser.js +1 -1
  143. package/dist/web-ui/public/app.js +1 -1
  144. package/dist/web-ui/public/approve-dialog.js +1 -1
  145. package/dist/web-ui/public/automation-links.js +1 -1
  146. package/dist/web-ui/public/automation-schedule.js +1 -1
  147. package/dist/web-ui/public/comments-widget.js +1 -1
  148. package/dist/web-ui/public/diff-utils.js +1 -1
  149. package/dist/web-ui/public/environments.html +1 -1
  150. package/dist/web-ui/public/environments.js +1 -1
  151. package/dist/web-ui/public/feedback-widget.js +1 -1
  152. package/dist/web-ui/public/file-selection-tree.js +1 -1
  153. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  154. package/dist/web-ui/public/git-history.js +1 -1
  155. package/dist/web-ui/public/git-status.js +1 -1
  156. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  157. package/dist/web-ui/public/index.js +1 -1
  158. package/dist/web-ui/public/login.js +1 -1
  159. package/dist/web-ui/public/markdown-editor.js +1 -1
  160. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  161. package/dist/web-ui/public/modal-maximize.js +1 -1
  162. package/dist/web-ui/public/notifications.js +1 -1
  163. package/dist/web-ui/public/permissions.js +1 -1
  164. package/dist/web-ui/public/pr-dialog.js +1 -1
  165. package/dist/web-ui/public/roles.js +1 -1
  166. package/dist/web-ui/public/settings.js +1 -1
  167. package/dist/web-ui/public/setup-password.js +1 -1
  168. package/dist/web-ui/public/skills.js +1 -1
  169. package/dist/web-ui/public/sse-client.js +1 -1
  170. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  171. package/dist/web-ui/public/styles.css +9 -1
  172. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  173. package/dist/web-ui/public/task.js +1 -1
  174. package/dist/web-ui/public/teams.js +1 -1
  175. package/dist/web-ui/public/terminal.js +1 -1
  176. package/dist/web-ui/public/theme.js +1 -1
  177. package/dist/web-ui/public/users.js +1 -1
  178. package/dist/web-ui/public/variant-grouping.js +1 -1
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x233e76=window['location']['pathname'],_0x42606e=_0x233e76['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x42606e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x42606e[0x1]),_0x42606e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x51326d={}){const _0x286f2c=new URLSearchParams();_0x51326d['userId']&&_0x286f2c['set']('userId',String(_0x51326d['userId']));_0x51326d['automation']&&_0x286f2c['set']('automation',String(_0x51326d['automation']));const _0x4753fe=API_BASE+'/tasks/stats'+(_0x286f2c['toString']()?'?'+_0x286f2c['toString']():''),_0x40243d=await fetch(_0x4753fe);if(!_0x40243d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x40243d['statusText']);return await _0x40243d['json']();},async 'getTasks'(_0xcf7701={}){const _0x20bac0=new URLSearchParams();_0xcf7701['status']&&_0x20bac0['set']('status',String(_0xcf7701['status']));_0xcf7701['environment']&&_0x20bac0['set']('environment',String(_0xcf7701['environment']));_0xcf7701['automation']&&_0x20bac0['set']('automation',String(_0xcf7701['automation']));if(_0xcf7701['include']){const _0x25ff1b=Array['isArray'](_0xcf7701['include'])?_0xcf7701['include']['join'](','):String(_0xcf7701['include']);_0x25ff1b&&_0x20bac0['set']('include',_0x25ff1b);}_0xcf7701['filter']&&_0x20bac0['set']('filter',String(_0xcf7701['filter']));_0xcf7701['page']&&_0x20bac0['set']('page',String(_0xcf7701['page']));_0xcf7701['limit']&&_0x20bac0['set']('limit',String(_0xcf7701['limit']));_0xcf7701['userId']&&_0x20bac0['set']('userId',String(_0xcf7701['userId']));_0xcf7701['search']&&_0x20bac0['set']('search',String(_0xcf7701['search']));_0xcf7701['includeChildTasks']&&_0x20bac0['set']('includeChildTasks','true');const _0x2fe253=API_BASE+'/tasks'+(_0x20bac0['toString']()?'?'+_0x20bac0['toString']():''),_0x3559e8=await fetch(_0x2fe253);if(!_0x3559e8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3559e8['statusText']);return await _0x3559e8['json']();},async 'getAutomations'(_0x57513d={}){const _0x5b03ef=new URLSearchParams();_0x57513d['environment']&&_0x5b03ef['set']('environment',String(_0x57513d['environment']));const _0xc2c37f=await fetch(API_BASE+'/api/automations'+(_0x5b03ef['toString']()?'?'+_0x5b03ef['toString']():''));if(!_0xc2c37f['ok']){const _0x2fc5c1=await _0xc2c37f['json']()['catch'](()=>({}));throw new Error(_0x2fc5c1['message']||_0x2fc5c1['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0xc2c37f['statusText']);}return await _0xc2c37f['json']();},async 'getAutomation'(_0x3d1457){const _0x287925=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3d1457));if(!_0x287925['ok']){const _0x2050d8=await _0x287925['json']()['catch'](()=>({}));throw new Error(_0x2050d8['message']||_0x2050d8['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x287925['statusText']);}return await _0x287925['json']();},async 'createAutomation'(_0xbb7a54){const _0x3334aa=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xbb7a54||{})});if(!_0x3334aa['ok']){const _0x53f690=await _0x3334aa['json']()['catch'](()=>({}));throw new Error(_0x53f690['message']||_0x53f690['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3334aa['statusText']);}return await _0x3334aa['json']();},async 'updateAutomation'(_0x21deb8,_0x25a9c7){const _0x1c34d7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x21deb8),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a9c7||{})});if(!_0x1c34d7['ok']){const _0x532df9=await _0x1c34d7['json']()['catch'](()=>({}));throw new Error(_0x532df9['message']||_0x532df9['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x1c34d7['statusText']);}return await _0x1c34d7['json']();},async 'deleteAutomation'(_0x449e86){const _0xe0f73f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x449e86),{'method':'DELETE'});if(!_0xe0f73f['ok']){const _0x5e9e81=await _0xe0f73f['json']()['catch'](()=>({}));throw new Error(_0x5e9e81['message']||_0x5e9e81['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0xe0f73f['statusText']);}return await _0xe0f73f['json']();},async 'triggerAutomation'(_0x57a1e0){const _0x53d422=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x57a1e0)+'/trigger',{'method':'POST'});if(!_0x53d422['ok']){const _0x22be42=await _0x53d422['json']()['catch'](()=>({}));throw new Error(_0x22be42['message']||_0x22be42['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x53d422['statusText']);}return await _0x53d422['json']();},async 'setAutomationEnabled'(_0x2c7e53,_0x3779fc){const _0x1de884=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2c7e53)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x3779fc})});if(!_0x1de884['ok']){const _0x1823e1=await _0x1de884['json']()['catch'](()=>({}));throw new Error(_0x1823e1['message']||_0x1823e1['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x1de884['statusText']);}return await _0x1de884['json']();},async 'getAutomationHistory'(_0x1f6557,_0x2e7794=0x32){const _0x44544e=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f6557)+'/history?limit='+encodeURIComponent(String(_0x2e7794)));if(!_0x44544e['ok']){const _0x3909f0=await _0x44544e['json']()['catch'](()=>({}));throw new Error(_0x3909f0['message']||_0x3909f0['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x44544e['statusText']);}return await _0x44544e['json']();},async 'getTask'(_0x3a95cc,_0x370eb6={}){const _0xd98613=new URLSearchParams();if(_0x370eb6['include']){const _0x1c1921=Array['isArray'](_0x370eb6['include'])?_0x370eb6['include']['join'](','):String(_0x370eb6['include']);if(_0x1c1921)_0xd98613['set']('include',_0x1c1921);}const _0x2dbec9=await fetch(API_BASE+'/tasks/'+_0x3a95cc+(_0xd98613['toString']()?'?'+_0xd98613['toString']():''));if(!_0x2dbec9['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x2dbec9['statusText']);return await _0x2dbec9['json']();},async 'getTaskResults'(_0x16d0d6){const _0x33107a=await fetch(API_BASE+'/tasks/'+_0x16d0d6+'/results');if(!_0x33107a['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x33107a['statusText']);return await _0x33107a['json']();},async 'getTaskPatches'(_0x5844d2){const _0x3754b2=await fetch(API_BASE+'/tasks/'+_0x5844d2+'/patches');if(!_0x3754b2['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x3754b2['statusText']);return await _0x3754b2['json']();},async 'getTaskAttachments'(_0x1d5d56){const _0x386fbe=await fetch(API_BASE+'/tasks/'+_0x1d5d56+'/attachments');if(!_0x386fbe['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x386fbe['statusText']);return await _0x386fbe['json']();},async 'uploadAttachments'(_0xab1186,_0x448dd3){const _0x18c024=new FormData();for(const _0x129ffe of _0x448dd3){_0x18c024['append']('attachments',_0x129ffe);}const _0x5edfbe=await fetch(API_BASE+'/tasks/'+_0xab1186+'/attachments',{'method':'POST','body':_0x18c024});if(!_0x5edfbe['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x5edfbe['statusText']);return await _0x5edfbe['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3f02f9=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3f02f9['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3f02f9['json']();}catch(_0x24e1b1){return{'available':![],'reason':_0x24e1b1['message']};}},async 'generateTaskName'(_0x1e9346){try{const _0x3bccdd=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x1e9346})});return await _0x3bccdd['json']();}catch(_0x1d19dc){return{'success':![],'error':_0x1d19dc['message']};}},async 'createTask'(_0x5864a8){let _0x13d7a1,_0x4ec753={};if(_0x5864a8['files']&&_0x5864a8['files']['length']>0x0){const _0x45b4eb=new FormData();for(const [_0x319c78,_0x4f9e88]of Object['entries'](_0x5864a8)){if(_0x319c78!=='files'){if(_0x4f9e88==null)continue;typeof _0x4f9e88==='object'?_0x45b4eb['append'](_0x319c78,JSON['stringify'](_0x4f9e88)):_0x45b4eb['append'](_0x319c78,String(_0x4f9e88));}}for(const _0x58f640 of _0x5864a8['files']){_0x45b4eb['append']('attachments',_0x58f640);}_0x13d7a1=_0x45b4eb;}else _0x4ec753['Content-Type']='application/json',_0x13d7a1=JSON['stringify'](_0x5864a8);const _0x300fc5=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4ec753,'body':_0x13d7a1});if(!_0x300fc5['ok']){const _0x171555=await _0x300fc5['json'](),_0x479552=new Error(_0x171555['error']||'Failed\x20to\x20create\x20task:\x20'+_0x300fc5['statusText']),{message:_0x12f62a,..._0x3731b1}=_0x171555;Object['assign'](_0x479552,_0x3731b1);throw _0x479552;}return await _0x300fc5['json']();},async 'createTestTask'(_0x39c482){const _0x6d1269=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39c482)});if(!_0x6d1269['ok']){const _0x28537b=await _0x6d1269['json']();throw new Error(_0x28537b['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x6d1269['statusText']);}return await _0x6d1269['json']();},async 'createEphemeralTest'(_0x16d9ce){const _0x35b6b0=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16d9ce)});if(!_0x35b6b0['ok']){const _0x16e855=await _0x35b6b0['json']();throw new Error(_0x16e855['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35b6b0['statusText']);}return await _0x35b6b0['json']();},async 'createDeployTask'(_0x39782d){const _0x41c85a=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39782d)});if(!_0x41c85a['ok']){const _0x4dc5a2=await _0x41c85a['json']();throw new Error(_0x4dc5a2['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x41c85a['statusText']);}return await _0x41c85a['json']();},async 'getEnvironments'(){const _0x3dad25=await fetch(API_BASE+'/environments');if(!_0x3dad25['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x3dad25['statusText']);return await _0x3dad25['json']();},async 'getEnvironment'(_0x2e975d){const _0x5d82a3=await fetch(API_BASE+'/environments/'+_0x2e975d);if(!_0x5d82a3['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5d82a3['statusText']);return await _0x5d82a3['json']();},async 'getEnvironmentRepoHistory'(_0x13764c,_0x1f97e8,_0x5b8869={}){if(!_0x13764c||!_0x1f97e8)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4d95b9=new URLSearchParams();if(_0x5b8869['limit'])_0x4d95b9['set']('limit',String(_0x5b8869['limit']));if(_0x5b8869['offset'])_0x4d95b9['set']('offset',String(_0x5b8869['offset']));if(_0x5b8869['search'])_0x4d95b9['set']('search',String(_0x5b8869['search']));if(_0x5b8869['branch'])_0x4d95b9['set']('branch',String(_0x5b8869['branch']));const _0x27fa13=API_BASE+'/environments/'+encodeURIComponent(_0x13764c)+'/repos/'+encodeURIComponent(_0x1f97e8)+'/git/history',_0x4e686f=await fetch(''+_0x27fa13+(_0x4d95b9['toString']()?'?'+_0x4d95b9['toString']():''));if(!_0x4e686f['ok']){const _0x51af5e=await _0x4e686f['json']()['catch'](()=>({}));throw new Error(_0x51af5e['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4e686f['statusText']);}return await _0x4e686f['json']();},async 'getEnvironmentRepoCommit'(_0x240753,_0x40b235,_0x5ed338){if(!_0x240753||!_0x40b235||!_0x5ed338)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xdd87bb=API_BASE+'/environments/'+encodeURIComponent(_0x240753)+'/repos/'+encodeURIComponent(_0x40b235)+'/git/commits/'+encodeURIComponent(_0x5ed338),_0x2907e4=await fetch(_0xdd87bb);if(!_0x2907e4['ok']){const _0x4715df=await _0x2907e4['json']()['catch'](()=>({}));throw new Error(_0x4715df['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x2907e4['statusText']);}return await _0x2907e4['json']();},async 'getEnvironmentRepoBranches'(_0x3bca45,_0x58a792){if(!_0x3bca45||!_0x58a792)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x359fdd=API_BASE+'/environments/'+encodeURIComponent(_0x3bca45)+'/repos/'+encodeURIComponent(_0x58a792)+'/git/branches',_0x1b6374=await fetch(_0x359fdd);if(!_0x1b6374['ok']){const _0x3d67a6=await _0x1b6374['json']()['catch'](()=>({}));throw new Error(_0x3d67a6['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x1b6374['statusText']);}return await _0x1b6374['json']();},async 'revertEnvironmentRepoCommit'(_0x1c5518,_0x1adb33,_0x12a37d,_0x558789={}){if(!_0x1c5518||!_0x1adb33||!_0x12a37d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x3aacdc=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c5518)+'/repos/'+encodeURIComponent(_0x1adb33)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x12a37d,..._0x558789})});if(!_0x3aacdc['ok']){const _0x5efba7=await _0x3aacdc['json']()['catch'](()=>({}));throw new Error(_0x5efba7['message']||_0x5efba7['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x3aacdc['statusText']);}return await _0x3aacdc['json']();},async 'getTemplates'(_0x2f948f={}){const _0x49ab1a=new URLSearchParams();if(_0x2f948f['include']){const _0x39127f=Array['isArray'](_0x2f948f['include'])?_0x2f948f['include']['join'](','):String(_0x2f948f['include']);if(_0x39127f)_0x49ab1a['set']('include',_0x39127f);}const _0x47a483=await fetch(API_BASE+'/templates'+(_0x49ab1a['toString']()?'?'+_0x49ab1a['toString']():''));if(!_0x47a483['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x47a483['statusText']);return await _0x47a483['json']();},async 'getTemplatesForEnvironment'(_0x321859,_0x3afc16={}){if(!_0x321859)throw new Error('Environment\x20name\x20is\x20required');const _0x421eed=new URLSearchParams();if(_0x3afc16['include']){const _0x8d462b=Array['isArray'](_0x3afc16['include'])?_0x3afc16['include']['join'](','):String(_0x3afc16['include']);if(_0x8d462b)_0x421eed['set']('include',_0x8d462b);}const _0x4c60fa=await fetch(API_BASE+'/templates/'+_0x321859+(_0x421eed['toString']()?'?'+_0x421eed['toString']():''));if(!_0x4c60fa['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x321859+':\x20'+_0x4c60fa['statusText']);return await _0x4c60fa['json']();},async 'getTemplate'(_0xd6cb03,_0x4e2863,_0x5e64bd={}){if(!_0xd6cb03||!_0x4e2863)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x59453d=new URLSearchParams();if(_0x5e64bd['include']){const _0x38c5d1=Array['isArray'](_0x5e64bd['include'])?_0x5e64bd['include']['join'](','):String(_0x5e64bd['include']);if(_0x38c5d1)_0x59453d['set']('include',_0x38c5d1);}const _0xefadee=await fetch(API_BASE+'/templates/'+_0xd6cb03+'/'+_0x4e2863+(_0x59453d['toString']()?'?'+_0x59453d['toString']():''));if(!_0xefadee['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0xefadee['statusText']);return await _0xefadee['json']();},async 'getTaskLogs'(_0x1641e0,_0x4edb76={}){if(!_0x1641e0)throw new Error('Task\x20ID\x20is\x20required');const _0xf1d8f2=new URLSearchParams();_0x4edb76['tail']&&_0xf1d8f2['set']('tail',String(_0x4edb76['tail']));const _0x1ffbcc=await fetch(API_BASE+'/tasks/'+_0x1641e0+'/logs'+(_0xf1d8f2['toString']()?'?'+_0xf1d8f2['toString']():''));if(!_0x1ffbcc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x1ffbcc['statusText']);return await _0x1ffbcc['text']();},async 'getContainers'(){const _0x2c00cc=await fetch(API_BASE+'/containers');if(!_0x2c00cc['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2c00cc['statusText']);return await _0x2c00cc['json']();},async 'getContainer'(_0x52da2d){const _0x1cf3a7=await fetch(API_BASE+'/containers/'+_0x52da2d);if(!_0x1cf3a7['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1cf3a7['statusText']);return await _0x1cf3a7['json']();},async 'startInteractiveContainer'(_0x151c7c){const _0x15a0f2=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x151c7c)});if(!_0x15a0f2['ok']){const _0x4cac7b=await _0x15a0f2['json']()['catch'](()=>({}));throw new Error(_0x4cac7b['message']||'Failed\x20to\x20start\x20container:\x20'+_0x15a0f2['statusText']);}return await _0x15a0f2['json']();},async 'startContainerCodeServer'(_0x37c55c,_0x3934ce={}){if(!_0x37c55c)throw new Error('Container\x20ID\x20is\x20required');const _0x549dc3=new URLSearchParams();_0x3934ce['theme']&&_0x549dc3['set']('theme',_0x3934ce['theme']);const _0x4132c9=await fetch(API_BASE+'/containers/'+_0x37c55c+'/code-server'+(_0x549dc3['toString']()?'?'+_0x549dc3['toString']():'')),_0xde09f5=await _0x4132c9['json']()['catch'](()=>({}));if(!_0x4132c9['ok'])throw new Error(_0xde09f5['message']||_0xde09f5['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x4132c9['statusText']);return _0xde09f5;},async 'stopContainer'(_0x36f147){const _0x24687a=await fetch(API_BASE+'/containers/'+_0x36f147,{'method':'DELETE'});if(!_0x24687a['ok']){const _0x12e39e=await _0x24687a['json']()['catch'](()=>({}));throw new Error(_0x12e39e['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x24687a['statusText']);}return await _0x24687a['json']();},async 'stopTask'(_0x4e72e2){if(!_0x4e72e2)throw new Error('Task\x20ID\x20is\x20required');const _0x94cb8=await fetch(API_BASE+'/tasks/'+_0x4e72e2+'/stop',{'method':'POST'});if(!_0x94cb8['ok']){const _0x3008fa=await _0x94cb8['json']()['catch'](()=>({}));throw new Error(_0x3008fa['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x94cb8['statusText']);}return await _0x94cb8['json']();},async 'interruptTask'(_0x442fd5){if(!_0x442fd5)throw new Error('Task\x20ID\x20is\x20required');const _0x249195=await fetch(API_BASE+'/tasks/'+_0x442fd5+'/interrupt',{'method':'POST'});if(!_0x249195['ok']){const _0x56313a=await _0x249195['json']()['catch'](()=>({}));throw new Error(_0x56313a['error']||_0x56313a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x249195['statusText']);}return await _0x249195['json']();},async 'startTask'(_0x2b3d49){if(!_0x2b3d49)throw new Error('Task\x20ID\x20is\x20required');const _0x5dc511=await fetch(API_BASE+'/tasks/'+_0x2b3d49+'/start',{'method':'POST'});if(!_0x5dc511['ok']){const _0x1edb7c=await _0x5dc511['json']()['catch'](()=>({}));throw new Error(_0x1edb7c['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5dc511['statusText']);}return await _0x5dc511['json']();},async 'deleteTask'(_0x487e5c){if(!_0x487e5c)throw new Error('Task\x20ID\x20is\x20required');const _0x370fa3=await fetch(API_BASE+'/tasks/'+_0x487e5c,{'method':'DELETE'});if(!_0x370fa3['ok']){const _0x3ea64d=await _0x370fa3['json']()['catch'](()=>({}));throw new Error(_0x3ea64d['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x370fa3['statusText']);}return await _0x370fa3['json']();},async 'refreshTasksFromDisk'(){const _0x24922f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x24922f['ok']){const _0x316317=await _0x24922f['json']()['catch'](()=>({}));throw new Error(_0x316317['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x24922f['statusText']);}return await _0x24922f['json']();},async 'approveTask'(_0x24b161,_0x47a71f={}){if(!_0x24b161)throw new Error('Task\x20ID\x20is\x20required');const _0x19d528={'commit_message':_0x47a71f['commit_message']||'','pull':_0x47a71f['pull']??![],'push':_0x47a71f['push']??![]};_0x47a71f['new_branch']&&(_0x19d528['new_branch']=_0x47a71f['new_branch']);const _0x1e1413=await fetch(API_BASE+'/tasks/'+_0x24b161+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19d528)});if(!_0x1e1413['ok']){const _0x354d8e=await _0x1e1413['json']()['catch'](()=>({}));let _0x4ba1a4=_0x354d8e['error']||_0x354d8e['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1e1413['statusText'];if(_0x354d8e['results']&&Array['isArray'](_0x354d8e['results'])){const _0x49ff04=_0x354d8e['results']['filter'](_0x1ab344=>!_0x1ab344['success']&&_0x1ab344['error']);_0x49ff04['length']>0x0&&(_0x4ba1a4=_0x49ff04[0x0]['error']);}throw new Error(_0x4ba1a4);}return await _0x1e1413['json']();},async 'getPullRequestInfo'(_0x58e444){if(!_0x58e444)throw new Error('Task\x20ID\x20is\x20required');const _0x10b24d=await fetch(API_BASE+'/tasks/'+_0x58e444+'/pull-request-info');if(!_0x10b24d['ok']){const _0x27bf18=await _0x10b24d['json']()['catch'](()=>({}));throw new Error(_0x27bf18['error']||_0x27bf18['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x10b24d['statusText']);}return await _0x10b24d['json']();},async 'createPullRequests'(_0x2815c9,_0x3e5a54){if(!_0x2815c9)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3e5a54||!Array['isArray'](_0x3e5a54))throw new Error('repos\x20array\x20is\x20required');const _0x58c0f2=await fetch(API_BASE+'/tasks/'+_0x2815c9+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x3e5a54})});if(!_0x58c0f2['ok']){const _0x3fea8c=await _0x58c0f2['json']()['catch'](()=>({}));let _0x4c933e=_0x3fea8c['error']||_0x3fea8c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x58c0f2['statusText'];if(_0x3fea8c['results']&&Array['isArray'](_0x3fea8c['results'])){const _0x17fb02=_0x3fea8c['results']['filter'](_0x5d58f3=>!_0x5d58f3['success']&&_0x5d58f3['error']);_0x17fb02['length']>0x0&&(_0x4c933e=_0x17fb02[0x0]['error']);}throw new Error(_0x4c933e);}return await _0x58c0f2['json']();},async 'syncRepos'(_0xf094d){if(!_0xf094d)throw new Error('Task\x20ID\x20is\x20required');const _0x3515d5=await fetch(API_BASE+'/tasks/'+_0xf094d+'/sync-repos',{'method':'POST'});if(!_0x3515d5['ok']){const _0x3e7884=await _0x3515d5['json']()['catch'](()=>({}));throw new Error(_0x3e7884['error']||_0x3e7884['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x3515d5['statusText']);}return await _0x3515d5['json']();},async 'getIbmiSyncInfo'(_0x341e0f){if(!_0x341e0f)throw new Error('Task\x20ID\x20is\x20required');const _0x389324=await fetch(API_BASE+'/tasks/'+_0x341e0f+'/ibmi-sync-info');if(!_0x389324['ok']){const _0x4addca=await _0x389324['json']()['catch'](()=>({}));throw new Error(_0x4addca['error']||_0x4addca['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x389324['json']();},async 'getSyncFiles'(_0x1d1d69){if(!_0x1d1d69)throw new Error('Task\x20ID\x20is\x20required');const _0x6ee51a=await fetch(API_BASE+'/tasks/'+_0x1d1d69+'/sync-to-ibmi/files');if(!_0x6ee51a['ok']){const _0x360d36=await _0x6ee51a['json']()['catch'](()=>({}));throw new Error(_0x360d36['error']||_0x360d36['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x6ee51a['json']();},async 'syncToIbmi'(_0x8440d7,_0x19a302,_0x4fd5b2=null,_0x2bd054=null,_0x26f393=null){if(!_0x8440d7)throw new Error('Task\x20ID\x20is\x20required');const _0x5e561c={'library':_0x19a302};if(_0x4fd5b2)_0x5e561c['user']=_0x4fd5b2;if(_0x2bd054)_0x5e561c['password']=_0x2bd054;if(_0x26f393)_0x5e561c['files']=_0x26f393;const _0x569095=await fetch(API_BASE+'/tasks/'+_0x8440d7+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5e561c)});if(!_0x569095['ok']){const _0x5ac8eb=await _0x569095['json']()['catch'](()=>({}));throw new Error(_0x5ac8eb['error']||_0x5ac8eb['message']||'Sync\x20failed');}return await _0x569095['json']();},async 'getIbmiSyncLog'(_0x9eff87){if(!_0x9eff87)throw new Error('Task\x20ID\x20is\x20required');const _0x20daf6=await fetch(API_BASE+'/tasks/'+_0x9eff87+'/ibmi-sync-log');if(!_0x20daf6['ok']){const _0x26e11b=await _0x20daf6['json']()['catch'](()=>({}));throw new Error(_0x26e11b['error']||_0x26e11b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x20daf6['json']();},async 'pullChanges'(_0x48596c){if(!_0x48596c)throw new Error('Task\x20ID\x20is\x20required');const _0x953177=await fetch(API_BASE+'/tasks/'+_0x48596c+'/pull-changes',{'method':'POST'});if(!_0x953177['ok']){const _0x30d760=await _0x953177['json']()['catch'](()=>({}));throw new Error(_0x30d760['error']||_0x30d760['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x953177['statusText']);}return await _0x953177['json']();},async 'readFile'(_0xe71118,_0x791054){if(!_0xe71118)throw new Error('Task\x20ID\x20is\x20required');if(!_0x791054)throw new Error('File\x20path\x20is\x20required');const _0x2f6906=await fetch(API_BASE+'/tasks/'+_0xe71118+'/files?path='+encodeURIComponent(_0x791054));if(!_0x2f6906['ok']){const _0x2316e0=await _0x2f6906['json']()['catch'](()=>({}));throw new Error(_0x2316e0['error']||_0x2316e0['message']||'Failed\x20to\x20read\x20file:\x20'+_0x2f6906['statusText']);}return await _0x2f6906['json']();},'getTaskFileDownloadUrl'(_0x2d0f82,_0xee3c5){if(!_0x2d0f82)throw new Error('Task\x20ID\x20is\x20required');if(!_0xee3c5)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2d0f82+'/files/download?path='+encodeURIComponent(_0xee3c5);},async 'writeFile'(_0x496ed1,_0x5d6866,_0x2eb14c){if(!_0x496ed1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d6866)throw new Error('File\x20path\x20is\x20required');if(_0x2eb14c===undefined)throw new Error('Content\x20is\x20required');const _0x728ba=await fetch(API_BASE+'/tasks/'+_0x496ed1+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d6866,'content':_0x2eb14c})});if(!_0x728ba['ok']){const _0x5f51e4=await _0x728ba['json']()['catch'](()=>({}));throw new Error(_0x5f51e4['error']||_0x5f51e4['message']||'Failed\x20to\x20write\x20file:\x20'+_0x728ba['statusText']);}return await _0x728ba['json']();},async 'uploadTaskFiles'(_0x4051cc,_0x35333d,_0x3a82c5){if(!_0x4051cc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x35333d)throw new Error('Target\x20directory\x20is\x20required');if(!_0x3a82c5||_0x3a82c5['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0xe489f4=new FormData();_0xe489f4['append']('targetDir',_0x35333d);for(const _0x999a0 of _0x3a82c5){_0xe489f4['append']('files',_0x999a0,_0x999a0['name']);}const _0x2fbfa6=await fetch(API_BASE+'/tasks/'+_0x4051cc+'/files/upload',{'method':'POST','body':_0xe489f4});if(!_0x2fbfa6['ok']){const _0x255b88=await _0x2fbfa6['json']()['catch'](()=>({}));throw new Error(_0x255b88['error']||_0x255b88['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2fbfa6['statusText']);}return await _0x2fbfa6['json']();},async 'createDirectory'(_0x2f2e1e,_0x3095a4){if(!_0x2f2e1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3095a4)throw new Error('Directory\x20path\x20is\x20required');const _0x2121f4=await fetch(API_BASE+'/tasks/'+_0x2f2e1e+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3095a4})});if(!_0x2121f4['ok']){const _0x16a913=await _0x2121f4['json']()['catch'](()=>({}));throw new Error(_0x16a913['error']||_0x16a913['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x2121f4['statusText']);}return await _0x2121f4['json']();},async 'renamePath'(_0x22de85,_0x45b0a8,_0x4fa939){if(!_0x22de85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45b0a8)throw new Error('Source\x20path\x20is\x20required');if(!_0x4fa939)throw new Error('Destination\x20path\x20is\x20required');const _0x3d394d=await fetch(API_BASE+'/tasks/'+_0x22de85+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x45b0a8,'newPath':_0x4fa939})});if(!_0x3d394d['ok']){const _0x1029ce=await _0x3d394d['json']()['catch'](()=>({}));throw new Error(_0x1029ce['error']||_0x1029ce['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x3d394d['statusText']);}return await _0x3d394d['json']();},async 'deleteFile'(_0x1e291a,_0x4787d8){if(!_0x1e291a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4787d8)throw new Error('File\x20path\x20is\x20required');const _0x4f20d1=await fetch(API_BASE+'/tasks/'+_0x1e291a+'/files?path='+encodeURIComponent(_0x4787d8),{'method':'DELETE'});if(!_0x4f20d1['ok']){const _0x19e06d=await _0x4f20d1['json']()['catch'](()=>({}));throw new Error(_0x19e06d['error']||_0x19e06d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4f20d1['statusText']);}return await _0x4f20d1['json']();},async 'deleteDirectory'(_0x326155,_0x20b120){if(!_0x326155)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20b120)throw new Error('Directory\x20path\x20is\x20required');const _0x334751=await fetch(API_BASE+'/tasks/'+_0x326155+'/files/directory?path='+encodeURIComponent(_0x20b120),{'method':'DELETE'});if(!_0x334751['ok']){const _0x115c48=await _0x334751['json']()['catch'](()=>({}));throw new Error(_0x115c48['error']||_0x115c48['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x334751['statusText']);}return await _0x334751['json']();},async 'discardFile'(_0x3361de,_0x4c9221,_0x196ae6){if(!_0x3361de)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4c9221)throw new Error('File\x20path\x20is\x20required');if(!_0x196ae6)throw new Error('Repository\x20path\x20is\x20required');const _0x44f686=await fetch(API_BASE+'/tasks/'+_0x3361de+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4c9221,'repoPath':_0x196ae6})});if(!_0x44f686['ok']){const _0x347196=await _0x44f686['json']()['catch'](()=>({}));throw new Error(_0x347196['error']||_0x347196['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x44f686['statusText']);}return await _0x44f686['json']();},async 'followUpTask'(_0x12de5a,_0x3f5458={}){if(!_0x12de5a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f5458['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x1befb9,_0x29c66f={};if(_0x3f5458['files']&&_0x3f5458['files']['length']>0x0){const _0x112214=new FormData();_0x112214['append']('instructions',_0x3f5458['instructions']);for(const _0xc81535 of _0x3f5458['files']){_0x112214['append']('attachments',_0xc81535);}_0x1befb9=_0x112214;}else _0x29c66f['Content-Type']='application/json',_0x1befb9=JSON['stringify']({'instructions':_0x3f5458['instructions']});const _0x1b6f4a=await fetch(API_BASE+'/tasks/'+_0x12de5a+'/follow-up',{'method':'POST','headers':_0x29c66f,'body':_0x1befb9});if(!_0x1b6f4a['ok']){const _0x36dd98=await _0x1b6f4a['json']()['catch'](()=>({}));throw new Error(_0x36dd98['error']||_0x36dd98['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x1b6f4a['statusText']);}return await _0x1b6f4a['json']();},async 'getTaskRewindPoints'(_0x47f57a){if(!_0x47f57a)throw new Error('Task\x20ID\x20is\x20required');const _0x2746eb=await fetch(API_BASE+'/tasks/'+_0x47f57a+'/rewind-points');if(!_0x2746eb['ok']){const _0x1374fc=await _0x2746eb['json']()['catch'](()=>({}));throw new Error(_0x1374fc['error']||_0x1374fc['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x2746eb['statusText']);}return await _0x2746eb['json']();},async 'rewindTask'(_0x376c69,_0x339888={}){if(!_0x376c69)throw new Error('Task\x20ID\x20is\x20required');const _0x6257c6=Number['isInteger'](_0x339888['targetFollowUpCount'])?_0x339888['targetFollowUpCount']:0x0,_0x486e3f={'targetFollowUpCount':_0x6257c6};typeof _0x339888['instructions']==='string'&&_0x339888['instructions']['trim']()&&(_0x486e3f['instructions']=_0x339888['instructions']['trim']());typeof _0x339888['rewindFiles']==='boolean'&&(_0x486e3f['rewindFiles']=_0x339888['rewindFiles']);const _0x3d71ba=await fetch(API_BASE+'/tasks/'+_0x376c69+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x486e3f)});if(!_0x3d71ba['ok']){const _0x2dc3f7=await _0x3d71ba['json']()['catch'](()=>({}));throw new Error(_0x2dc3f7['error']||_0x2dc3f7['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3d71ba['statusText']);}return await _0x3d71ba['json']();},async 'login'(_0x4d2314,_0x108efd){const _0x5ccc2e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x4d2314,'password':_0x108efd})});if(!_0x5ccc2e['ok']){const _0x5d231c=await _0x5ccc2e['json']();throw new Error(_0x5d231c['message']||'Login\x20failed');}return await _0x5ccc2e['json']();},async 'logout'(){const _0x529c56=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x529c56['ok']){const _0x458bf3=await _0x529c56['json']();throw new Error(_0x458bf3['message']||'Logout\x20failed');}return await _0x529c56['json']();},async 'getCurrentUser'(){const _0x40a1cb=await fetch(API_BASE+'/auth/me');if(!_0x40a1cb['ok'])throw new Error('Not\x20authenticated');const _0x426a76=await _0x40a1cb['json']();return _0x426a76['user'];},async 'getRolesInfo'(){const _0x40fd7c=await fetch(API_BASE+'/users/roles');if(!_0x40fd7c['ok']){const _0x490a59=await _0x40fd7c['json']();throw new Error(_0x490a59['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x40fd7c['json']();},async 'getUsers'(){const _0x11f86a=await fetch(API_BASE+'/users');if(!_0x11f86a['ok']){const _0x1ef210=await _0x11f86a['json']();throw new Error(_0x1ef210['message']||'Failed\x20to\x20get\x20users');}return await _0x11f86a['json']();},async 'getUser'(_0x1e0075){const _0x199c03=await fetch(API_BASE+'/users/'+_0x1e0075);if(!_0x199c03['ok']){const _0x15bd2b=await _0x199c03['json']();throw new Error(_0x15bd2b['message']||'Failed\x20to\x20get\x20user');}return await _0x199c03['json']();},async 'createUser'(_0x5da985){const _0x4d7315=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5da985)});if(!_0x4d7315['ok']){const _0x2b4b1e=await _0x4d7315['json']();throw new Error(_0x2b4b1e['message']||'Failed\x20to\x20create\x20user');}return await _0x4d7315['json']();},async 'updateUser'(_0x24b74d,_0x37ebb5){const _0x6c6ced=await fetch(API_BASE+'/users/'+_0x24b74d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37ebb5)});if(!_0x6c6ced['ok']){const _0x280292=await _0x6c6ced['json']();throw new Error(_0x280292['message']||'Failed\x20to\x20update\x20user');}return await _0x6c6ced['json']();},async 'deleteUser'(_0x11a713){const _0x140950=await fetch(API_BASE+'/users/'+_0x11a713,{'method':'DELETE'});if(!_0x140950['ok']){const _0x441443=await _0x140950['json']();throw new Error(_0x441443['message']||'Failed\x20to\x20delete\x20user');}return await _0x140950['json']();},async 'stopAllContainers'(){const _0x43b6d1=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x302dbc=await _0x43b6d1['json']()['catch'](()=>({}));if(!_0x43b6d1['ok'])throw new Error(_0x302dbc['message']||_0x302dbc['error']||'Failed\x20to\x20stop\x20containers');return _0x302dbc;},async 'removeStoppedContainers'(){const _0x5cf77b=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5c3693=await _0x5cf77b['json']()['catch'](()=>({}));if(!_0x5cf77b['ok'])throw new Error(_0x5c3693['message']||_0x5c3693['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5c3693;},async 'pruneDockerResources'(){const _0x3eb461=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x33b2af=await _0x3eb461['json']()['catch'](()=>({}));if(!_0x3eb461['ok'])throw new Error(_0x33b2af['message']||_0x33b2af['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x33b2af;},async 'getUpdateSettings'(){const _0x19df42=await fetch(API_BASE+'/health/update-settings'),_0x219899=await _0x19df42['json']()['catch'](()=>({}));if(!_0x19df42['ok'])throw new Error(_0x219899['message']||_0x219899['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x219899;},async 'applyServerUpdate'(_0x2ba00b){const _0x110c0b=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0x2ba00b})}),_0x169130=await _0x110c0b['json']()['catch'](()=>({}));if(!_0x110c0b['ok']){const _0x4a614c=new Error(_0x169130['message']||_0x169130['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x169130['output']!==undefined)_0x4a614c['output']=_0x169130['output'];if(_0x169130['error']!==undefined)_0x4a614c['commandError']=_0x169130['error'];throw _0x4a614c;}return _0x169130;},async 'restartServer'(){const _0x439e6d=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2a0587=await _0x439e6d['json']()['catch'](()=>({}));if(!_0x439e6d['ok'])throw new Error(_0x2a0587['message']||_0x2a0587['error']||'Failed\x20to\x20restart\x20server');return _0x2a0587;},async 'createPasswordToken'(_0x2ab5f6,_0x4f986e='setup',_0x5cfe11=![]){const _0x1823f4=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2ab5f6,'type':_0x4f986e,'sendEmail':_0x5cfe11})});if(!_0x1823f4['ok']){const _0x2311d9=await _0x1823f4['json']();throw new Error(_0x2311d9['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1823f4['json']();},async 'getEmailConfig'(){const _0x4030e5=await fetch(API_BASE+'/password/email-config');if(!_0x4030e5['ok']){const _0x402f96=await _0x4030e5['json']();throw new Error(_0x402f96['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x4030e5['json']();},async 'updateTaskName'(_0x136cf9,_0x395772){const _0x4ed0c9=await fetch(API_BASE+'/tasks/'+_0x136cf9,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x395772})});if(!_0x4ed0c9['ok']){const _0x3a7bda=await _0x4ed0c9['json']();throw new Error(_0x3a7bda['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4ed0c9['json']();},async 'pinTask'(_0x1097a6,_0x3b5bc6,_0x2c4c19=null){if(!_0x1097a6)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7b98={'pinned':_0x3b5bc6};_0x2c4c19&&_0x2c4c19['length']>0x0&&(_0x3f7b98['additionalTaskIds']=_0x2c4c19);const _0x7768b4=await fetch(API_BASE+'/tasks/'+_0x1097a6+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f7b98)});if(!_0x7768b4['ok']){const _0x3988e5=await _0x7768b4['json']();throw new Error(_0x3988e5['error']||'Failed\x20to\x20pin\x20task');}return await _0x7768b4['json']();},async 'setTaskWinner'(_0x311f7b,_0x964870,_0x340cc6=[]){if(!_0x311f7b)throw new Error('Task\x20ID\x20is\x20required');const _0x2f7bde=await fetch(API_BASE+'/tasks/'+_0x311f7b+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x964870,'siblings':_0x340cc6})});if(!_0x2f7bde['ok']){const _0x5344d2=await _0x2f7bde['json']();throw new Error(_0x5344d2['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x2f7bde['json']();},async 'setTaskLoser'(_0x30aaac,_0xfc3182){if(!_0x30aaac)throw new Error('Task\x20ID\x20is\x20required');const _0x268b8d=await fetch(API_BASE+'/tasks/'+_0x30aaac+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0xfc3182})});if(!_0x268b8d['ok']){const _0x3af909=await _0x268b8d['json']();throw new Error(_0x3af909['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x268b8d['json']();},async 'createTaskGroup'(_0x36234b){const _0x200909=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36234b)});if(!_0x200909['ok']){const _0x56caa3=await _0x200909['json']();throw new Error(_0x56caa3['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x200909['json']();},async 'getTaskGroups'(_0x1f20fb={}){const _0x5aa66e=new URLSearchParams();if(_0x1f20fb['userId'])_0x5aa66e['set']('userId',String(_0x1f20fb['userId']));if(_0x1f20fb['status'])_0x5aa66e['set']('status',String(_0x1f20fb['status']));if(_0x1f20fb['limit'])_0x5aa66e['set']('limit',String(_0x1f20fb['limit']));const _0x1acfb7=API_BASE+'/tasks/groups'+(_0x5aa66e['toString']()?'?'+_0x5aa66e['toString']():''),_0x3bdb2e=await fetch(_0x1acfb7);if(!_0x3bdb2e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3bdb2e['json']();},async 'getTaskGroup'(_0x351831){const _0x231d38=await fetch(API_BASE+'/tasks/groups/'+_0x351831);if(!_0x231d38['ok']){const _0x2a0efe=await _0x231d38['json']();throw new Error(_0x2a0efe['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x231d38['json']();},async 'updateTaskGroup'(_0x1c689d,_0x4c7fb2,_0xec00){const _0x29850d=await fetch(API_BASE+'/tasks/'+_0x1c689d+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4c7fb2,'groupIndex':_0xec00})});if(!_0x29850d['ok']){const _0xa5c500=await _0x29850d['json']();throw new Error(_0xa5c500['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x29850d['json']();},async 'removeTaskFromGroup'(_0x3f8d18){return this['updateTaskGroup'](_0x3f8d18,null,null);},async 'deleteTaskGroup'(_0x8bc16f,_0x12c72d=![]){const _0x47329f=_0x12c72d?'?deleteTasks=true':'',_0x249f7d=await fetch(API_BASE+'/tasks/groups/'+_0x8bc16f+_0x47329f,{'method':'DELETE'});if(!_0x249f7d['ok']){const _0x4471f8=await _0x249f7d['json']();throw new Error(_0x4471f8['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xdfa827,_0x4de897){const _0x51f2b1=await fetch(API_BASE+'/tasks/groups/'+_0xdfa827+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x4de897})});if(!_0x51f2b1['ok']){const _0x359156=await _0x51f2b1['json']();throw new Error(_0x359156['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x51f2b1['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4c0b3c){if(!_0x4c0b3c)throw new Error('Task\x20ID\x20is\x20required');const _0x3a8287=await fetch(API_BASE+'/tasks/'+_0x4c0b3c+'/comments');if(!_0x3a8287['ok']){const _0x1c26d5=await _0x3a8287['json']()['catch'](()=>({}));throw new Error(_0x1c26d5['error']||'Failed\x20to\x20get\x20comments');}return await _0x3a8287['json']();},async 'addComment'(_0x445f18,_0x477e8a){if(!_0x445f18)throw new Error('Task\x20ID\x20is\x20required');if(!_0x477e8a)throw new Error('Comment\x20content\x20is\x20required');const _0x1c7da1=await fetch(API_BASE+'/tasks/'+_0x445f18+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x477e8a})});if(!_0x1c7da1['ok']){const _0x52a895=await _0x1c7da1['json']()['catch'](()=>({}));throw new Error(_0x52a895['error']||'Failed\x20to\x20add\x20comment');}return await _0x1c7da1['json']();},async 'updateComment'(_0x45161c,_0x42c89d,_0x1d7b23){if(!_0x45161c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x42c89d)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x1d7b23)throw new Error('Comment\x20content\x20is\x20required');const _0x627f43=await fetch(API_BASE+'/tasks/'+_0x45161c+'/comments/'+_0x42c89d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1d7b23})});if(!_0x627f43['ok']){const _0x3485f8=await _0x627f43['json']()['catch'](()=>({}));throw new Error(_0x3485f8['error']||'Failed\x20to\x20update\x20comment');}return await _0x627f43['json']();},async 'deleteComment'(_0x21e767,_0x1e821b){if(!_0x21e767)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1e821b)throw new Error('Comment\x20ID\x20is\x20required');const _0x5c42a7=await fetch(API_BASE+'/tasks/'+_0x21e767+'/comments/'+_0x1e821b,{'method':'DELETE'});if(!_0x5c42a7['ok']){const _0x416663=await _0x5c42a7['json']()['catch'](()=>({}));throw new Error(_0x416663['error']||'Failed\x20to\x20delete\x20comment');}return await _0x5c42a7['json']();},async 'createObjective'(_0x48ab24){const _0x39196d={'objective':!![],'name':_0x48ab24['name']||'','environment':_0x48ab24['environment']||null,'agents':_0x48ab24['agents']||[],'branches':_0x48ab24['branches']||{},'isPinned':_0x48ab24['isPinned']||![],'parentObjectiveId':_0x48ab24['parentObjectiveId']||null,'env_vars':_0x48ab24['envVars']||{},'parameters':{'instructions':_0x48ab24['instructions']||''},'files':_0x48ab24['files']||[],'jira':_0x48ab24['jira']||null};return this['createTask'](_0x39196d);},async 'updateObjective'(_0xf19063,_0x1a5ae8,_0x1d4b24=[],_0x29342e=[]){let _0x24e186,_0x454555={};const _0x432e8b={..._0x1a5ae8};_0x29342e&&_0x29342e['length']>0x0&&(_0x432e8b['removeAttachments']=_0x29342e);if(_0x1d4b24&&_0x1d4b24['length']>0x0){const _0x3ceae8=new FormData();for(const [_0x4fe500,_0x3b5c3c]of Object['entries'](_0x432e8b)){if(_0x3b5c3c==null)continue;typeof _0x3b5c3c==='object'?_0x3ceae8['append'](_0x4fe500,JSON['stringify'](_0x3b5c3c)):_0x3ceae8['append'](_0x4fe500,String(_0x3b5c3c));}for(const _0x3da565 of _0x1d4b24){_0x3ceae8['append']('attachments',_0x3da565);}_0x24e186=_0x3ceae8;}else _0x454555['Content-Type']='application/json',_0x24e186=JSON['stringify'](_0x432e8b);const _0x50ca71=await fetch(API_BASE+'/tasks/'+_0xf19063,{'method':'PATCH','headers':_0x454555,'body':_0x24e186});if(!_0x50ca71['ok']){const _0x3a7292=await _0x50ca71['json']();throw new Error(_0x3a7292['error']||'Failed\x20to\x20update\x20objective');}return await _0x50ca71['json']();},async 'deleteObjective'(_0x4cc428){return this['deleteTask'](_0x4cc428);},async 'launchObjective'(_0x58bd96,_0x25a5d7={}){const _0x65db77=await fetch(API_BASE+'/tasks/'+_0x58bd96+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a5d7)});if(!_0x65db77['ok']){const _0x4578e7=await _0x65db77['json']();throw new Error(_0x4578e7['error']||'Failed\x20to\x20launch\x20objective');}return await _0x65db77['json']();},async 'getObjectiveAttachments'(_0x1600a1){return this['getTaskAttachments'](_0x1600a1);},async 'createJudgeTask'({environment:_0x236238,judgeAgent:_0x58395c,groupId:_0x56f280,taskIds:_0x1537e3,judgeCustomInstructions:_0x53991c,isPinned:_0x1f7b8c}){const _0x592753=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x236238,'judgeAgent':_0x58395c,'groupId':_0x56f280,'taskIds':_0x1537e3,'judgeCustomInstructions':_0x53991c,'isPinned':_0x1f7b8c})});if(!_0x592753['ok']){const _0x5ab901=await _0x592753['json']();throw new Error(_0x5ab901['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x592753['json']();},async 'getJudgeTasks'(_0x29fa06){const _0x359bbf=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x29fa06));if(!_0x359bbf['ok']){const _0x2a8f9d=await _0x359bbf['json']();throw new Error(_0x2a8f9d['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x359bbf['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x4ae539,_0x4e53e4,_0x74e5f=''){const _0x1924ae=await fetch(API_BASE+'/tasks/'+_0x4ae539+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x4e53e4,'customPreamble':_0x74e5f})});if(!_0x1924ae['ok']){const _0x49f9c7=await _0x1924ae['json']();throw new Error(_0x49f9c7['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1924ae['json']();},async 'getJiraConfig'(){const _0x5f4794=await fetch(API_BASE+'/jira/config');if(!_0x5f4794['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5f4794['json']();},async 'getJiraIssue'(_0x3e0a74){const _0x222b6b=await fetch(API_BASE+'/jira/issues/'+_0x3e0a74);if(!_0x222b6b['ok']){const _0x4499ac=await _0x222b6b['json']()['catch'](()=>({}));throw new Error(_0x4499ac['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x222b6b['statusText']);}return await _0x222b6b['json']();},async 'searchJiraIssues'(_0x5738d9,_0x360243=0x14){const _0x7ed25d=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5738d9,'maxResults':_0x360243})});if(!_0x7ed25d['ok']){const _0x5d7b15=await _0x7ed25d['json']()['catch'](()=>({}));throw new Error(_0x5d7b15['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x7ed25d['statusText']);}return await _0x7ed25d['json']();},async 'postJiraComment'(_0x3d72ed,_0x3fb28a){const _0x1ced74=await fetch(API_BASE+'/jira/issues/'+_0x3d72ed+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x3fb28a})});if(!_0x1ced74['ok']){const _0x220e1e=await _0x1ced74['json']()['catch'](()=>({}));throw new Error(_0x220e1e['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1ced74['statusText']);}return await _0x1ced74['json']();},async 'getJiraComments'(_0x151940){const _0x44d6fc=await fetch(API_BASE+'/jira/issues/'+_0x151940+'/comments');if(!_0x44d6fc['ok']){const _0x1795a0=await _0x44d6fc['json']()['catch'](()=>({}));throw new Error(_0x1795a0['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x44d6fc['statusText']);}return await _0x44d6fc['json']();},async 'promptParameter'({environment:_0x8509c6,command:_0x17ea5c,parser:parser='json'}){const _0x475c28=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x8509c6,'command':_0x17ea5c,'parser':parser})});if(!_0x475c28['ok']){const _0x5e6826=await _0x475c28['json']()['catch'](()=>({}));throw new Error(_0x5e6826['message']||_0x5e6826['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x475c28['statusText']);}return await _0x475c28['json']();},async 'promptParameterStream'(_0x4228df,_0x5c9d04){const _0x31868b=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4228df)});if(!_0x31868b['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x31868b['statusText']);const _0x7d6fd5=_0x31868b['body']['getReader'](),_0x57a86a=new TextDecoder();let _0x3e72df='';return new Promise((_0x394a8e,_0x27032b)=>{const _0x17ffc3=async()=>{try{const {done:_0x392ab4,value:_0x592e02}=await _0x7d6fd5['read']();if(_0x392ab4)return;_0x3e72df+=_0x57a86a['decode'](_0x592e02,{'stream':!![]});const _0x13cea3=_0x3e72df['split']('\x0a\x0a');_0x3e72df=_0x13cea3['pop']()||'';for(const _0x4b5dde of _0x13cea3){if(!_0x4b5dde['trim']())continue;const _0x31e5d5=_0x4b5dde['split']('\x0a');let _0xa22f95='message',_0x478855='';for(const _0x3e90b5 of _0x31e5d5){if(_0x3e90b5['startsWith']('event:'))_0xa22f95=_0x3e90b5['substring'](0x6)['trim']();else _0x3e90b5['startsWith']('data:')&&(_0x478855=_0x3e90b5['substring'](0x5)['trim']());}if(!_0x478855)continue;try{const _0x3e6190=JSON['parse'](_0x478855);if(_0xa22f95==='progress'&&_0x5c9d04)_0x5c9d04(_0x3e6190['stage'],_0x3e6190['message']);else{if(_0xa22f95==='result'){_0x394a8e(_0x3e6190);return;}else{if(_0xa22f95==='error'){let _0x1ae605=_0x3e6190['message']||_0x3e6190['error']||'Prompt\x20command\x20failed';_0x3e6190['rawOutput']&&(_0x1ae605+='\x0a\x0aRaw\x20output:\x0a'+_0x3e6190['rawOutput']);_0x27032b(new Error(_0x1ae605));return;}}}}catch(_0x92375e){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x92375e),console['error']('Event\x20type:',_0xa22f95),console['error']('Event\x20data:',_0x478855),console['error']('First\x20200\x20chars:',_0x478855['substring'](0x0,0xc8)),_0x27032b(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x92375e['message']+'\x0a\x0aData:\x20'+_0x478855['substring'](0x0,0x1f4)));return;}}_0x17ffc3();}catch(_0x4ffbc8){_0x27032b(_0x4ffbc8);}};_0x17ffc3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x44bfa7){const _0x3736d6=await fetch(''+API_BASE+_0x44bfa7);if(!_0x3736d6['ok']){const _0x47b177=await _0x3736d6['json']()['catch'](()=>({'error':_0x3736d6['statusText']})),_0x44756e=new Error(_0x47b177['error']||_0x47b177['message']||_0x3736d6['statusText']);if(_0x47b177['detail']!==undefined)_0x44756e['detail']=_0x47b177['detail'];throw _0x44756e;}return await _0x3736d6['json']();},async 'post'(_0x1b01cd,_0x54543c){const _0xae01f2=await fetch(''+API_BASE+_0x1b01cd,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x54543c)});if(!_0xae01f2['ok']){const _0x2df876=await _0xae01f2['json']()['catch'](()=>({'error':_0xae01f2['statusText']})),_0x8fae97=new Error(_0x2df876['error']||_0x2df876['message']||_0xae01f2['statusText']);if(_0x2df876['detail']!==undefined)_0x8fae97['detail']=_0x2df876['detail'];throw _0x8fae97;}return await _0xae01f2['json']();},async 'put'(_0xcb210a,_0x444029){const _0x552765=await fetch(''+API_BASE+_0xcb210a,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x444029)});if(!_0x552765['ok']){const _0x39e666=await _0x552765['json']()['catch'](()=>({'error':_0x552765['statusText']})),_0x251fdc=new Error(_0x39e666['error']||_0x39e666['message']||_0x552765['statusText']);if(_0x39e666['detail']!==undefined)_0x251fdc['detail']=_0x39e666['detail'];throw _0x251fdc;}return await _0x552765['json']();},async 'delete'(_0x247240,_0x4842fe){const _0x39c273={'method':'DELETE'};_0x4842fe&&(_0x39c273['headers']={'Content-Type':'application/json'},_0x39c273['body']=JSON['stringify'](_0x4842fe));const _0x6a0543=await fetch(''+API_BASE+_0x247240,_0x39c273);if(!_0x6a0543['ok']){const _0x1b9951=await _0x6a0543['json']()['catch'](()=>({'error':_0x6a0543['statusText']})),_0x320aba=new Error(_0x1b9951['error']||_0x1b9951['message']||_0x6a0543['statusText']);if(_0x1b9951['detail']!==undefined)_0x320aba['detail']=_0x1b9951['detail'];throw _0x320aba;}return await _0x6a0543['json']();},async 'getSkills'(){const _0x40eaf4=await fetch(API_BASE+'/skills');if(!_0x40eaf4['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x40eaf4['statusText']);return await _0x40eaf4['json']();},async 'getSkill'(_0x478fb4){const _0x1c3f65=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x478fb4));if(!_0x1c3f65['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c3f65['statusText']);return await _0x1c3f65['json']();},async 'createSkill'(_0x17727f){const _0xf36826=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17727f)});if(!_0xf36826['ok']){const _0xeb44d1=await _0xf36826['json']()['catch'](()=>({'error':_0xf36826['statusText']})),_0x1f918b=new Error(_0xeb44d1['error']||_0xeb44d1['message']||_0xf36826['statusText']);if(_0xeb44d1['detail']!==undefined)_0x1f918b['detail']=_0xeb44d1['detail'];throw _0x1f918b;}return await _0xf36826['json']();},async 'updateSkill'(_0x17d44c,_0x13701d){const _0x37771c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x17d44c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x13701d)});if(!_0x37771c['ok']){const _0x2551ca=await _0x37771c['json']()['catch'](()=>({'error':_0x37771c['statusText']})),_0x23d3d=new Error(_0x2551ca['error']||_0x2551ca['message']||_0x37771c['statusText']);if(_0x2551ca['detail']!==undefined)_0x23d3d['detail']=_0x2551ca['detail'];throw _0x23d3d;}return await _0x37771c['json']();},async 'deleteSkill'(_0x5f20fb){const _0x49118b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5f20fb),{'method':'DELETE'});if(!_0x49118b['ok']){const _0x1b2471=await _0x49118b['json']()['catch'](()=>({'error':_0x49118b['statusText']})),_0xa4aa33=new Error(_0x1b2471['error']||_0x1b2471['message']||_0x49118b['statusText']);if(_0x1b2471['detail']!==undefined)_0xa4aa33['detail']=_0x1b2471['detail'];throw _0xa4aa33;}return await _0x49118b['json']();},async 'getSkillFile'(_0x5b14c1,_0x57f767){const _0x2e81ac=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5b14c1)+'/files/'+_0x57f767);if(!_0x2e81ac['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2e81ac['statusText']);return await _0x2e81ac['json']();},async 'saveSkillFile'(_0x274bfd,_0x2d3b6a,_0x37372f){const _0x5edd5a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x274bfd)+'/files/'+_0x2d3b6a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x37372f})});if(!_0x5edd5a['ok']){const _0x459e8b=await _0x5edd5a['json']()['catch'](()=>({'error':_0x5edd5a['statusText']})),_0x3a4547=new Error(_0x459e8b['error']||_0x459e8b['message']||_0x5edd5a['statusText']);if(_0x459e8b['detail']!==undefined)_0x3a4547['detail']=_0x459e8b['detail'];throw _0x3a4547;}return await _0x5edd5a['json']();},async 'deleteSkillFile'(_0x321a8d,_0x5df29d){const _0x6bb2ca=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x321a8d)+'/files/'+_0x5df29d,{'method':'DELETE'});if(!_0x6bb2ca['ok']){const _0x279ff0=await _0x6bb2ca['json']()['catch'](()=>({'error':_0x6bb2ca['statusText']})),_0x3d1705=new Error(_0x279ff0['error']||_0x279ff0['message']||_0x6bb2ca['statusText']);if(_0x279ff0['detail']!==undefined)_0x3d1705['detail']=_0x279ff0['detail'];throw _0x3d1705;}return await _0x6bb2ca['json']();},async 'pullSkills'(){const _0x5cd26a=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5cd26a['ok']){const _0x32c52a=await _0x5cd26a['json']()['catch'](()=>({'error':_0x5cd26a['statusText']})),_0x1a8e49=new Error(_0x32c52a['error']||_0x32c52a['message']||_0x5cd26a['statusText']);if(_0x32c52a['detail']!==undefined)_0x1a8e49['detail']=_0x32c52a['detail'];throw _0x1a8e49;}return await _0x5cd26a['json']();},async 'commitSkills'(_0x39b8d6,_0xd87e21={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0xd87e21,_0x3ed0d7=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x39b8d6,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3ed0d7['ok']){const _0x2c67c1=await _0x3ed0d7['json']()['catch'](()=>({'error':_0x3ed0d7['statusText']})),_0x28db48=new Error(_0x2c67c1['error']||_0x2c67c1['message']||_0x3ed0d7['statusText']);if(_0x2c67c1['detail']!==undefined)_0x28db48['detail']=_0x2c67c1['detail'];throw _0x28db48;}return await _0x3ed0d7['json']();},async 'discardSkillsChanges'(){const _0x573ca3=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x573ca3['ok']){const _0x5cc126=await _0x573ca3['json']()['catch'](()=>({'error':_0x573ca3['statusText']})),_0xabe7e9=new Error(_0x5cc126['error']||_0x5cc126['message']||_0x573ca3['statusText']);if(_0x5cc126['detail']!==undefined)_0xabe7e9['detail']=_0x5cc126['detail'];throw _0xabe7e9;}return await _0x573ca3['json']();},async 'getSkillCatalog'(){const _0x5c35f6=await fetch(API_BASE+'/external-skills/catalog');if(!_0x5c35f6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x5c35f6['statusText']);return await _0x5c35f6['json']();},async 'getImportedSkillsRegistry'(){const _0x4a58c0=await fetch(API_BASE+'/external-skills/registry');if(!_0x4a58c0['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x4a58c0['statusText']);return await _0x4a58c0['json']();},async 'importCatalogSkill'(_0x5813cf){const _0x49fd66=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x5813cf})});if(!_0x49fd66['ok']){const _0x4f89d2=await _0x49fd66['json']()['catch'](()=>({'error':_0x49fd66['statusText']})),_0x59f2ef=new Error(_0x4f89d2['error']||_0x4f89d2['message']||_0x49fd66['statusText']);if(_0x4f89d2['detail']!==undefined)_0x59f2ef['detail']=_0x4f89d2['detail'];throw _0x59f2ef;}return await _0x49fd66['json']();},async 'importSkillFromGit'(_0x562261,_0x21fc0d,_0x3b5ca8='main',_0x56577c=null){const _0x1c514f=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x562261,'skillPath':_0x21fc0d,'branch':_0x3b5ca8,'skillId':_0x56577c})});if(!_0x1c514f['ok']){const _0x7e1f06=await _0x1c514f['json']()['catch'](()=>({'error':_0x1c514f['statusText']})),_0x4a1daa=new Error(_0x7e1f06['error']||_0x7e1f06['message']||_0x1c514f['statusText']);if(_0x7e1f06['detail']!==undefined)_0x4a1daa['detail']=_0x7e1f06['detail'];throw _0x4a1daa;}return await _0x1c514f['json']();},async 'probeMarketplace'(_0x3c477c,_0x5d3d14='main'){const _0x14a4b5=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x3c477c,'branch':_0x5d3d14})});if(!_0x14a4b5['ok']){const _0x39a0a2=await _0x14a4b5['json']()['catch'](()=>({'error':_0x14a4b5['statusText']})),_0x451e3a=new Error(_0x39a0a2['error']||_0x39a0a2['message']||_0x14a4b5['statusText']);if(_0x39a0a2['detail']!==undefined)_0x451e3a['detail']=_0x39a0a2['detail'];throw _0x451e3a;}return await _0x14a4b5['json']();},async 'importMarketplaceBundle'(_0x2b404c,_0x578b46,_0x3dd329,_0x173984=null){const _0x57f76d=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2b404c,'branch':_0x578b46,'bundleId':_0x3dd329,'selectedSkills':_0x173984})});if(!_0x57f76d['ok']){const _0x276f33=await _0x57f76d['json']()['catch'](()=>({'error':_0x57f76d['statusText']})),_0x13da96=new Error(_0x276f33['error']||_0x276f33['message']||_0x57f76d['statusText']);if(_0x276f33['detail']!==undefined)_0x13da96['detail']=_0x276f33['detail'];throw _0x13da96;}return await _0x57f76d['json']();},async 'importSkillFromFolder'(_0x3644c1,_0x5a9c4d=null){const _0x3927bd=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3644c1,'skillId':_0x5a9c4d})});if(!_0x3927bd['ok']){const _0x23691a=await _0x3927bd['json']()['catch'](()=>({'error':_0x3927bd['statusText']})),_0x2d491e=new Error(_0x23691a['error']||_0x23691a['message']||_0x3927bd['statusText']);if(_0x23691a['detail']!==undefined)_0x2d491e['detail']=_0x23691a['detail'];throw _0x2d491e;}return await _0x3927bd['json']();},async 'importSkillFromNpm'(_0x7adaf2,_0x2b3054='latest',_0x3d65d4=null,_0x5d3bad=null){const _0x2786fe=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x7adaf2,'version':_0x2b3054,'skillId':_0x3d65d4,'registry':_0x5d3bad})});if(!_0x2786fe['ok']){const _0x3ee74c=await _0x2786fe['json']()['catch'](()=>({'error':_0x2786fe['statusText']})),_0x3a0dc3=new Error(_0x3ee74c['error']||_0x3ee74c['message']||_0x2786fe['statusText']);if(_0x3ee74c['detail']!==undefined)_0x3a0dc3['detail']=_0x3ee74c['detail'];throw _0x3a0dc3;}return await _0x2786fe['json']();},async 'checkSkillUpdates'(_0x260ab4){const _0x1e169e=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x260ab4)+'/check-updates',{'method':'POST'});if(!_0x1e169e['ok']){const _0x30adfd=await _0x1e169e['json']()['catch'](()=>({'error':_0x1e169e['statusText']})),_0x158c51=new Error(_0x30adfd['error']||_0x30adfd['message']||_0x1e169e['statusText']);if(_0x30adfd['detail']!==undefined)_0x158c51['detail']=_0x30adfd['detail'];throw _0x158c51;}return await _0x1e169e['json']();},async 'updateExternalSkill'(_0x290f12){const _0x15adde=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x290f12)+'/update',{'method':'POST'});if(!_0x15adde['ok']){const _0x3f0f96=await _0x15adde['json']()['catch'](()=>({'error':_0x15adde['statusText']})),_0x350d0=new Error(_0x3f0f96['error']||_0x3f0f96['message']||_0x15adde['statusText']);if(_0x3f0f96['detail']!==undefined)_0x350d0['detail']=_0x3f0f96['detail'];throw _0x350d0;}return await _0x15adde['json']();},async 'updateSkillFlags'(_0x196d7c,_0x3c741f){const _0x34f322=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x196d7c)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x3c741f})});if(!_0x34f322['ok']){const _0x46accf=await _0x34f322['json']()['catch'](()=>({'error':_0x34f322['statusText']})),_0x3791ab=new Error(_0x46accf['error']||_0x46accf['message']||_0x34f322['statusText']);if(_0x46accf['detail']!==undefined)_0x3791ab['detail']=_0x46accf['detail'];throw _0x3791ab;}return await _0x34f322['json']();},async 'removeFromImportedRegistry'(_0x3cc825){const _0x5bd941=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cc825)+'/registry',{'method':'DELETE'});if(!_0x5bd941['ok']){const _0x57907a=await _0x5bd941['json']()['catch'](()=>({'error':_0x5bd941['statusText']})),_0x23edde=new Error(_0x57907a['error']||_0x57907a['message']||_0x5bd941['statusText']);if(_0x57907a['detail']!==undefined)_0x23edde['detail']=_0x57907a['detail'];throw _0x23edde;}return await _0x5bd941['json']();},async 'getTeams'(){const _0x23f724=await fetch(API_BASE+'/teams');if(!_0x23f724['ok']){const _0x4dc15e=await _0x23f724['json']()['catch'](()=>({'message':_0x23f724['statusText']}));throw new Error(_0x4dc15e['message']||'Failed\x20to\x20get\x20teams');}return await _0x23f724['json']();},async 'getTeam'(_0x9a67a6){const _0x19e22f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x9a67a6));if(!_0x19e22f['ok']){const _0x2cadfb=await _0x19e22f['json']()['catch'](()=>({'message':_0x19e22f['statusText']}));throw new Error(_0x2cadfb['message']||'Failed\x20to\x20get\x20team');}return await _0x19e22f['json']();},async 'createTeam'(_0xef7fe9){const _0x5c26d2=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xef7fe9)});if(!_0x5c26d2['ok']){const _0x145628=await _0x5c26d2['json']()['catch'](()=>({'message':_0x5c26d2['statusText']}));throw new Error(_0x145628['message']||'Failed\x20to\x20create\x20team');}return await _0x5c26d2['json']();},async 'updateTeam'(_0x2a2beb,_0x190400){const _0x4db1a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2a2beb),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x190400)});if(!_0x4db1a2['ok']){const _0x4c46c7=await _0x4db1a2['json']()['catch'](()=>({'message':_0x4db1a2['statusText']}));throw new Error(_0x4c46c7['message']||'Failed\x20to\x20update\x20team');}return await _0x4db1a2['json']();},async 'deleteTeam'(_0x31bd68){const _0x19da0f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x31bd68),{'method':'DELETE'});if(!_0x19da0f['ok']){const _0x35db8e=await _0x19da0f['json']()['catch'](()=>({'message':_0x19da0f['statusText']}));throw new Error(_0x35db8e['message']||'Failed\x20to\x20delete\x20team');}return await _0x19da0f['json']();},async 'addTeamMember'(_0x68d7d9,_0x4ad51c){const _0x5936a4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x68d7d9)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ad51c})});if(!_0x5936a4['ok']){const _0x124659=await _0x5936a4['json']()['catch'](()=>({'message':_0x5936a4['statusText']}));throw new Error(_0x124659['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x5936a4['json']();},async 'removeTeamMember'(_0x4cc020,_0x50a989){const _0xcf6c25=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cc020)+'/members/'+encodeURIComponent(_0x50a989),{'method':'DELETE'});if(!_0xcf6c25['ok']){const _0x4d1966=await _0xcf6c25['json']()['catch'](()=>({'message':_0xcf6c25['statusText']}));throw new Error(_0x4d1966['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xcf6c25['json']();},async 'getBindings'(_0x814fde={}){const _0x51adff=new URLSearchParams();if(_0x814fde['resource_type'])_0x51adff['set']('resource_type',_0x814fde['resource_type']);if(_0x814fde['resource_id'])_0x51adff['set']('resource_id',_0x814fde['resource_id']);if(_0x814fde['subject_type'])_0x51adff['set']('subject_type',_0x814fde['subject_type']);if(_0x814fde['subject_id'])_0x51adff['set']('subject_id',_0x814fde['subject_id']);const _0x50af96=_0x51adff['toString'](),_0xb98aa1=await fetch(API_BASE+'/bindings'+(_0x50af96?'?'+_0x50af96:''));if(!_0xb98aa1['ok']){const _0x32b073=await _0xb98aa1['json']()['catch'](()=>({'message':_0xb98aa1['statusText']}));throw new Error(_0x32b073['message']||'Failed\x20to\x20get\x20bindings');}return await _0xb98aa1['json']();},async 'createBinding'(_0x2f833d){const _0x16c6b7=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f833d)});if(!_0x16c6b7['ok']){const _0x3279c0=await _0x16c6b7['json']()['catch'](()=>({'message':_0x16c6b7['statusText']}));throw new Error(_0x3279c0['message']||'Failed\x20to\x20create\x20binding');}return await _0x16c6b7['json']();},async 'updateBinding'(_0x4f212d,_0x5ab9d5){const _0x42f537=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4f212d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ab9d5)});if(!_0x42f537['ok']){const _0x539b94=await _0x42f537['json']()['catch'](()=>({'message':_0x42f537['statusText']}));throw new Error(_0x539b94['message']||'Failed\x20to\x20update\x20binding');}return await _0x42f537['json']();},async 'deleteBinding'(_0x128ce6){const _0xf1be6e=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x128ce6),{'method':'DELETE'});if(!_0xf1be6e['ok']){const _0x1630e1=await _0xf1be6e['json']()['catch'](()=>({'message':_0xf1be6e['statusText']}));throw new Error(_0x1630e1['message']||'Failed\x20to\x20delete\x20binding');}return await _0xf1be6e['json']();},async 'getRoleDefinitions'(){const _0x539b5f=await fetch(API_BASE+'/roles');if(!_0x539b5f['ok']){const _0x170bb5=await _0x539b5f['json']()['catch'](()=>({'message':_0x539b5f['statusText']}));throw new Error(_0x170bb5['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x539b5f['json']();},async 'getRoleDefinition'(_0x165787){const _0x4b62ca=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x165787));if(!_0x4b62ca['ok']){const _0x3ccee1=await _0x4b62ca['json']()['catch'](()=>({'message':_0x4b62ca['statusText']}));throw new Error(_0x3ccee1['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4b62ca['json']();},async 'createRoleDefinition'(_0x367654){const _0x15f5cb=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x367654)});if(!_0x15f5cb['ok']){const _0x5018c1=await _0x15f5cb['json']()['catch'](()=>({'message':_0x15f5cb['statusText']}));throw new Error(_0x5018c1['message']||_0x5018c1['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x15f5cb['json']();},async 'updateRoleDefinition'(_0x3bc267,_0x44775a){const _0xca4965=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x3bc267),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44775a)});if(!_0xca4965['ok']){const _0x9fe032=await _0xca4965['json']()['catch'](()=>({'message':_0xca4965['statusText']}));throw new Error(_0x9fe032['message']||_0x9fe032['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0xca4965['json']();},async 'deleteRoleDefinition'(_0x542fb9){const _0x23d669=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x542fb9),{'method':'DELETE'});if(!_0x23d669['ok']){const _0x37153b=await _0x23d669['json']()['catch'](()=>({'message':_0x23d669['statusText']}));throw new Error(_0x37153b['message']||_0x37153b['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x23d669['json']();},async 'getAvailablePermissions'(){const _0x264288=await fetch(API_BASE+'/roles/available-permissions');if(!_0x264288['ok']){const _0x328547=await _0x264288['json']()['catch'](()=>({'message':_0x264288['statusText']}));throw new Error(_0x328547['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x264288['json']();},async 'getGitProviderAllowedTeams'(_0xd60c38){const _0x1f70b0=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xd60c38)+'/allowed-teams');if(!_0x1f70b0['ok']){const _0x174298=await _0x1f70b0['json']()['catch'](()=>({'message':_0x1f70b0['statusText']}));throw new Error(_0x174298['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x1f70b0['json']();},async 'setGitProviderAllowedTeams'(_0x57f2a7,_0x3b4055){const _0x3ee051=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x57f2a7)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3b4055})});if(!_0x3ee051['ok']){const _0x4f90e2=await _0x3ee051['json']()['catch'](()=>({'message':_0x3ee051['statusText']}));throw new Error(_0x4f90e2['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3ee051['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 _0x60455e=toastState['baseBottom'];toastState['toasts']['forEach'](_0x24d9b0=>{_0x24d9b0['el']['style']['bottom']=_0x60455e+'px';const _0x4e734e=_0x24d9b0['el']['offsetHeight']||toastState['defaultHeight'];_0x60455e+=_0x4e734e+toastState['gap'];});});}function removeToastById(_0x3598b6){const _0x343079=toastState['toasts']['findIndex'](_0x43ef48=>_0x43ef48['id']===_0x3598b6);if(_0x343079===-0x1)return;const _0x1dd206=toastState['toasts'][_0x343079];if(_0x1dd206['timeoutId'])clearTimeout(_0x1dd206['timeoutId']);_0x1dd206['el']['classList']['remove']('show'),setTimeout(()=>_0x1dd206['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x343079,0x1),repositionAllToasts();}function registerToast(_0x23e3a2){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x23e3a2),repositionAllToasts(),_0x23e3a2['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(_0x5c7da1){if(_0x5c7da1===null||_0x5c7da1===undefined)return'';return String(_0x5c7da1)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x591b5f,_0x44f3b2){if(_0x591b5f&&typeof _0x591b5f==='object'&&!Array['isArray'](_0x591b5f))return{'code':typeof _0x591b5f['text']==='string'?_0x591b5f['text']:'','language':typeof _0x591b5f['lang']==='string'?_0x591b5f['lang']:''};return{'code':typeof _0x591b5f==='string'?_0x591b5f:'','language':typeof _0x44f3b2==='string'?_0x44f3b2:''};}function buildMermaidBlock(_0x249c92){const _0x369737=String(_0x249c92||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x369737))+'\x22>'+escapeHtmlValue(_0x369737)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x33488b=new marked['Renderer'](),_0x3dcb32=_0x33488b['code']['bind'](_0x33488b);return _0x33488b['code']=function(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d){const {code:_0x905ce4,language:_0x4095a8}=getMarkdownCodeBlockPayload(_0x1ad7fd,_0x5c3c8e),_0x21743c=String(_0x4095a8||'')['trim']()['toLowerCase']();if(_0x21743c==='mermaid')return buildMermaidBlock(_0x905ce4);const _0x5aa106=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x5aa106&&_0x21743c)try{const _0xc9fddf=_0x5aa106['getLanguage'](_0x21743c)?_0x21743c:'plaintext',_0x37ecb1=_0x5aa106['highlight'](_0x905ce4,{'language':_0xc9fddf})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x21743c)+'\x22>'+_0x37ecb1+'</code></pre>';}catch(_0x306f98){console['error']('Syntax\x20highlighting\x20error:',_0x306f98);}return _0x3dcb32(_0x1ad7fd,_0x5c3c8e,..._0x2ef37d);},sharedMarkedRenderer=_0x33488b,_0x33488b;}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 _0x3efc43=window['mermaid'];if(!_0x3efc43||typeof _0x3efc43['initialize']!=='function')return _0x3efc43||null;return _0x3efc43['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x3efc43;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x19bb72,_0x2ed899)=>{const _0x267f54=()=>_0x19bb72(configureMermaidInstance()),_0x5df3c7=()=>{mermaidLoadPromise=null,_0x2ed899(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x118b3f=document['getElementById'](MERMAID_SCRIPT_ID);!_0x118b3f&&(_0x118b3f=document['createElement']('script'),_0x118b3f['id']=MERMAID_SCRIPT_ID,_0x118b3f['src']=MERMAID_SCRIPT_SRC,_0x118b3f['async']=!![],document['head']['appendChild'](_0x118b3f));if(window['mermaid']){_0x267f54();return;}_0x118b3f['addEventListener']('load',_0x267f54,{'once':!![]}),_0x118b3f['addEventListener']('error',_0x5df3c7,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x135afd){const _0x119632=_0x135afd['getAttribute']('data-mermaid-source');if(!_0x119632)return null;let _0x250c00=_0x119632;try{_0x250c00=decodeURIComponent(_0x119632);}catch{}return _0x135afd['textContent']=_0x250c00,_0x135afd['removeAttribute']('data-processed'),_0x135afd['removeAttribute']('aria-roledescription'),_0x135afd['removeAttribute']('role'),_0x135afd['removeAttribute']('aria-label'),_0x250c00;}function collectMermaidNodes(_0x15ede8,_0x60259c){if(!(_0x15ede8 instanceof Element))return;_0x15ede8['matches']('.mermaid[data-mermaid-source]')&&_0x60259c['add'](_0x15ede8),_0x15ede8['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5a6895=>{_0x60259c['add'](_0x5a6895);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x97a52f=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x131cd9=>setTimeout(_0x131cd9,0x0);_0x97a52f(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x96ec71=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x96ec71);});});}function queueMermaidRender(_0x529f6c){const _0x4e28b9=new Set();_0x529f6c instanceof Document||_0x529f6c instanceof DocumentFragment?_0x529f6c['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x51d48b=>_0x4e28b9['add'](_0x51d48b)):collectMermaidNodes(_0x529f6c,_0x4e28b9);if(_0x4e28b9['size']===0x0)return;_0x4e28b9['forEach'](_0xdb9593=>pendingMermaidNodes['add'](_0xdb9593)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x42e500=Array['from'](pendingMermaidNodes)['filter'](_0x4e4b15=>_0x4e4b15['isConnected']);pendingMermaidNodes['clear']();if(_0x42e500['length']===0x0)return;const _0x11de54=await loadMermaid();if(!_0x11de54)return;configureMermaidInstance();const _0xa11c94=getMermaidTheme();for(const _0x4691fe of _0x42e500){const _0xd8bc1b=_0x4691fe['getAttribute']('data-mermaid-source');if(!_0xd8bc1b)continue;const _0x527f33=_0x4691fe['getAttribute']('data-processed')==='true';if(_0x527f33&&_0x4691fe['dataset']['mermaidTheme']===_0xa11c94)continue;restoreMermaidSource(_0x4691fe);try{if(typeof _0x11de54['run']==='function')await _0x11de54['run']({'nodes':[_0x4691fe]});else typeof _0x11de54['init']==='function'&&_0x11de54['init'](undefined,[_0x4691fe]);_0x4691fe['dataset']['mermaidTheme']=_0xa11c94,delete _0x4691fe['dataset']['mermaidError'];}catch(_0x20af6d){console['error']('Mermaid\x20render\x20failed:',_0x20af6d),restoreMermaidSource(_0x4691fe),_0x4691fe['dataset']['mermaidError']='true',delete _0x4691fe['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1dc16b=>{_0x1dc16b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1dc16b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x5b533f=>{_0x5b533f['forEach'](_0x3ca313=>{_0x3ca313['addedNodes']['forEach'](_0x14f6bd=>{_0x14f6bd['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x14f6bd);});});}),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'(_0x112985){const _0x466913=new Date(_0x112985),_0x485c16=new Date(),_0x206e75=_0x485c16-_0x466913,_0x3c0b8c=Math['floor'](_0x206e75/0x3e8),_0x12b79c=Math['floor'](_0x3c0b8c/0x3c),_0xf0a61d=Math['floor'](_0x12b79c/0x3c),_0x5d7dc5=Math['floor'](_0xf0a61d/0x18);if(_0x3c0b8c<0x3c)return'now';if(_0x12b79c<0x3c)return _0x12b79c+'m\x20ago';if(_0xf0a61d<0x18)return _0xf0a61d+'h\x20ago';return _0x5d7dc5+'d\x20ago';},'getStatusIcon'(_0x7dcdc){switch(_0x7dcdc){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x5a7f29){switch(_0x5a7f29){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'(_0x2a625f,_0x554b24=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2a2336={};_0x2a2336['text/plain']=new Blob([_0x2a625f],{'type':'text/plain'});_0x554b24&&(_0x2a2336['text/html']=new Blob([_0x554b24],{'type':'text/html'}));const _0xa586e5=new ClipboardItem(_0x2a2336);return await navigator['clipboard']['write']([_0xa586e5]),!![];}catch(_0x2baa93){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2baa93);}try{const _0x3e8da9=_0x3177e4=>{_0x3177e4['preventDefault'](),_0x3177e4['clipboardData']['setData']('text/plain',_0x2a625f),_0x554b24&&_0x3177e4['clipboardData']['setData']('text/html',_0x554b24);};document['addEventListener']('copy',_0x3e8da9);const _0x3eada7=document['execCommand']('copy');document['removeEventListener']('copy',_0x3e8da9);if(_0x3eada7)return!![];}catch(_0x398cec){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x398cec);}try{const _0x1c18bf=document['createElement']('textarea');_0x1c18bf['value']=_0x2a625f,_0x1c18bf['style']['position']='fixed',_0x1c18bf['style']['opacity']='0',_0x1c18bf['style']['pointerEvents']='none',document['body']['appendChild'](_0x1c18bf),_0x1c18bf['select']();const _0x2c8650=document['execCommand']('copy');return document['body']['removeChild'](_0x1c18bf),_0x2c8650;}catch(_0x4c325b){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4c325b),![];}},'showToast'(_0x37b8b0,_0x16f275='info'){const _0x437d97=getNextToastId(),_0x5d46f7=document['createElement']('div');_0x5d46f7['className']='toast\x20toast-'+_0x16f275,_0x5d46f7['textContent']=_0x37b8b0,_0x5d46f7['dataset']['toastId']=_0x437d97,document['body']['appendChild'](_0x5d46f7);const _0x19f059=_0x16f275==='error'?0x2710:0xbb8,_0x30a536=setTimeout(()=>{removeToastById(_0x437d97);},_0x19f059),_0x2d9fbc={'id':_0x437d97,'el':_0x5d46f7,'timeoutId':_0x30a536};return registerToast(_0x2d9fbc),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5d46f7['classList']['add']('show');});}),_0x437d97;},'showError'(_0x1e44a5){console['error'](_0x1e44a5);const _0x571233=typeof _0x1e44a5==='string'?_0x1e44a5:_0x1e44a5['message']||'An\x20error\x20occurred';this['showToast'](_0x571233,'error');},'showSuccess'(_0x15007b){this['showToast'](_0x15007b,'success');},'capitalize'(_0xf131c1){if(!_0xf131c1)return'';return _0xf131c1['charAt'](0x0)['toUpperCase']()+_0xf131c1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x37d115){return escapeHtmlValue(_0x37d115);},'ansiToHtml'(_0x5afa20){if(_0x5afa20===null||_0x5afa20===undefined)return'';let _0x567e5b=this['escapeHtml'](_0x5afa20);const _0x34c157={'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'},_0x3d60f4={'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 _0x277094=0x0;return _0x567e5b=_0x567e5b['replace'](/\x1b\[([0-9;]*)m/g,(_0x946b3b,_0x42578b)=>{if(!_0x42578b||_0x42578b==='0'){const _0x179bc6='</span>'['repeat'](_0x277094);return _0x277094=0x0,_0x179bc6;}const _0x4d08ee=_0x42578b['split'](';'),_0x43a9a0=[];for(const _0x30c912 of _0x4d08ee){if(_0x30c912==='1')_0x43a9a0['push']('font-weight:bold');else{if(_0x30c912==='2')_0x43a9a0['push']('opacity:0.7');else{if(_0x30c912==='3')_0x43a9a0['push']('font-style:italic');else{if(_0x30c912==='4')_0x43a9a0['push']('text-decoration:underline');else{if(_0x30c912==='9')_0x43a9a0['push']('text-decoration:line-through');else{if(_0x34c157[_0x30c912])_0x43a9a0['push']('color:'+_0x34c157[_0x30c912]);else{if(_0x3d60f4[_0x30c912])_0x43a9a0['push']('background-color:'+_0x3d60f4[_0x30c912]);}}}}}}}if(_0x43a9a0['length']>0x0)return _0x277094++,'<span\x20style=\x22'+_0x43a9a0['join'](';')+'\x22>';return'';}),_0x567e5b+='</span>'['repeat'](_0x277094),_0x567e5b=_0x567e5b['replace'](/\\u001b\[([0-9;]*)m/g,(_0x345384,_0x3f6890)=>{if(!_0x3f6890||_0x3f6890==='0')return'';const _0x584ab3=_0x3f6890['split'](';'),_0x50b2b7=[];for(const _0x1dd7f4 of _0x584ab3){if(_0x1dd7f4==='1')_0x50b2b7['push']('font-weight:bold');else{if(_0x34c157[_0x1dd7f4])_0x50b2b7['push']('color:'+_0x34c157[_0x1dd7f4]);else{if(_0x3d60f4[_0x1dd7f4])_0x50b2b7['push']('background-color:'+_0x3d60f4[_0x1dd7f4]);}}}if(_0x50b2b7['length']>0x0)return'<span\x20style=\x22'+_0x50b2b7['join'](';')+'\x22>';return'';}),_0x567e5b;},'showModal'({title:_0x416e2f,content:_0x2f5ac5,buttons:buttons=[]}){const _0x8173ab='\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'](_0x416e2f)+'</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'+_0x2f5ac5+'\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']((_0x98896e,_0x52bfa0)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x98896e['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x52bfa0+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x98896e['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',_0x3c1c05=document['createElement']('div');_0x3c1c05['id']='utils-modal',_0x3c1c05['className']='modal',_0x3c1c05['innerHTML']=_0x8173ab,document['body']['appendChild'](_0x3c1c05);const _0x73ad6c=document['getElementById']('utils-modal-close');_0x73ad6c&&_0x73ad6c['addEventListener']('click',()=>this['hideModal']());const _0x23182e=_0x3c1c05['querySelectorAll']('[data-btn-index]');_0x23182e['forEach'](_0x5ab40f=>{const _0x26bb2a=parseInt(_0x5ab40f['dataset']['btnIndex']);buttons[_0x26bb2a]?.['onClick']&&_0x5ab40f['addEventListener']('click',buttons[_0x26bb2a]['onClick']);});const _0x1d7568=document['getElementById']('utils-modal-overlay');_0x1d7568&&_0x1d7568['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x57bd6e=document['getElementById']('utils-modal');_0x57bd6e&&_0x57bd6e['remove']();},'parseKeyValuePairs'(_0x4269b5){const _0x2ed03e={};if(!_0x4269b5)return _0x2ed03e;return _0x4269b5['split'](/\r?\n/)['map'](_0x6e0d94=>_0x6e0d94['trim']())['filter'](Boolean)['forEach'](_0x1138ff=>{const _0x5108ea=_0x1138ff['indexOf']('=');if(_0x5108ea>0x0){const _0x1dc5a7=_0x1138ff['slice'](0x0,_0x5108ea)['trim'](),_0x299b52=_0x1138ff['slice'](_0x5108ea+0x1)['trim']();if(_0x1dc5a7)_0x2ed03e[_0x1dc5a7]=_0x299b52;}}),_0x2ed03e;},'debounce'(_0x45e559,_0x99e7db=0xfa){let _0x4b21bb=null;return(..._0xa865fe)=>{clearTimeout(_0x4b21bb),_0x4b21bb=setTimeout(()=>_0x45e559['apply'](this,_0xa865fe),_0x99e7db);};},'formatTimestamp'(_0x16da4e){if(!_0x16da4e)return'N/A';const _0x4a8415=new Date(_0x16da4e);return _0x4a8415['toLocaleDateString']()+'\x20'+_0x4a8415['toLocaleTimeString']();},'getQueryParams'(){const _0x259eb2=new URLSearchParams(window['location']['search']),_0x2b8dcf={};for(const [_0x862d5e,_0xe84f81]of _0x259eb2){_0x2b8dcf[_0x862d5e]=_0xe84f81;}return _0x2b8dcf;},'formatDuration'(_0x401564,_0x483e29){if(!_0x401564)return'N/A';const _0x3443e0=new Date(_0x401564),_0x4aad0e=_0x483e29?new Date(_0x483e29):new Date(),_0x5b5d29=_0x4aad0e-_0x3443e0;if(_0x5b5d29<0x0)return'0s';const _0x41fa56=Math['floor'](_0x5b5d29/0x3e8),_0x42da4f=Math['floor'](_0x41fa56/0x3c),_0x57fe1d=Math['floor'](_0x42da4f/0x3c),_0x113490=Math['floor'](_0x57fe1d/0x18);if(_0x41fa56<0x3c)return _0x41fa56+'s';if(_0x42da4f<0x3c)return _0x42da4f+'m\x20'+_0x41fa56%0x3c+'s';if(_0x57fe1d<0x18)return _0x57fe1d+'h\x20'+_0x42da4f%0x3c+'m\x20'+_0x41fa56%0x3c+'s';return _0x113490+'d\x20'+_0x57fe1d%0x18+'h\x20'+_0x42da4f%0x3c+'m';},'renderMarkdown'(_0x45622a,_0x2c60ae={}){if(!_0x45622a)return'';_0x45622a=this['rewriteAttachmentLinks'](_0x45622a,_0x2c60ae),_0x45622a=this['rewriteColorSyntax'](_0x45622a);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x45622a);}catch(_0x1224b9){return console['error']('Markdown\x20parsing\x20error:',_0x1224b9),this['renderMarkdownFallback'](_0x45622a,_0x2c60ae);}},'rewriteAttachmentLinks'(_0x1b3386,_0x332c17={}){const _0x3aaeba=typeof _0x332c17['resolveAttachmentUrl']==='function'?_0x332c17['resolveAttachmentUrl']:_0x332c17['taskId']?_0x244e2e=>API_BASE+'/tasks/'+_0x332c17['taskId']+'/attachments/'+encodeURIComponent(_0x244e2e):null;if(!_0x3aaeba)return _0x1b3386;return String(_0x1b3386)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x309920,_0x1387f9)=>{const _0x256617=String(_0x1387f9||'')['trim']();if(!_0x256617)return _0x309920;let _0x264df0=_0x256617;try{_0x264df0=decodeURIComponent(_0x256617);}catch{}const _0x4f528e=_0x3aaeba(_0x264df0);if(!_0x4f528e)return _0x309920;return']('+_0x4f528e+')';});},'rewriteColorSyntax'(_0x5c7cdb){if(!_0x5c7cdb)return _0x5c7cdb;return String(_0x5c7cdb)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4e7fcf,_0x563dc0,_0x2b0d69)=>{const _0x8655c8=this['rewriteColorSyntax'](_0x2b0d69);return'<span\x20style=\x22color:\x20'+_0x563dc0+'\x22>'+_0x8655c8+'</span>';});},'renderMarkdownFallback'(_0x41246d,_0x24a360={}){if(!_0x41246d)return'';_0x41246d=_0x41246d['replace'](/\r\n/g,'\x0a'),_0x41246d=_0x41246d['replace'](/\r/g,'\x0a'),_0x41246d=this['rewriteAttachmentLinks'](_0x41246d,_0x24a360);let _0x44af68=this['escapeHtml'](_0x41246d);return _0x44af68=_0x44af68['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x44af68=_0x44af68['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x44af68=_0x44af68['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x44af68=_0x44af68['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x44af68=_0x44af68['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x44af68=_0x44af68['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x44af68=_0x44af68['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x44af68=_0x44af68['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x44af68=_0x44af68['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x44af68=_0x44af68['replace'](/\n\n/g,'</p><p>'),_0x44af68=_0x44af68['replace'](/\n/g,'<br>'),'<p>'+_0x44af68+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3284f6=new Uint8Array(0x10);crypto['getRandomValues'](_0x3284f6),_0x3284f6[0x6]=_0x3284f6[0x6]&0xf|0x40,_0x3284f6[0x8]=_0x3284f6[0x8]&0x3f|0x80;const _0x41fbe5=Array['from'](_0x3284f6,_0x187002=>_0x187002['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x41fbe5['slice'](0x0,0x8)+'-'+_0x41fbe5['slice'](0x8,0xc)+'-'+_0x41fbe5['slice'](0xc,0x10)+'-'+_0x41fbe5['slice'](0x10,0x14)+'-'+_0x41fbe5['slice'](0x14);}};export class CustomSelect{constructor(_0x30b5e2,_0x59e62b={}){this['nativeSelect']=_0x30b5e2,this['options']=_0x59e62b,this['isOpen']=![],this['selectedValue']=_0x30b5e2['value']||'',this['searchable']=_0x59e62b['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x1de5a2=document['createElement']('div');_0x1de5a2['className']='custom-select';const _0x5d5768=document['createElement']('div');_0x5d5768['className']='custom-select-trigger',_0x5d5768['setAttribute']('tabindex','0'),_0x5d5768['setAttribute']('role','button'),_0x5d5768['setAttribute']('aria-haspopup','listbox');const _0x51c77f=document['createElement']('span');_0x51c77f['className']='custom-select-trigger-text';const _0x13b50e=document['createElement']('span');_0x13b50e['className']='custom-select-arrow',_0x13b50e['textContent']='▼',_0x5d5768['appendChild'](_0x51c77f),_0x5d5768['appendChild'](_0x13b50e);const _0x24edea=document['createElement']('div');_0x24edea['className']='custom-select-dropdown',_0x24edea['setAttribute']('role','listbox');if(this['searchable']){const _0x520941=document['createElement']('div');_0x520941['className']='custom-select-search';const _0x45a016=document['createElement']('input');_0x45a016['type']='text',_0x45a016['className']='custom-select-search-input',_0x45a016['placeholder']='Type\x20to\x20search...',_0x45a016['setAttribute']('aria-label','Search\x20options'),_0x45a016['addEventListener']('input',_0x1594b5=>{this['searchQuery']=_0x1594b5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x45a016['addEventListener']('keydown',_0xd82833=>{if(_0xd82833['key']==='Escape')_0xd82833['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0xd82833['key']==='Enter'){_0xd82833['preventDefault'](),_0xd82833['stopPropagation']();const _0x1355ba=_0x24edea['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1355ba){const _0x5d0875=_0x1355ba['getAttribute']('data-value');this['select'](_0x5d0875);}}}}),_0x520941['appendChild'](_0x45a016),_0x24edea['appendChild'](_0x520941),this['searchInput']=_0x45a016;}const _0x567f85=document['createElement']('div');_0x567f85['className']='custom-select-options',_0x24edea['appendChild'](_0x567f85),_0x1de5a2['appendChild'](_0x5d5768),_0x1de5a2['appendChild'](_0x24edea),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x1de5a2,this['nativeSelect']),this['wrapper']=_0x1de5a2,this['trigger']=_0x5d5768,this['triggerText']=_0x51c77f,this['dropdown']=_0x24edea,this['optionsContainer']=_0x567f85,_0x5d5768['addEventListener']('click',()=>this['toggle']()),_0x5d5768['addEventListener']('keydown',_0x3f31eb=>this['handleKeydown'](_0x3f31eb)),document['addEventListener']('click',_0x38cd60=>{!_0x1de5a2['contains'](_0x38cd60['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x5223fc=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x5223fc['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x5c71b4=new MutationObserver(()=>{this['updateDisabledState']();});_0x5c71b4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x19ded8=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x19ded8['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x55205f=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x55205f),this['trigger']['setAttribute']('aria-disabled',_0x55205f?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x55205f?'-1':'0'),_0x55205f&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2942ff=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x1dd185=_0x2942ff['filter'](_0x5a37ca=>!_0x5a37ca['disabled']&&!_0x5a37ca['hidden']);_0x2942ff['forEach']((_0x2f020e,_0x1c839b)=>{const _0x18c7da=document['createElement']('div');_0x18c7da['className']='custom-select-option',_0x18c7da['textContent']=_0x2f020e['textContent'],_0x18c7da['setAttribute']('data-value',_0x2f020e['value']),_0x18c7da['setAttribute']('data-index',_0x1c839b),_0x18c7da['setAttribute']('role','option'),_0x2f020e['disabled']?_0x18c7da['classList']['add']('disabled'):_0x18c7da['addEventListener']('click',()=>this['select'](_0x2f020e['value'])),_0x2f020e['value']===this['selectedValue']&&_0x18c7da['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x18c7da),this['allOptions']['push']({'element':_0x18c7da,'text':_0x2f020e['textContent']['toLowerCase'](),'value':_0x2f020e['value'],'disabled':_0x2f020e['disabled']});});if(this['searchable']&&this['searchInput']){const _0x30dcd4=this['searchInput']['parentElement'];_0x1dd185['length']>0x3?_0x30dcd4['style']['display']='':_0x30dcd4['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2cb20f=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x24922b=>{if(!_0x2cb20f||_0x24922b['disabled'])_0x24922b['element']['style']['display']='';else{const _0x467345=_0x24922b['text']['includes'](_0x2cb20f);_0x24922b['element']['style']['display']=_0x467345?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x55ac77){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x55ac77,this['nativeSelect']['value']=_0x55ac77;const _0x124fcd=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x124fcd),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3217e2=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3217e2&&(this['triggerText']['textContent']=_0x3217e2['textContent'],_0x3217e2['disabled']||_0x3217e2['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3956a6=>{_0x3956a6['getAttribute']('data-value')===this['selectedValue']?_0x3956a6['classList']['add']('selected'):_0x3956a6['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 _0x238f99=window['getComputedStyle'](this['dropdown']);if(_0x238f99['position']==='fixed'){const _0x2cd673=this['trigger']['getBoundingClientRect'](),_0x444062=parseInt(_0x238f99['maxHeight'])||0xc8,_0x2ee5e4=window['innerHeight'],_0x19a90c=_0x2ee5e4-_0x2cd673['bottom'],_0x1f08f9=_0x2cd673['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x1e7f82;_0x19a90c<_0x444062&&_0x1f08f9>_0x19a90c?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x2ee5e4-_0x2cd673['top']+'px',_0x1e7f82=Math['min'](_0x444062,_0x1f08f9-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x2cd673['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x1e7f82=Math['min'](_0x444062,_0x19a90c-0xa),this['dropdown']['style']['maxHeight']=_0x1e7f82+'px');if(this['optionsContainer']){let _0x392df3=_0x1e7f82;if(this['searchInput']){const _0x551d4f=this['searchInput']['parentElement'];_0x551d4f&&(_0x392df3-=_0x551d4f['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x392df3)+'px';}this['dropdown']['style']['left']=_0x2cd673['left']+'px',this['dropdown']['style']['width']=_0x2cd673['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xc89154=this['searchInput']['parentElement'];_0xc89154&&_0xc89154['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'](_0x198b26){if(this['nativeSelect']['disabled'])return;if(_0x198b26['key']==='Enter'||_0x198b26['key']==='\x20')_0x198b26['preventDefault'](),this['toggle']();else _0x198b26['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1d6183='\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',_0x1d6183),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4d30aa=document['getElementById']('confirm-dialog-close'),_0x363e66=document['getElementById']('confirm-dialog-cancel'),_0x10b668=document['getElementById']('confirm-dialog-confirm'),_0x16c3bb=this['_modal']['querySelector']('.modal-overlay');_0x4d30aa['addEventListener']('click',()=>this['_resolve'](![])),_0x363e66['addEventListener']('click',()=>this['_resolve'](![])),_0x10b668['addEventListener']('click',()=>this['_resolve'](!![])),_0x16c3bb['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x4065b1=>{if(_0x4065b1['key']==='Escape')_0x4065b1['preventDefault'](),this['_resolve'](![]);else _0x4065b1['key']==='Enter'&&(_0x4065b1['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x538117,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x2704be=>{this['_resolvePromise']=_0x2704be,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x538117;const _0x4b82c5=document['getElementById']('confirm-dialog-cancel'),_0x1460c2=document['getElementById']('confirm-dialog-confirm');_0x4b82c5['textContent']=cancelText,_0x1460c2['textContent']=confirmText,_0x1460c2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x1460c2['focus']();});},'_resolve'(_0x151f7f){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x151f7f),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3d777a,_0x484a09={}){this['container']=_0x3d777a,this['options']={'placeholder':_0x484a09['placeholder']||'Type\x20to\x20search...','maxItems':_0x484a09['maxItems']||0x64,'loadItems':_0x484a09['loadItems']||(async()=>[]),'renderItem':_0x484a09['renderItem']||(_0x239bca=>({'primary':String(_0x239bca),'secondary':''})),'onSelect':_0x484a09['onSelect']||(()=>{}),'filterItems':_0x484a09['filterItems']||null,'getItemValue':_0x484a09['getItemValue']||(_0x41f9a1=>_0x41f9a1),'sortItems':_0x484a09['sortItems']||null,'debounceMs':_0x484a09['debounceMs']||0xc8,'minCharsForSearch':_0x484a09['minCharsForSearch']||0x0,'emptyMessage':_0x484a09['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x484a09['loadingMessage']||'Loading...','preload':_0x484a09['preload']!==![],'searchMode':_0x484a09['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',_0x58e735=>this['onBlur'](_0x58e735)),this['input']['addEventListener']('input',_0x2d7826=>this['onInput'](_0x2d7826)),this['input']['addEventListener']('keydown',_0x484370=>this['onKeydown'](_0x484370)),this['clearBtn']['addEventListener']('mousedown',_0x298f51=>{_0x298f51['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x5a6c59=>{_0x5a6c59['preventDefault']();}),document['addEventListener']('click',_0x45960a=>{!this['wrapper']['contains'](_0x45960a['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(_0x26c9af){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x26c9af);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x215ff3){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x22843e){const _0x573a10=_0x22843e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x573a10);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x573a10):this['loadAndShow'](_0x573a10);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x2139e2){switch(_0x2139e2['key']){case'ArrowDown':_0x2139e2['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x2139e2['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x2139e2['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x2139e2['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x16836c){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2dcd99=this['selectedIndex']+_0x16836c;if(_0x2dcd99>=0x0&&_0x2dcd99<this['filteredItems']['length']){this['selectedIndex']=_0x2dcd99,this['updateSelectionHighlight']();const _0x59f91b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x59f91b[this['selectedIndex']]&&_0x59f91b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x5306a4=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5306a4['forEach']((_0x155c2f,_0x413f20)=>{_0x155c2f['classList']['toggle']('keyboard-selected',_0x413f20===this['selectedIndex']);});}async['loadAndShow'](_0x409a2e){this['showLoading']();try{const _0x13f5f3=await this['options']['loadItems'](_0x409a2e);if(this['options']['searchMode']==='server'){let _0x24d045=_0x13f5f3;this['options']['sortItems']&&(_0x24d045=this['options']['sortItems']([..._0x13f5f3]));this['filteredItems']=_0x24d045;const _0x4603e9=this['filteredItems']['length']>=this['options']['maxItems'];_0x4603e9&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4603e9),this['open']();}else this['allItems']=_0x13f5f3,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x409a2e);}catch(_0x543fb1){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x543fb1),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x303485){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x303485):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x351ed3=this['filteredItems']['length']>=this['options']['maxItems'];_0x351ed3&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x351ed3),this['open']();}['renderItems'](_0x2e7924){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']((_0x7ceb21,_0x52c720)=>{const _0x174a1b=document['createElement']('div');_0x174a1b['className']='autocomplete-select-item',_0x174a1b['setAttribute']('role','option'),_0x174a1b['setAttribute']('data-index',_0x52c720);const _0xe6f12=this['options']['renderItem'](_0x7ceb21);let _0x49c079='';_0xe6f12['icon']&&(_0x49c079='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0xe6f12['iconClass']||'')+'\x22>'+_0xe6f12['icon']+'</span>'),_0x174a1b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x49c079+'\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'](_0xe6f12['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xe6f12['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0xe6f12['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x174a1b['addEventListener']('click',()=>{this['selectItem'](_0x7ceb21);}),_0x174a1b['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x52c720,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x174a1b);}),_0x2e7924?(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'](_0x205f31){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x205f31)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x37979f){this['selectedItem']=_0x37979f;const _0x1395ac=this['options']['renderItem'](_0x37979f);this['input']['value']=_0x1395ac['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x37979f);}['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'](_0x1ec4d8){if(_0x1ec4d8){this['selectedItem']=_0x1ec4d8;const _0x3d0bfd=this['options']['renderItem'](_0x1ec4d8);this['input']['value']=_0x3d0bfd['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x9fb1c){this['allItems']=_0x9fb1c,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'](_0x498c2d){this['input']['placeholder']=_0x498c2d;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x518054=null){const _0x3a813b=document['getElementById']('admin-menu-container'),_0x52af0c=document['getElementById']('admin-menu-btn'),_0xbfa5ca=document['getElementById']('admin-menu');if(!_0x3a813b||!_0x52af0c||!_0xbfa5ca)return;try{!_0x518054&&(_0x518054=await API['getCurrentUser']());if(_0x518054){const _0x35aa42=window['Permissions'],_0x3cf8b1=_0x35aa42['hasServerPermission'](_0x518054,'*')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:manage')||_0x35aa42['hasServerPermission'](_0x518054,'users:create')||_0x35aa42['hasTeamPermission'](_0x518054,'teams:manage')||_0x35aa42['hasEnvPermission'](_0x518054,'environments:view_details');if(!_0x3cf8b1)return;_0x3a813b['hidden']=![];if(!_0x35aa42['hasServerPermission'](_0x518054,'*')){const _0x537a7a=_0xbfa5ca['querySelectorAll']('.admin-menu-item');_0x537a7a['forEach'](_0x48479e=>{const _0x3dce0e=_0x48479e['querySelector']('.option-text')?.['textContent']?.['trim']();_0x3dce0e==='Users'&&!_0x35aa42['hasServerPermission'](_0x518054,'users:create')&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Skills'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Settings'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Server\x20Administration'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Git\x20History'&&(_0x48479e['hidden']=!![]),_0x3dce0e==='Roles'&&(_0x48479e['hidden']=!![]);});}_0x52af0c['addEventListener']('click',_0x4a8cde=>{_0x4a8cde['stopPropagation']();const _0x47ab42=document['getElementById']('actions-menu');if(_0x47ab42)_0x47ab42['hidden']=!![];_0xbfa5ca['hidden']=!_0xbfa5ca['hidden'];}),document['addEventListener']('click',_0x366609=>{!_0xbfa5ca['hidden']&&!_0x52af0c['contains'](_0x366609['target'])&&!_0xbfa5ca['contains'](_0x366609['target'])&&(_0xbfa5ca['hidden']=!![]);}),document['addEventListener']('keydown',_0x274f19=>{_0x274f19['key']==='Escape'&&!_0xbfa5ca['hidden']&&(_0xbfa5ca['hidden']=!![]);});}}catch(_0x1aa6bc){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x1aa6bc['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 _0x2e6ec1=window['location']['pathname'],_0x172a8a=_0x2e6ec1['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x172a8a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x172a8a[0x1]),_0x172a8a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x50e1cd={}){const _0x11cfc=new URLSearchParams();_0x50e1cd['userId']&&_0x11cfc['set']('userId',String(_0x50e1cd['userId']));_0x50e1cd['automation']&&_0x11cfc['set']('automation',String(_0x50e1cd['automation']));const _0xdfe427=API_BASE+'/tasks/stats'+(_0x11cfc['toString']()?'?'+_0x11cfc['toString']():''),_0x196351=await fetch(_0xdfe427);if(!_0x196351['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x196351['statusText']);return await _0x196351['json']();},async 'getTasks'(_0x316732={}){const _0x3a7059=new URLSearchParams();_0x316732['status']&&_0x3a7059['set']('status',String(_0x316732['status']));_0x316732['environment']&&_0x3a7059['set']('environment',String(_0x316732['environment']));_0x316732['automation']&&_0x3a7059['set']('automation',String(_0x316732['automation']));if(_0x316732['include']){const _0x4d1df6=Array['isArray'](_0x316732['include'])?_0x316732['include']['join'](','):String(_0x316732['include']);_0x4d1df6&&_0x3a7059['set']('include',_0x4d1df6);}_0x316732['filter']&&_0x3a7059['set']('filter',String(_0x316732['filter']));_0x316732['page']&&_0x3a7059['set']('page',String(_0x316732['page']));_0x316732['limit']&&_0x3a7059['set']('limit',String(_0x316732['limit']));_0x316732['userId']&&_0x3a7059['set']('userId',String(_0x316732['userId']));_0x316732['search']&&_0x3a7059['set']('search',String(_0x316732['search']));_0x316732['includeChildTasks']&&_0x3a7059['set']('includeChildTasks','true');const _0x2a2a8e=API_BASE+'/tasks'+(_0x3a7059['toString']()?'?'+_0x3a7059['toString']():''),_0x57e5a8=await fetch(_0x2a2a8e);if(!_0x57e5a8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x57e5a8['statusText']);return await _0x57e5a8['json']();},async 'getAutomations'(_0x1763a2={}){const _0x5e6c83=new URLSearchParams();_0x1763a2['environment']&&_0x5e6c83['set']('environment',String(_0x1763a2['environment']));const _0x4c3c77=await fetch(API_BASE+'/api/automations'+(_0x5e6c83['toString']()?'?'+_0x5e6c83['toString']():''));if(!_0x4c3c77['ok']){const _0xb67ff=await _0x4c3c77['json']()['catch'](()=>({}));throw new Error(_0xb67ff['message']||_0xb67ff['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4c3c77['statusText']);}return await _0x4c3c77['json']();},async 'getAutomation'(_0x1f2d9b){const _0x539788=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1f2d9b));if(!_0x539788['ok']){const _0x46b8a7=await _0x539788['json']()['catch'](()=>({}));throw new Error(_0x46b8a7['message']||_0x46b8a7['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x539788['statusText']);}return await _0x539788['json']();},async 'createAutomation'(_0x4bb77f){const _0x510eba=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4bb77f||{})});if(!_0x510eba['ok']){const _0x2476a1=await _0x510eba['json']()['catch'](()=>({}));throw new Error(_0x2476a1['message']||_0x2476a1['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x510eba['statusText']);}return await _0x510eba['json']();},async 'updateAutomation'(_0x247fc3,_0x95ef9d){const _0x270d2c=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x247fc3),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x95ef9d||{})});if(!_0x270d2c['ok']){const _0x1e8a4a=await _0x270d2c['json']()['catch'](()=>({}));throw new Error(_0x1e8a4a['message']||_0x1e8a4a['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x270d2c['statusText']);}return await _0x270d2c['json']();},async 'deleteAutomation'(_0x4a5ca9){const _0x12c180=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4a5ca9),{'method':'DELETE'});if(!_0x12c180['ok']){const _0x465beb=await _0x12c180['json']()['catch'](()=>({}));throw new Error(_0x465beb['message']||_0x465beb['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x12c180['statusText']);}return await _0x12c180['json']();},async 'triggerAutomation'(_0x306bd4){const _0x58eeba=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x306bd4)+'/trigger',{'method':'POST'});if(!_0x58eeba['ok']){const _0x2106de=await _0x58eeba['json']()['catch'](()=>({}));throw new Error(_0x2106de['message']||_0x2106de['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x58eeba['statusText']);}return await _0x58eeba['json']();},async 'setAutomationEnabled'(_0x5e00a0,_0x88eb9e){const _0x47d8bb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5e00a0)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x88eb9e})});if(!_0x47d8bb['ok']){const _0x1d4a3e=await _0x47d8bb['json']()['catch'](()=>({}));throw new Error(_0x1d4a3e['message']||_0x1d4a3e['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x47d8bb['statusText']);}return await _0x47d8bb['json']();},async 'getAutomationHistory'(_0x3c13c5,_0x7266b2=0x32){const _0x4c8743=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3c13c5)+'/history?limit='+encodeURIComponent(String(_0x7266b2)));if(!_0x4c8743['ok']){const _0x9697a9=await _0x4c8743['json']()['catch'](()=>({}));throw new Error(_0x9697a9['message']||_0x9697a9['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x4c8743['statusText']);}return await _0x4c8743['json']();},async 'getTask'(_0x23da9e,_0x3216ff={}){const _0xb0193=new URLSearchParams();if(_0x3216ff['include']){const _0x597368=Array['isArray'](_0x3216ff['include'])?_0x3216ff['include']['join'](','):String(_0x3216ff['include']);if(_0x597368)_0xb0193['set']('include',_0x597368);}const _0x393d4a=await fetch(API_BASE+'/tasks/'+_0x23da9e+(_0xb0193['toString']()?'?'+_0xb0193['toString']():''));if(!_0x393d4a['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x393d4a['statusText']);return await _0x393d4a['json']();},async 'getTaskResults'(_0x15622b){const _0xc3c61d=await fetch(API_BASE+'/tasks/'+_0x15622b+'/results');if(!_0xc3c61d['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0xc3c61d['statusText']);return await _0xc3c61d['json']();},async 'getTaskPatches'(_0x2572cd){const _0x480650=await fetch(API_BASE+'/tasks/'+_0x2572cd+'/patches');if(!_0x480650['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x480650['statusText']);return await _0x480650['json']();},async 'getTaskAttachments'(_0x3b42f3){const _0x51b3ce=await fetch(API_BASE+'/tasks/'+_0x3b42f3+'/attachments');if(!_0x51b3ce['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x51b3ce['statusText']);return await _0x51b3ce['json']();},async 'uploadAttachments'(_0x32522b,_0x51574c){const _0x19a643=new FormData();for(const _0x4e10e4 of _0x51574c){_0x19a643['append']('attachments',_0x4e10e4);}const _0x388b29=await fetch(API_BASE+'/tasks/'+_0x32522b+'/attachments',{'method':'POST','body':_0x19a643});if(!_0x388b29['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x388b29['statusText']);return await _0x388b29['json']();},async 'isAINameGenerationAvailable'(){try{const _0x590123=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x590123['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x590123['json']();}catch(_0x406a73){return{'available':![],'reason':_0x406a73['message']};}},async 'generateTaskName'(_0xb26931){try{const _0x4d930d=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0xb26931})});return await _0x4d930d['json']();}catch(_0x298f8f){return{'success':![],'error':_0x298f8f['message']};}},async 'createTask'(_0x1a636c){let _0x501acb,_0x42f7c0={};if(_0x1a636c['files']&&_0x1a636c['files']['length']>0x0){const _0x3e7344=new FormData();for(const [_0xcc6308,_0x576139]of Object['entries'](_0x1a636c)){if(_0xcc6308!=='files'){if(_0x576139==null)continue;typeof _0x576139==='object'?_0x3e7344['append'](_0xcc6308,JSON['stringify'](_0x576139)):_0x3e7344['append'](_0xcc6308,String(_0x576139));}}for(const _0x423f3c of _0x1a636c['files']){_0x3e7344['append']('attachments',_0x423f3c);}_0x501acb=_0x3e7344;}else _0x42f7c0['Content-Type']='application/json',_0x501acb=JSON['stringify'](_0x1a636c);const _0x24f6e3=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x42f7c0,'body':_0x501acb});if(!_0x24f6e3['ok']){const _0x46c91e=await _0x24f6e3['json'](),_0x375555=new Error(_0x46c91e['error']||'Failed\x20to\x20create\x20task:\x20'+_0x24f6e3['statusText']),{message:_0x5f0df7,..._0x126e62}=_0x46c91e;Object['assign'](_0x375555,_0x126e62);throw _0x375555;}return await _0x24f6e3['json']();},async 'createTestTask'(_0x4417fa){const _0x16bf06=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4417fa)});if(!_0x16bf06['ok']){const _0x28524e=await _0x16bf06['json']();throw new Error(_0x28524e['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x16bf06['statusText']);}return await _0x16bf06['json']();},async 'createEphemeralTest'(_0x5462fc){const _0x5c5c9d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5462fc)});if(!_0x5c5c9d['ok']){const _0x33fe55=await _0x5c5c9d['json']();throw new Error(_0x33fe55['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5c5c9d['statusText']);}return await _0x5c5c9d['json']();},async 'createDeployTask'(_0x58432f){const _0x2de682=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x58432f)});if(!_0x2de682['ok']){const _0x11ef7a=await _0x2de682['json']();throw new Error(_0x11ef7a['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2de682['statusText']);}return await _0x2de682['json']();},async 'getEnvironments'(){const _0x4c6a24=await fetch(API_BASE+'/environments');if(!_0x4c6a24['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4c6a24['statusText']);return await _0x4c6a24['json']();},async 'getEnvironment'(_0x5afe84){const _0x17f500=await fetch(API_BASE+'/environments/'+_0x5afe84);if(!_0x17f500['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x17f500['statusText']);return await _0x17f500['json']();},async 'getEnvironmentRepoHistory'(_0x4d18dd,_0x502064,_0x2264aa={}){if(!_0x4d18dd||!_0x502064)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x558c3e=new URLSearchParams();if(_0x2264aa['limit'])_0x558c3e['set']('limit',String(_0x2264aa['limit']));if(_0x2264aa['offset'])_0x558c3e['set']('offset',String(_0x2264aa['offset']));if(_0x2264aa['search'])_0x558c3e['set']('search',String(_0x2264aa['search']));if(_0x2264aa['branch'])_0x558c3e['set']('branch',String(_0x2264aa['branch']));const _0x4204ac=API_BASE+'/environments/'+encodeURIComponent(_0x4d18dd)+'/repos/'+encodeURIComponent(_0x502064)+'/git/history',_0x227091=await fetch(''+_0x4204ac+(_0x558c3e['toString']()?'?'+_0x558c3e['toString']():''));if(!_0x227091['ok']){const _0x266300=await _0x227091['json']()['catch'](()=>({}));throw new Error(_0x266300['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x227091['statusText']);}return await _0x227091['json']();},async 'getEnvironmentRepoCommit'(_0x11b1df,_0x232756,_0x4ae846){if(!_0x11b1df||!_0x232756||!_0x4ae846)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x369954=API_BASE+'/environments/'+encodeURIComponent(_0x11b1df)+'/repos/'+encodeURIComponent(_0x232756)+'/git/commits/'+encodeURIComponent(_0x4ae846),_0x22e103=await fetch(_0x369954);if(!_0x22e103['ok']){const _0x356125=await _0x22e103['json']()['catch'](()=>({}));throw new Error(_0x356125['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x22e103['statusText']);}return await _0x22e103['json']();},async 'getEnvironmentRepoBranches'(_0x22c5ec,_0x112f11){if(!_0x22c5ec||!_0x112f11)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x701e38=API_BASE+'/environments/'+encodeURIComponent(_0x22c5ec)+'/repos/'+encodeURIComponent(_0x112f11)+'/git/branches',_0x4cab8a=await fetch(_0x701e38);if(!_0x4cab8a['ok']){const _0x38cfbe=await _0x4cab8a['json']()['catch'](()=>({}));throw new Error(_0x38cfbe['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x4cab8a['statusText']);}return await _0x4cab8a['json']();},async 'revertEnvironmentRepoCommit'(_0xa80eaf,_0x361169,_0x29e481,_0x226c31={}){if(!_0xa80eaf||!_0x361169||!_0x29e481)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x12cca6=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0xa80eaf)+'/repos/'+encodeURIComponent(_0x361169)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x29e481,..._0x226c31})});if(!_0x12cca6['ok']){const _0x6b4790=await _0x12cca6['json']()['catch'](()=>({}));throw new Error(_0x6b4790['message']||_0x6b4790['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x12cca6['statusText']);}return await _0x12cca6['json']();},async 'getTemplates'(_0x5357ff={}){const _0x1d5e36=new URLSearchParams();if(_0x5357ff['include']){const _0x563207=Array['isArray'](_0x5357ff['include'])?_0x5357ff['include']['join'](','):String(_0x5357ff['include']);if(_0x563207)_0x1d5e36['set']('include',_0x563207);}const _0x37e2af=await fetch(API_BASE+'/templates'+(_0x1d5e36['toString']()?'?'+_0x1d5e36['toString']():''));if(!_0x37e2af['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x37e2af['statusText']);return await _0x37e2af['json']();},async 'getTemplatesForEnvironment'(_0x5ebe5d,_0x1133b0={}){if(!_0x5ebe5d)throw new Error('Environment\x20name\x20is\x20required');const _0x56fd5d=new URLSearchParams();if(_0x1133b0['include']){const _0xd85549=Array['isArray'](_0x1133b0['include'])?_0x1133b0['include']['join'](','):String(_0x1133b0['include']);if(_0xd85549)_0x56fd5d['set']('include',_0xd85549);}const _0x56b19c=await fetch(API_BASE+'/templates/'+_0x5ebe5d+(_0x56fd5d['toString']()?'?'+_0x56fd5d['toString']():''));if(!_0x56b19c['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x5ebe5d+':\x20'+_0x56b19c['statusText']);return await _0x56b19c['json']();},async 'getTemplate'(_0x22c462,_0x8007eb,_0x3a0ea4={}){if(!_0x22c462||!_0x8007eb)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x2f3a35=new URLSearchParams();if(_0x3a0ea4['include']){const _0x21edab=Array['isArray'](_0x3a0ea4['include'])?_0x3a0ea4['include']['join'](','):String(_0x3a0ea4['include']);if(_0x21edab)_0x2f3a35['set']('include',_0x21edab);}const _0x4ca9a4=await fetch(API_BASE+'/templates/'+_0x22c462+'/'+_0x8007eb+(_0x2f3a35['toString']()?'?'+_0x2f3a35['toString']():''));if(!_0x4ca9a4['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x4ca9a4['statusText']);return await _0x4ca9a4['json']();},async 'getTaskLogs'(_0x58a15d,_0x1ba508={}){if(!_0x58a15d)throw new Error('Task\x20ID\x20is\x20required');const _0x4274c9=new URLSearchParams();_0x1ba508['tail']&&_0x4274c9['set']('tail',String(_0x1ba508['tail']));const _0x42d4d6=await fetch(API_BASE+'/tasks/'+_0x58a15d+'/logs'+(_0x4274c9['toString']()?'?'+_0x4274c9['toString']():''));if(!_0x42d4d6['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x42d4d6['statusText']);return await _0x42d4d6['text']();},async 'getContainers'(){const _0x2d2c14=await fetch(API_BASE+'/containers');if(!_0x2d2c14['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2d2c14['statusText']);return await _0x2d2c14['json']();},async 'getContainer'(_0xb40306){const _0x33a972=await fetch(API_BASE+'/containers/'+_0xb40306);if(!_0x33a972['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33a972['statusText']);return await _0x33a972['json']();},async 'startInteractiveContainer'(_0x5f08e8){const _0x4df029=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5f08e8)});if(!_0x4df029['ok']){const _0x4eab07=await _0x4df029['json']()['catch'](()=>({}));throw new Error(_0x4eab07['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4df029['statusText']);}return await _0x4df029['json']();},async 'startContainerCodeServer'(_0xf127ae,_0x1b0dd0={}){if(!_0xf127ae)throw new Error('Container\x20ID\x20is\x20required');const _0x17f304=new URLSearchParams();_0x1b0dd0['theme']&&_0x17f304['set']('theme',_0x1b0dd0['theme']);const _0x5a927d=await fetch(API_BASE+'/containers/'+_0xf127ae+'/code-server'+(_0x17f304['toString']()?'?'+_0x17f304['toString']():'')),_0x20342b=await _0x5a927d['json']()['catch'](()=>({}));if(!_0x5a927d['ok'])throw new Error(_0x20342b['message']||_0x20342b['error']||'Failed\x20to\x20start\x20VS\x20Code:\x20'+_0x5a927d['statusText']);return _0x20342b;},async 'stopContainer'(_0x3e4b97){const _0x316f23=await fetch(API_BASE+'/containers/'+_0x3e4b97,{'method':'DELETE'});if(!_0x316f23['ok']){const _0x130a21=await _0x316f23['json']()['catch'](()=>({}));throw new Error(_0x130a21['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x316f23['statusText']);}return await _0x316f23['json']();},async 'stopTask'(_0x2fba6a){if(!_0x2fba6a)throw new Error('Task\x20ID\x20is\x20required');const _0x445cc8=await fetch(API_BASE+'/tasks/'+_0x2fba6a+'/stop',{'method':'POST'});if(!_0x445cc8['ok']){const _0x59a58c=await _0x445cc8['json']()['catch'](()=>({}));throw new Error(_0x59a58c['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x445cc8['statusText']);}return await _0x445cc8['json']();},async 'interruptTask'(_0xde2e7e){if(!_0xde2e7e)throw new Error('Task\x20ID\x20is\x20required');const _0x1a7225=await fetch(API_BASE+'/tasks/'+_0xde2e7e+'/interrupt',{'method':'POST'});if(!_0x1a7225['ok']){const _0x2a3e3b=await _0x1a7225['json']()['catch'](()=>({}));throw new Error(_0x2a3e3b['error']||_0x2a3e3b['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x1a7225['statusText']);}return await _0x1a7225['json']();},async 'startTask'(_0x157ef9){if(!_0x157ef9)throw new Error('Task\x20ID\x20is\x20required');const _0xafb763=await fetch(API_BASE+'/tasks/'+_0x157ef9+'/start',{'method':'POST'});if(!_0xafb763['ok']){const _0x331109=await _0xafb763['json']()['catch'](()=>({}));throw new Error(_0x331109['error']||'Failed\x20to\x20start\x20task:\x20'+_0xafb763['statusText']);}return await _0xafb763['json']();},async 'deleteTask'(_0x3aa16d){if(!_0x3aa16d)throw new Error('Task\x20ID\x20is\x20required');const _0x59ccdd=await fetch(API_BASE+'/tasks/'+_0x3aa16d,{'method':'DELETE'});if(!_0x59ccdd['ok']){const _0x5daf74=await _0x59ccdd['json']()['catch'](()=>({}));throw new Error(_0x5daf74['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x59ccdd['statusText']);}return await _0x59ccdd['json']();},async 'refreshTasksFromDisk'(){const _0x55d062=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x55d062['ok']){const _0x1c7faf=await _0x55d062['json']()['catch'](()=>({}));throw new Error(_0x1c7faf['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x55d062['statusText']);}return await _0x55d062['json']();},async 'approveTask'(_0x24152d,_0xbd135d={}){if(!_0x24152d)throw new Error('Task\x20ID\x20is\x20required');const _0x47550b={'commit_message':_0xbd135d['commit_message']||'','pull':_0xbd135d['pull']??![],'push':_0xbd135d['push']??![]};_0xbd135d['new_branch']&&(_0x47550b['new_branch']=_0xbd135d['new_branch']);const _0x56398d=await fetch(API_BASE+'/tasks/'+_0x24152d+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x47550b)});if(!_0x56398d['ok']){const _0xd551a6=await _0x56398d['json']()['catch'](()=>({}));let _0x534789=_0xd551a6['error']||_0xd551a6['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x56398d['statusText'];if(_0xd551a6['results']&&Array['isArray'](_0xd551a6['results'])){const _0x451f84=_0xd551a6['results']['filter'](_0x455666=>!_0x455666['success']&&_0x455666['error']);_0x451f84['length']>0x0&&(_0x534789=_0x451f84[0x0]['error']);}throw new Error(_0x534789);}return await _0x56398d['json']();},async 'getPullRequestInfo'(_0xfb7591){if(!_0xfb7591)throw new Error('Task\x20ID\x20is\x20required');const _0x446773=await fetch(API_BASE+'/tasks/'+_0xfb7591+'/pull-request-info');if(!_0x446773['ok']){const _0xbdadc7=await _0x446773['json']()['catch'](()=>({}));throw new Error(_0xbdadc7['error']||_0xbdadc7['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x446773['statusText']);}return await _0x446773['json']();},async 'createPullRequests'(_0x2ba445,_0x24a5b9){if(!_0x2ba445)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24a5b9||!Array['isArray'](_0x24a5b9))throw new Error('repos\x20array\x20is\x20required');const _0x2e644c=await fetch(API_BASE+'/tasks/'+_0x2ba445+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x24a5b9})});if(!_0x2e644c['ok']){const _0xc05cbe=await _0x2e644c['json']()['catch'](()=>({}));let _0x3692a6=_0xc05cbe['error']||_0xc05cbe['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x2e644c['statusText'];if(_0xc05cbe['results']&&Array['isArray'](_0xc05cbe['results'])){const _0x56b3bf=_0xc05cbe['results']['filter'](_0x15e097=>!_0x15e097['success']&&_0x15e097['error']);_0x56b3bf['length']>0x0&&(_0x3692a6=_0x56b3bf[0x0]['error']);}throw new Error(_0x3692a6);}return await _0x2e644c['json']();},async 'syncRepos'(_0x29d24e){if(!_0x29d24e)throw new Error('Task\x20ID\x20is\x20required');const _0x2d63b3=await fetch(API_BASE+'/tasks/'+_0x29d24e+'/sync-repos',{'method':'POST'});if(!_0x2d63b3['ok']){const _0x2e1839=await _0x2d63b3['json']()['catch'](()=>({}));throw new Error(_0x2e1839['error']||_0x2e1839['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x2d63b3['statusText']);}return await _0x2d63b3['json']();},async 'getIbmiSyncInfo'(_0x4fb28b){if(!_0x4fb28b)throw new Error('Task\x20ID\x20is\x20required');const _0x576609=await fetch(API_BASE+'/tasks/'+_0x4fb28b+'/ibmi-sync-info');if(!_0x576609['ok']){const _0x43196d=await _0x576609['json']()['catch'](()=>({}));throw new Error(_0x43196d['error']||_0x43196d['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x576609['json']();},async 'getSyncFiles'(_0x243714){if(!_0x243714)throw new Error('Task\x20ID\x20is\x20required');const _0x517293=await fetch(API_BASE+'/tasks/'+_0x243714+'/sync-to-ibmi/files');if(!_0x517293['ok']){const _0x991183=await _0x517293['json']()['catch'](()=>({}));throw new Error(_0x991183['error']||_0x991183['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x517293['json']();},async 'syncToIbmi'(_0x20ba9e,_0x4366f9,_0x37bc34=null,_0x27bdd1=null,_0x308ca8=null){if(!_0x20ba9e)throw new Error('Task\x20ID\x20is\x20required');const _0x493c6f={'library':_0x4366f9};if(_0x37bc34)_0x493c6f['user']=_0x37bc34;if(_0x27bdd1)_0x493c6f['password']=_0x27bdd1;if(_0x308ca8)_0x493c6f['files']=_0x308ca8;const _0x340486=await fetch(API_BASE+'/tasks/'+_0x20ba9e+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x493c6f)});if(!_0x340486['ok']){const _0x370bfe=await _0x340486['json']()['catch'](()=>({}));throw new Error(_0x370bfe['error']||_0x370bfe['message']||'Sync\x20failed');}return await _0x340486['json']();},async 'getIbmiSyncLog'(_0x587e2b){if(!_0x587e2b)throw new Error('Task\x20ID\x20is\x20required');const _0x3496ce=await fetch(API_BASE+'/tasks/'+_0x587e2b+'/ibmi-sync-log');if(!_0x3496ce['ok']){const _0x21f540=await _0x3496ce['json']()['catch'](()=>({}));throw new Error(_0x21f540['error']||_0x21f540['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3496ce['json']();},async 'pullChanges'(_0xdf83c3){if(!_0xdf83c3)throw new Error('Task\x20ID\x20is\x20required');const _0x2ad279=await fetch(API_BASE+'/tasks/'+_0xdf83c3+'/pull-changes',{'method':'POST'});if(!_0x2ad279['ok']){const _0x23bf9c=await _0x2ad279['json']()['catch'](()=>({}));throw new Error(_0x23bf9c['error']||_0x23bf9c['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x2ad279['statusText']);}return await _0x2ad279['json']();},async 'readFile'(_0x4f517b,_0x576aaa){if(!_0x4f517b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x576aaa)throw new Error('File\x20path\x20is\x20required');const _0x24323e=await fetch(API_BASE+'/tasks/'+_0x4f517b+'/files?path='+encodeURIComponent(_0x576aaa));if(!_0x24323e['ok']){const _0x25275b=await _0x24323e['json']()['catch'](()=>({}));throw new Error(_0x25275b['error']||_0x25275b['message']||'Failed\x20to\x20read\x20file:\x20'+_0x24323e['statusText']);}return await _0x24323e['json']();},'getTaskFileDownloadUrl'(_0x169efc,_0x186316){if(!_0x169efc)throw new Error('Task\x20ID\x20is\x20required');if(!_0x186316)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x169efc+'/files/download?path='+encodeURIComponent(_0x186316);},async 'writeFile'(_0x3c112c,_0x160270,_0x30384b){if(!_0x3c112c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x160270)throw new Error('File\x20path\x20is\x20required');if(_0x30384b===undefined)throw new Error('Content\x20is\x20required');const _0x229d10=await fetch(API_BASE+'/tasks/'+_0x3c112c+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x160270,'content':_0x30384b})});if(!_0x229d10['ok']){const _0xa57ef8=await _0x229d10['json']()['catch'](()=>({}));throw new Error(_0xa57ef8['error']||_0xa57ef8['message']||'Failed\x20to\x20write\x20file:\x20'+_0x229d10['statusText']);}return await _0x229d10['json']();},async 'uploadTaskFiles'(_0x287fa0,_0x7d0f85,_0x5113bc){if(!_0x287fa0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x7d0f85)throw new Error('Target\x20directory\x20is\x20required');if(!_0x5113bc||_0x5113bc['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x24608d=new FormData();_0x24608d['append']('targetDir',_0x7d0f85);for(const _0xd21f6c of _0x5113bc){_0x24608d['append']('files',_0xd21f6c,_0xd21f6c['name']);}const _0xfe568=await fetch(API_BASE+'/tasks/'+_0x287fa0+'/files/upload',{'method':'POST','body':_0x24608d});if(!_0xfe568['ok']){const _0x5920b9=await _0xfe568['json']()['catch'](()=>({}));throw new Error(_0x5920b9['error']||_0x5920b9['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xfe568['statusText']);}return await _0xfe568['json']();},async 'createDirectory'(_0xdd76f2,_0x4edcf3){if(!_0xdd76f2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4edcf3)throw new Error('Directory\x20path\x20is\x20required');const _0x24a3cf=await fetch(API_BASE+'/tasks/'+_0xdd76f2+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x4edcf3})});if(!_0x24a3cf['ok']){const _0x4ff72a=await _0x24a3cf['json']()['catch'](()=>({}));throw new Error(_0x4ff72a['error']||_0x4ff72a['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x24a3cf['statusText']);}return await _0x24a3cf['json']();},async 'renamePath'(_0x2bf68d,_0x16ae4e,_0x36607a){if(!_0x2bf68d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16ae4e)throw new Error('Source\x20path\x20is\x20required');if(!_0x36607a)throw new Error('Destination\x20path\x20is\x20required');const _0x12a4ee=await fetch(API_BASE+'/tasks/'+_0x2bf68d+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x16ae4e,'newPath':_0x36607a})});if(!_0x12a4ee['ok']){const _0x5469a1=await _0x12a4ee['json']()['catch'](()=>({}));throw new Error(_0x5469a1['error']||_0x5469a1['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x12a4ee['statusText']);}return await _0x12a4ee['json']();},async 'deleteFile'(_0x5841e7,_0x40eb83){if(!_0x5841e7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40eb83)throw new Error('File\x20path\x20is\x20required');const _0x20339c=await fetch(API_BASE+'/tasks/'+_0x5841e7+'/files?path='+encodeURIComponent(_0x40eb83),{'method':'DELETE'});if(!_0x20339c['ok']){const _0x3fb68d=await _0x20339c['json']()['catch'](()=>({}));throw new Error(_0x3fb68d['error']||_0x3fb68d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x20339c['statusText']);}return await _0x20339c['json']();},async 'deleteDirectory'(_0x298308,_0x2ea275){if(!_0x298308)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ea275)throw new Error('Directory\x20path\x20is\x20required');const _0x344bf5=await fetch(API_BASE+'/tasks/'+_0x298308+'/files/directory?path='+encodeURIComponent(_0x2ea275),{'method':'DELETE'});if(!_0x344bf5['ok']){const _0x3caf54=await _0x344bf5['json']()['catch'](()=>({}));throw new Error(_0x3caf54['error']||_0x3caf54['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x344bf5['statusText']);}return await _0x344bf5['json']();},async 'discardFile'(_0xc29d1d,_0x635c39,_0x5c991f){if(!_0xc29d1d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x635c39)throw new Error('File\x20path\x20is\x20required');if(!_0x5c991f)throw new Error('Repository\x20path\x20is\x20required');const _0x224b7a=await fetch(API_BASE+'/tasks/'+_0xc29d1d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x635c39,'repoPath':_0x5c991f})});if(!_0x224b7a['ok']){const _0x5e0bcb=await _0x224b7a['json']()['catch'](()=>({}));throw new Error(_0x5e0bcb['error']||_0x5e0bcb['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x224b7a['statusText']);}return await _0x224b7a['json']();},async 'followUpTask'(_0x23481f,_0x28ba02={}){if(!_0x23481f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28ba02['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3a1891,_0x3e4cd9={};if(_0x28ba02['files']&&_0x28ba02['files']['length']>0x0){const _0x4f0813=new FormData();_0x4f0813['append']('instructions',_0x28ba02['instructions']);for(const _0x1d5368 of _0x28ba02['files']){_0x4f0813['append']('attachments',_0x1d5368);}_0x3a1891=_0x4f0813;}else _0x3e4cd9['Content-Type']='application/json',_0x3a1891=JSON['stringify']({'instructions':_0x28ba02['instructions']});const _0x4645bc=await fetch(API_BASE+'/tasks/'+_0x23481f+'/follow-up',{'method':'POST','headers':_0x3e4cd9,'body':_0x3a1891});if(!_0x4645bc['ok']){const _0xcece5b=await _0x4645bc['json']()['catch'](()=>({}));throw new Error(_0xcece5b['error']||_0xcece5b['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x4645bc['statusText']);}return await _0x4645bc['json']();},async 'getTaskRewindPoints'(_0x6ff0ce){if(!_0x6ff0ce)throw new Error('Task\x20ID\x20is\x20required');const _0x60dabe=await fetch(API_BASE+'/tasks/'+_0x6ff0ce+'/rewind-points');if(!_0x60dabe['ok']){const _0x5657c7=await _0x60dabe['json']()['catch'](()=>({}));throw new Error(_0x5657c7['error']||_0x5657c7['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x60dabe['statusText']);}return await _0x60dabe['json']();},async 'rewindTask'(_0x7bdd78,_0x58faa7={}){if(!_0x7bdd78)throw new Error('Task\x20ID\x20is\x20required');const _0x33def1=Number['isInteger'](_0x58faa7['targetFollowUpCount'])?_0x58faa7['targetFollowUpCount']:0x0,_0x16843b={'targetFollowUpCount':_0x33def1};typeof _0x58faa7['instructions']==='string'&&_0x58faa7['instructions']['trim']()&&(_0x16843b['instructions']=_0x58faa7['instructions']['trim']());typeof _0x58faa7['rewindFiles']==='boolean'&&(_0x16843b['rewindFiles']=_0x58faa7['rewindFiles']);const _0x2b16b4=await fetch(API_BASE+'/tasks/'+_0x7bdd78+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x16843b)});if(!_0x2b16b4['ok']){const _0x1c469d=await _0x2b16b4['json']()['catch'](()=>({}));throw new Error(_0x1c469d['error']||_0x1c469d['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2b16b4['statusText']);}return await _0x2b16b4['json']();},async 'login'(_0x423091,_0xd34bf0){const _0x2b44fd=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x423091,'password':_0xd34bf0})});if(!_0x2b44fd['ok']){const _0xbaa34b=await _0x2b44fd['json']();throw new Error(_0xbaa34b['message']||'Login\x20failed');}return await _0x2b44fd['json']();},async 'logout'(){const _0x4fa8d0=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4fa8d0['ok']){const _0x1c878e=await _0x4fa8d0['json']();throw new Error(_0x1c878e['message']||'Logout\x20failed');}return await _0x4fa8d0['json']();},async 'getCurrentUser'(){const _0x58b7df=await fetch(API_BASE+'/auth/me');if(!_0x58b7df['ok'])throw new Error('Not\x20authenticated');const _0x3f0e34=await _0x58b7df['json']();return _0x3f0e34['user'];},async 'getRolesInfo'(){const _0xed7a9d=await fetch(API_BASE+'/users/roles');if(!_0xed7a9d['ok']){const _0x50ed71=await _0xed7a9d['json']();throw new Error(_0x50ed71['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0xed7a9d['json']();},async 'getUsers'(){const _0x167af7=await fetch(API_BASE+'/users');if(!_0x167af7['ok']){const _0x34641e=await _0x167af7['json']();throw new Error(_0x34641e['message']||'Failed\x20to\x20get\x20users');}return await _0x167af7['json']();},async 'getUser'(_0x1d148c){const _0x366630=await fetch(API_BASE+'/users/'+_0x1d148c);if(!_0x366630['ok']){const _0x386da8=await _0x366630['json']();throw new Error(_0x386da8['message']||'Failed\x20to\x20get\x20user');}return await _0x366630['json']();},async 'createUser'(_0x4469fd){const _0x35906a=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4469fd)});if(!_0x35906a['ok']){const _0x1e6fe1=await _0x35906a['json']();throw new Error(_0x1e6fe1['message']||'Failed\x20to\x20create\x20user');}return await _0x35906a['json']();},async 'updateUser'(_0x251eaa,_0x25a6d9){const _0x3df9f5=await fetch(API_BASE+'/users/'+_0x251eaa,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25a6d9)});if(!_0x3df9f5['ok']){const _0x3f6d3d=await _0x3df9f5['json']();throw new Error(_0x3f6d3d['message']||'Failed\x20to\x20update\x20user');}return await _0x3df9f5['json']();},async 'deleteUser'(_0x1ce6fe){const _0x4eac12=await fetch(API_BASE+'/users/'+_0x1ce6fe,{'method':'DELETE'});if(!_0x4eac12['ok']){const _0x41b456=await _0x4eac12['json']();throw new Error(_0x41b456['message']||'Failed\x20to\x20delete\x20user');}return await _0x4eac12['json']();},async 'stopAllContainers'(){const _0x212899=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x381468=await _0x212899['json']()['catch'](()=>({}));if(!_0x212899['ok'])throw new Error(_0x381468['message']||_0x381468['error']||'Failed\x20to\x20stop\x20containers');return _0x381468;},async 'removeStoppedContainers'(){const _0x3c5ab1=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x18f32c=await _0x3c5ab1['json']()['catch'](()=>({}));if(!_0x3c5ab1['ok'])throw new Error(_0x18f32c['message']||_0x18f32c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x18f32c;},async 'pruneDockerResources'(){const _0x3b00c3=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x4e159d=await _0x3b00c3['json']()['catch'](()=>({}));if(!_0x3b00c3['ok'])throw new Error(_0x4e159d['message']||_0x4e159d['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x4e159d;},async 'getUpdateSettings'(){const _0x26d908=await fetch(API_BASE+'/health/update-settings'),_0x55c7e5=await _0x26d908['json']()['catch'](()=>({}));if(!_0x26d908['ok'])throw new Error(_0x55c7e5['message']||_0x55c7e5['error']||'Failed\x20to\x20load\x20update\x20settings');return _0x55c7e5;},async 'applyServerUpdate'(_0xf162b0){const _0x288d0c=await fetch(API_BASE+'/health/update',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'version':_0xf162b0})}),_0x521e14=await _0x288d0c['json']()['catch'](()=>({}));if(!_0x288d0c['ok']){const _0x24c665=new Error(_0x521e14['message']||_0x521e14['error']||'Failed\x20to\x20apply\x20server\x20update');if(_0x521e14['output']!==undefined)_0x24c665['output']=_0x521e14['output'];if(_0x521e14['error']!==undefined)_0x24c665['commandError']=_0x521e14['error'];throw _0x24c665;}return _0x521e14;},async 'restartServer'(){const _0x3353d0=await fetch(API_BASE+'/health/restart',{'method':'POST'}),_0x2134f8=await _0x3353d0['json']()['catch'](()=>({}));if(!_0x3353d0['ok'])throw new Error(_0x2134f8['message']||_0x2134f8['error']||'Failed\x20to\x20restart\x20server');return _0x2134f8;},async 'createPasswordToken'(_0x438a9f,_0x130605='setup',_0x55c930=![]){const _0x19df6e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x438a9f,'type':_0x130605,'sendEmail':_0x55c930})});if(!_0x19df6e['ok']){const _0x5dfd8d=await _0x19df6e['json']();throw new Error(_0x5dfd8d['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x19df6e['json']();},async 'getEmailConfig'(){const _0x3dc1fa=await fetch(API_BASE+'/password/email-config');if(!_0x3dc1fa['ok']){const _0x4f3f64=await _0x3dc1fa['json']();throw new Error(_0x4f3f64['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3dc1fa['json']();},async 'updateTaskName'(_0x2d3d8b,_0x40aea1){const _0x11b0c6=await fetch(API_BASE+'/tasks/'+_0x2d3d8b,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x40aea1})});if(!_0x11b0c6['ok']){const _0x5b0791=await _0x11b0c6['json']();throw new Error(_0x5b0791['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x11b0c6['json']();},async 'pinTask'(_0x351c93,_0x3f10ce,_0xf3e900=null){if(!_0x351c93)throw new Error('Task\x20ID\x20is\x20required');const _0x1e5de7={'pinned':_0x3f10ce};_0xf3e900&&_0xf3e900['length']>0x0&&(_0x1e5de7['additionalTaskIds']=_0xf3e900);const _0xe6a13c=await fetch(API_BASE+'/tasks/'+_0x351c93+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e5de7)});if(!_0xe6a13c['ok']){const _0x352cb6=await _0xe6a13c['json']();throw new Error(_0x352cb6['error']||'Failed\x20to\x20pin\x20task');}return await _0xe6a13c['json']();},async 'setTaskWinner'(_0x377fc7,_0x31f1be,_0x3d06f9=[]){if(!_0x377fc7)throw new Error('Task\x20ID\x20is\x20required');const _0x3d4bda=await fetch(API_BASE+'/tasks/'+_0x377fc7+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x31f1be,'siblings':_0x3d06f9})});if(!_0x3d4bda['ok']){const _0x1574ad=await _0x3d4bda['json']();throw new Error(_0x1574ad['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3d4bda['json']();},async 'setTaskLoser'(_0x337684,_0x3606ba){if(!_0x337684)throw new Error('Task\x20ID\x20is\x20required');const _0x1ff393=await fetch(API_BASE+'/tasks/'+_0x337684+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3606ba})});if(!_0x1ff393['ok']){const _0x25e00d=await _0x1ff393['json']();throw new Error(_0x25e00d['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1ff393['json']();},async 'createTaskGroup'(_0x4c675c){const _0x44fe90=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4c675c)});if(!_0x44fe90['ok']){const _0x599c6f=await _0x44fe90['json']();throw new Error(_0x599c6f['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x44fe90['json']();},async 'getTaskGroups'(_0x31045a={}){const _0x51bd46=new URLSearchParams();if(_0x31045a['userId'])_0x51bd46['set']('userId',String(_0x31045a['userId']));if(_0x31045a['status'])_0x51bd46['set']('status',String(_0x31045a['status']));if(_0x31045a['limit'])_0x51bd46['set']('limit',String(_0x31045a['limit']));const _0x363de9=API_BASE+'/tasks/groups'+(_0x51bd46['toString']()?'?'+_0x51bd46['toString']():''),_0x2472f0=await fetch(_0x363de9);if(!_0x2472f0['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2472f0['json']();},async 'getTaskGroup'(_0x40b0d3){const _0x1dc6a9=await fetch(API_BASE+'/tasks/groups/'+_0x40b0d3);if(!_0x1dc6a9['ok']){const _0x1ad599=await _0x1dc6a9['json']();throw new Error(_0x1ad599['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x1dc6a9['json']();},async 'updateTaskGroup'(_0x9f53a3,_0x18521d,_0x53aae4){const _0x3b4e25=await fetch(API_BASE+'/tasks/'+_0x9f53a3+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x18521d,'groupIndex':_0x53aae4})});if(!_0x3b4e25['ok']){const _0x39f46e=await _0x3b4e25['json']();throw new Error(_0x39f46e['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3b4e25['json']();},async 'removeTaskFromGroup'(_0x5bec8f){return this['updateTaskGroup'](_0x5bec8f,null,null);},async 'deleteTaskGroup'(_0x2d72a2,_0x487e0f=![]){const _0x86ee86=_0x487e0f?'?deleteTasks=true':'',_0x346958=await fetch(API_BASE+'/tasks/groups/'+_0x2d72a2+_0x86ee86,{'method':'DELETE'});if(!_0x346958['ok']){const _0x359455=await _0x346958['json']();throw new Error(_0x359455['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x3cb548,_0x2119a1){const _0x3a6b50=await fetch(API_BASE+'/tasks/groups/'+_0x3cb548+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2119a1})});if(!_0x3a6b50['ok']){const _0x43e6c6=await _0x3a6b50['json']();throw new Error(_0x43e6c6['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3a6b50['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x54d33f){if(!_0x54d33f)throw new Error('Task\x20ID\x20is\x20required');const _0x45d50c=await fetch(API_BASE+'/tasks/'+_0x54d33f+'/comments');if(!_0x45d50c['ok']){const _0x16770b=await _0x45d50c['json']()['catch'](()=>({}));throw new Error(_0x16770b['error']||'Failed\x20to\x20get\x20comments');}return await _0x45d50c['json']();},async 'addComment'(_0x52ee28,_0x6f57b6){if(!_0x52ee28)throw new Error('Task\x20ID\x20is\x20required');if(!_0x6f57b6)throw new Error('Comment\x20content\x20is\x20required');const _0x113212=await fetch(API_BASE+'/tasks/'+_0x52ee28+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x6f57b6})});if(!_0x113212['ok']){const _0x4edc86=await _0x113212['json']()['catch'](()=>({}));throw new Error(_0x4edc86['error']||'Failed\x20to\x20add\x20comment');}return await _0x113212['json']();},async 'updateComment'(_0x5de9cf,_0x341ac5,_0xcec240){if(!_0x5de9cf)throw new Error('Task\x20ID\x20is\x20required');if(!_0x341ac5)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xcec240)throw new Error('Comment\x20content\x20is\x20required');const _0x2d5cb4=await fetch(API_BASE+'/tasks/'+_0x5de9cf+'/comments/'+_0x341ac5,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xcec240})});if(!_0x2d5cb4['ok']){const _0xd96636=await _0x2d5cb4['json']()['catch'](()=>({}));throw new Error(_0xd96636['error']||'Failed\x20to\x20update\x20comment');}return await _0x2d5cb4['json']();},async 'deleteComment'(_0x1927fa,_0x52dda7){if(!_0x1927fa)throw new Error('Task\x20ID\x20is\x20required');if(!_0x52dda7)throw new Error('Comment\x20ID\x20is\x20required');const _0x203506=await fetch(API_BASE+'/tasks/'+_0x1927fa+'/comments/'+_0x52dda7,{'method':'DELETE'});if(!_0x203506['ok']){const _0x5ef27d=await _0x203506['json']()['catch'](()=>({}));throw new Error(_0x5ef27d['error']||'Failed\x20to\x20delete\x20comment');}return await _0x203506['json']();},async 'createObjective'(_0x1fb8d9){const _0x25b299={'objective':!![],'name':_0x1fb8d9['name']||'','environment':_0x1fb8d9['environment']||null,'agents':_0x1fb8d9['agents']||[],'branches':_0x1fb8d9['branches']||{},'isPinned':_0x1fb8d9['isPinned']||![],'parentObjectiveId':_0x1fb8d9['parentObjectiveId']||null,'env_vars':_0x1fb8d9['envVars']||{},'parameters':{'instructions':_0x1fb8d9['instructions']||''},'files':_0x1fb8d9['files']||[],'jira':_0x1fb8d9['jira']||null};return this['createTask'](_0x25b299);},async 'updateObjective'(_0x339c0a,_0x21cd48,_0x2aaa97=[],_0x1e8cd0=[]){let _0x83342d,_0x2a0b02={};const _0x428d5c={..._0x21cd48};_0x1e8cd0&&_0x1e8cd0['length']>0x0&&(_0x428d5c['removeAttachments']=_0x1e8cd0);if(_0x2aaa97&&_0x2aaa97['length']>0x0){const _0x30bd82=new FormData();for(const [_0x127d1b,_0x31e9ce]of Object['entries'](_0x428d5c)){if(_0x31e9ce==null)continue;typeof _0x31e9ce==='object'?_0x30bd82['append'](_0x127d1b,JSON['stringify'](_0x31e9ce)):_0x30bd82['append'](_0x127d1b,String(_0x31e9ce));}for(const _0x5088b5 of _0x2aaa97){_0x30bd82['append']('attachments',_0x5088b5);}_0x83342d=_0x30bd82;}else _0x2a0b02['Content-Type']='application/json',_0x83342d=JSON['stringify'](_0x428d5c);const _0x24c043=await fetch(API_BASE+'/tasks/'+_0x339c0a,{'method':'PATCH','headers':_0x2a0b02,'body':_0x83342d});if(!_0x24c043['ok']){const _0xf1dee3=await _0x24c043['json']();throw new Error(_0xf1dee3['error']||'Failed\x20to\x20update\x20objective');}return await _0x24c043['json']();},async 'deleteObjective'(_0x4d8753){return this['deleteTask'](_0x4d8753);},async 'launchObjective'(_0x1fcee9,_0x306f6b={}){const _0x1d683f=await fetch(API_BASE+'/tasks/'+_0x1fcee9+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x306f6b)});if(!_0x1d683f['ok']){const _0x4c0bc8=await _0x1d683f['json']();throw new Error(_0x4c0bc8['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1d683f['json']();},async 'getObjectiveAttachments'(_0x54d4d9){return this['getTaskAttachments'](_0x54d4d9);},async 'createJudgeTask'({environment:_0x10080e,judgeAgent:_0x52c796,groupId:_0x3d0a16,taskIds:_0x1841f1,judgeCustomInstructions:_0x3e1e90,isPinned:_0x1668e5}){const _0x2a9882=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x10080e,'judgeAgent':_0x52c796,'groupId':_0x3d0a16,'taskIds':_0x1841f1,'judgeCustomInstructions':_0x3e1e90,'isPinned':_0x1668e5})});if(!_0x2a9882['ok']){const _0x3e57bd=await _0x2a9882['json']();throw new Error(_0x3e57bd['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2a9882['json']();},async 'getJudgeTasks'(_0x2af37e){const _0xc1d7f3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2af37e));if(!_0xc1d7f3['ok']){const _0x81ea90=await _0xc1d7f3['json']();throw new Error(_0x81ea90['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xc1d7f3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x5465f2,_0x3a1c60,_0x3adc75=''){const _0x297879=await fetch(API_BASE+'/tasks/'+_0x5465f2+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3a1c60,'customPreamble':_0x3adc75})});if(!_0x297879['ok']){const _0xa17a04=await _0x297879['json']();throw new Error(_0xa17a04['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x297879['json']();},async 'getJiraConfig'(){const _0x5ba094=await fetch(API_BASE+'/jira/config');if(!_0x5ba094['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x5ba094['json']();},async 'getJiraIssue'(_0x73365){const _0x39b1a3=await fetch(API_BASE+'/jira/issues/'+_0x73365);if(!_0x39b1a3['ok']){const _0xf5f3c8=await _0x39b1a3['json']()['catch'](()=>({}));throw new Error(_0xf5f3c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x39b1a3['statusText']);}return await _0x39b1a3['json']();},async 'searchJiraIssues'(_0x485b8f,_0x5e8e42=0x14){const _0x55be17=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x485b8f,'maxResults':_0x5e8e42})});if(!_0x55be17['ok']){const _0x2482ff=await _0x55be17['json']()['catch'](()=>({}));throw new Error(_0x2482ff['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x55be17['statusText']);}return await _0x55be17['json']();},async 'postJiraComment'(_0x411262,_0xa39e75){const _0x45bbc0=await fetch(API_BASE+'/jira/issues/'+_0x411262+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xa39e75})});if(!_0x45bbc0['ok']){const _0x3c4f8d=await _0x45bbc0['json']()['catch'](()=>({}));throw new Error(_0x3c4f8d['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x45bbc0['statusText']);}return await _0x45bbc0['json']();},async 'getJiraComments'(_0x2d0ebf){const _0x3d40de=await fetch(API_BASE+'/jira/issues/'+_0x2d0ebf+'/comments');if(!_0x3d40de['ok']){const _0x5ab673=await _0x3d40de['json']()['catch'](()=>({}));throw new Error(_0x5ab673['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x3d40de['statusText']);}return await _0x3d40de['json']();},async 'promptParameter'({environment:_0x117ff0,command:_0x1c0e44,parser:parser='json'}){const _0x523103=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x117ff0,'command':_0x1c0e44,'parser':parser})});if(!_0x523103['ok']){const _0x391923=await _0x523103['json']()['catch'](()=>({}));throw new Error(_0x391923['message']||_0x391923['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x523103['statusText']);}return await _0x523103['json']();},async 'promptParameterStream'(_0x573469,_0x8c6319){const _0x164fca=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x573469)});if(!_0x164fca['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x164fca['statusText']);const _0x2d5c9b=_0x164fca['body']['getReader'](),_0x4d5f8e=new TextDecoder();let _0x495fbb='';return new Promise((_0x447272,_0x3e5340)=>{const _0x30e465=async()=>{try{const {done:_0x34a25d,value:_0x3e46b7}=await _0x2d5c9b['read']();if(_0x34a25d)return;_0x495fbb+=_0x4d5f8e['decode'](_0x3e46b7,{'stream':!![]});const _0x11944a=_0x495fbb['split']('\x0a\x0a');_0x495fbb=_0x11944a['pop']()||'';for(const _0x47db96 of _0x11944a){if(!_0x47db96['trim']())continue;const _0x5b8938=_0x47db96['split']('\x0a');let _0x407101='message',_0x1ccc01='';for(const _0x2cfec4 of _0x5b8938){if(_0x2cfec4['startsWith']('event:'))_0x407101=_0x2cfec4['substring'](0x6)['trim']();else _0x2cfec4['startsWith']('data:')&&(_0x1ccc01=_0x2cfec4['substring'](0x5)['trim']());}if(!_0x1ccc01)continue;try{const _0x2926d6=JSON['parse'](_0x1ccc01);if(_0x407101==='progress'&&_0x8c6319)_0x8c6319(_0x2926d6['stage'],_0x2926d6['message']);else{if(_0x407101==='result'){_0x447272(_0x2926d6);return;}else{if(_0x407101==='error'){let _0xfe64ef=_0x2926d6['message']||_0x2926d6['error']||'Prompt\x20command\x20failed';_0x2926d6['rawOutput']&&(_0xfe64ef+='\x0a\x0aRaw\x20output:\x0a'+_0x2926d6['rawOutput']);_0x3e5340(new Error(_0xfe64ef));return;}}}}catch(_0x110933){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x110933),console['error']('Event\x20type:',_0x407101),console['error']('Event\x20data:',_0x1ccc01),console['error']('First\x20200\x20chars:',_0x1ccc01['substring'](0x0,0xc8)),_0x3e5340(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x110933['message']+'\x0a\x0aData:\x20'+_0x1ccc01['substring'](0x0,0x1f4)));return;}}_0x30e465();}catch(_0x293480){_0x3e5340(_0x293480);}};_0x30e465();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x59448f){const _0x5613d0=await fetch(''+API_BASE+_0x59448f);if(!_0x5613d0['ok']){const _0x48f4bb=await _0x5613d0['json']()['catch'](()=>({'error':_0x5613d0['statusText']})),_0xc5b633=new Error(_0x48f4bb['error']||_0x48f4bb['message']||_0x5613d0['statusText']);if(_0x48f4bb['detail']!==undefined)_0xc5b633['detail']=_0x48f4bb['detail'];throw _0xc5b633;}return await _0x5613d0['json']();},async 'post'(_0x4ea2ff,_0x485749){const _0x571cec=await fetch(''+API_BASE+_0x4ea2ff,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x485749)});if(!_0x571cec['ok']){const _0x421308=await _0x571cec['json']()['catch'](()=>({'error':_0x571cec['statusText']})),_0x39f8fb=new Error(_0x421308['error']||_0x421308['message']||_0x571cec['statusText']);if(_0x421308['detail']!==undefined)_0x39f8fb['detail']=_0x421308['detail'];throw _0x39f8fb;}return await _0x571cec['json']();},async 'put'(_0x2ae990,_0x1de217){const _0x26fbd0=await fetch(''+API_BASE+_0x2ae990,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1de217)});if(!_0x26fbd0['ok']){const _0x1b14e5=await _0x26fbd0['json']()['catch'](()=>({'error':_0x26fbd0['statusText']})),_0x344d64=new Error(_0x1b14e5['error']||_0x1b14e5['message']||_0x26fbd0['statusText']);if(_0x1b14e5['detail']!==undefined)_0x344d64['detail']=_0x1b14e5['detail'];throw _0x344d64;}return await _0x26fbd0['json']();},async 'delete'(_0x5f4de3,_0x47d8fd){const _0x388832={'method':'DELETE'};_0x47d8fd&&(_0x388832['headers']={'Content-Type':'application/json'},_0x388832['body']=JSON['stringify'](_0x47d8fd));const _0x3db63e=await fetch(''+API_BASE+_0x5f4de3,_0x388832);if(!_0x3db63e['ok']){const _0x16e51c=await _0x3db63e['json']()['catch'](()=>({'error':_0x3db63e['statusText']})),_0x28751a=new Error(_0x16e51c['error']||_0x16e51c['message']||_0x3db63e['statusText']);if(_0x16e51c['detail']!==undefined)_0x28751a['detail']=_0x16e51c['detail'];throw _0x28751a;}return await _0x3db63e['json']();},async 'getSkills'(){const _0x37942b=await fetch(API_BASE+'/skills');if(!_0x37942b['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x37942b['statusText']);return await _0x37942b['json']();},async 'getSkill'(_0x1e771){const _0x5a27c6=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1e771));if(!_0x5a27c6['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5a27c6['statusText']);return await _0x5a27c6['json']();},async 'createSkill'(_0x23aebe){const _0x83dd86=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23aebe)});if(!_0x83dd86['ok']){const _0x2cb2f9=await _0x83dd86['json']()['catch'](()=>({'error':_0x83dd86['statusText']})),_0x3337ec=new Error(_0x2cb2f9['error']||_0x2cb2f9['message']||_0x83dd86['statusText']);if(_0x2cb2f9['detail']!==undefined)_0x3337ec['detail']=_0x2cb2f9['detail'];throw _0x3337ec;}return await _0x83dd86['json']();},async 'updateSkill'(_0x328c73,_0xe8ef4a){const _0x4b389e=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x328c73),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe8ef4a)});if(!_0x4b389e['ok']){const _0x43defd=await _0x4b389e['json']()['catch'](()=>({'error':_0x4b389e['statusText']})),_0x210724=new Error(_0x43defd['error']||_0x43defd['message']||_0x4b389e['statusText']);if(_0x43defd['detail']!==undefined)_0x210724['detail']=_0x43defd['detail'];throw _0x210724;}return await _0x4b389e['json']();},async 'deleteSkill'(_0x2d8d57){const _0x3de931=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2d8d57),{'method':'DELETE'});if(!_0x3de931['ok']){const _0x958dd5=await _0x3de931['json']()['catch'](()=>({'error':_0x3de931['statusText']})),_0x13ab3b=new Error(_0x958dd5['error']||_0x958dd5['message']||_0x3de931['statusText']);if(_0x958dd5['detail']!==undefined)_0x13ab3b['detail']=_0x958dd5['detail'];throw _0x13ab3b;}return await _0x3de931['json']();},async 'getSkillFile'(_0x3e2dd8,_0xa695d4){const _0x3b60df=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3e2dd8)+'/files/'+_0xa695d4);if(!_0x3b60df['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3b60df['statusText']);return await _0x3b60df['json']();},async 'saveSkillFile'(_0x4296db,_0x3fa731,_0x4d11a3){const _0x397279=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4296db)+'/files/'+_0x3fa731,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4d11a3})});if(!_0x397279['ok']){const _0x2af86f=await _0x397279['json']()['catch'](()=>({'error':_0x397279['statusText']})),_0x4f925d=new Error(_0x2af86f['error']||_0x2af86f['message']||_0x397279['statusText']);if(_0x2af86f['detail']!==undefined)_0x4f925d['detail']=_0x2af86f['detail'];throw _0x4f925d;}return await _0x397279['json']();},async 'deleteSkillFile'(_0x4ee132,_0x49d813){const _0xa3bf95=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4ee132)+'/files/'+_0x49d813,{'method':'DELETE'});if(!_0xa3bf95['ok']){const _0xd45a12=await _0xa3bf95['json']()['catch'](()=>({'error':_0xa3bf95['statusText']})),_0x585b93=new Error(_0xd45a12['error']||_0xd45a12['message']||_0xa3bf95['statusText']);if(_0xd45a12['detail']!==undefined)_0x585b93['detail']=_0xd45a12['detail'];throw _0x585b93;}return await _0xa3bf95['json']();},async 'pullSkills'(){const _0x13d025=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x13d025['ok']){const _0x563929=await _0x13d025['json']()['catch'](()=>({'error':_0x13d025['statusText']})),_0x51b8eb=new Error(_0x563929['error']||_0x563929['message']||_0x13d025['statusText']);if(_0x563929['detail']!==undefined)_0x51b8eb['detail']=_0x563929['detail'];throw _0x51b8eb;}return await _0x13d025['json']();},async 'commitSkills'(_0x197aff,_0x47ae25={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x47ae25,_0x57f03f=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x197aff,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x57f03f['ok']){const _0x1cdaa4=await _0x57f03f['json']()['catch'](()=>({'error':_0x57f03f['statusText']})),_0x2e8964=new Error(_0x1cdaa4['error']||_0x1cdaa4['message']||_0x57f03f['statusText']);if(_0x1cdaa4['detail']!==undefined)_0x2e8964['detail']=_0x1cdaa4['detail'];throw _0x2e8964;}return await _0x57f03f['json']();},async 'discardSkillsChanges'(){const _0x31b6ca=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x31b6ca['ok']){const _0x2fed7f=await _0x31b6ca['json']()['catch'](()=>({'error':_0x31b6ca['statusText']})),_0x186e0c=new Error(_0x2fed7f['error']||_0x2fed7f['message']||_0x31b6ca['statusText']);if(_0x2fed7f['detail']!==undefined)_0x186e0c['detail']=_0x2fed7f['detail'];throw _0x186e0c;}return await _0x31b6ca['json']();},async 'getSkillCatalog'(){const _0x2fc705=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2fc705['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2fc705['statusText']);return await _0x2fc705['json']();},async 'getImportedSkillsRegistry'(){const _0x8b455c=await fetch(API_BASE+'/external-skills/registry');if(!_0x8b455c['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x8b455c['statusText']);return await _0x8b455c['json']();},async 'importCatalogSkill'(_0x4cc3cf){const _0x1ee464=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4cc3cf})});if(!_0x1ee464['ok']){const _0x5d09c9=await _0x1ee464['json']()['catch'](()=>({'error':_0x1ee464['statusText']})),_0x32fd2c=new Error(_0x5d09c9['error']||_0x5d09c9['message']||_0x1ee464['statusText']);if(_0x5d09c9['detail']!==undefined)_0x32fd2c['detail']=_0x5d09c9['detail'];throw _0x32fd2c;}return await _0x1ee464['json']();},async 'importSkillFromGit'(_0x13bc5f,_0x5c7c29,_0x43ed9e='main',_0x14a4bd=null){const _0x1a5807=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x13bc5f,'skillPath':_0x5c7c29,'branch':_0x43ed9e,'skillId':_0x14a4bd})});if(!_0x1a5807['ok']){const _0x3c4e29=await _0x1a5807['json']()['catch'](()=>({'error':_0x1a5807['statusText']})),_0x290c57=new Error(_0x3c4e29['error']||_0x3c4e29['message']||_0x1a5807['statusText']);if(_0x3c4e29['detail']!==undefined)_0x290c57['detail']=_0x3c4e29['detail'];throw _0x290c57;}return await _0x1a5807['json']();},async 'probeMarketplace'(_0x2cdf96,_0x4d1a89='main'){const _0x3eaed4=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2cdf96,'branch':_0x4d1a89})});if(!_0x3eaed4['ok']){const _0x4c8ac1=await _0x3eaed4['json']()['catch'](()=>({'error':_0x3eaed4['statusText']})),_0x5197b7=new Error(_0x4c8ac1['error']||_0x4c8ac1['message']||_0x3eaed4['statusText']);if(_0x4c8ac1['detail']!==undefined)_0x5197b7['detail']=_0x4c8ac1['detail'];throw _0x5197b7;}return await _0x3eaed4['json']();},async 'importMarketplaceBundle'(_0x5dba8b,_0x106fde,_0x2e939b,_0x4ad835=null){const _0x3cd568=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5dba8b,'branch':_0x106fde,'bundleId':_0x2e939b,'selectedSkills':_0x4ad835})});if(!_0x3cd568['ok']){const _0x2fe93d=await _0x3cd568['json']()['catch'](()=>({'error':_0x3cd568['statusText']})),_0x5c0540=new Error(_0x2fe93d['error']||_0x2fe93d['message']||_0x3cd568['statusText']);if(_0x2fe93d['detail']!==undefined)_0x5c0540['detail']=_0x2fe93d['detail'];throw _0x5c0540;}return await _0x3cd568['json']();},async 'importSkillFromFolder'(_0x2cb514,_0x400f2c=null){const _0x1db680=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x2cb514,'skillId':_0x400f2c})});if(!_0x1db680['ok']){const _0x3c353d=await _0x1db680['json']()['catch'](()=>({'error':_0x1db680['statusText']})),_0xd40a49=new Error(_0x3c353d['error']||_0x3c353d['message']||_0x1db680['statusText']);if(_0x3c353d['detail']!==undefined)_0xd40a49['detail']=_0x3c353d['detail'];throw _0xd40a49;}return await _0x1db680['json']();},async 'importSkillFromNpm'(_0x593a13,_0x1cfec8='latest',_0x58ee79=null,_0x4a13cc=null){const _0x7dcb62=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x593a13,'version':_0x1cfec8,'skillId':_0x58ee79,'registry':_0x4a13cc})});if(!_0x7dcb62['ok']){const _0x1d3af1=await _0x7dcb62['json']()['catch'](()=>({'error':_0x7dcb62['statusText']})),_0x16056c=new Error(_0x1d3af1['error']||_0x1d3af1['message']||_0x7dcb62['statusText']);if(_0x1d3af1['detail']!==undefined)_0x16056c['detail']=_0x1d3af1['detail'];throw _0x16056c;}return await _0x7dcb62['json']();},async 'checkSkillUpdates'(_0x8c1560){const _0x123240=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x8c1560)+'/check-updates',{'method':'POST'});if(!_0x123240['ok']){const _0x4370d3=await _0x123240['json']()['catch'](()=>({'error':_0x123240['statusText']})),_0x4a8d5f=new Error(_0x4370d3['error']||_0x4370d3['message']||_0x123240['statusText']);if(_0x4370d3['detail']!==undefined)_0x4a8d5f['detail']=_0x4370d3['detail'];throw _0x4a8d5f;}return await _0x123240['json']();},async 'updateExternalSkill'(_0x1d44f9){const _0x48b42b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1d44f9)+'/update',{'method':'POST'});if(!_0x48b42b['ok']){const _0x5874b2=await _0x48b42b['json']()['catch'](()=>({'error':_0x48b42b['statusText']})),_0x1747ce=new Error(_0x5874b2['error']||_0x5874b2['message']||_0x48b42b['statusText']);if(_0x5874b2['detail']!==undefined)_0x1747ce['detail']=_0x5874b2['detail'];throw _0x1747ce;}return await _0x48b42b['json']();},async 'updateSkillFlags'(_0x14ddaa,_0x48e7ed){const _0x5639c8=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x14ddaa)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x48e7ed})});if(!_0x5639c8['ok']){const _0xf94cb1=await _0x5639c8['json']()['catch'](()=>({'error':_0x5639c8['statusText']})),_0x247c7a=new Error(_0xf94cb1['error']||_0xf94cb1['message']||_0x5639c8['statusText']);if(_0xf94cb1['detail']!==undefined)_0x247c7a['detail']=_0xf94cb1['detail'];throw _0x247c7a;}return await _0x5639c8['json']();},async 'removeFromImportedRegistry'(_0x775278){const _0x123725=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x775278)+'/registry',{'method':'DELETE'});if(!_0x123725['ok']){const _0x25a8cc=await _0x123725['json']()['catch'](()=>({'error':_0x123725['statusText']})),_0x25bef5=new Error(_0x25a8cc['error']||_0x25a8cc['message']||_0x123725['statusText']);if(_0x25a8cc['detail']!==undefined)_0x25bef5['detail']=_0x25a8cc['detail'];throw _0x25bef5;}return await _0x123725['json']();},async 'getTeams'(){const _0x16771e=await fetch(API_BASE+'/teams');if(!_0x16771e['ok']){const _0xc83425=await _0x16771e['json']()['catch'](()=>({'message':_0x16771e['statusText']}));throw new Error(_0xc83425['message']||'Failed\x20to\x20get\x20teams');}return await _0x16771e['json']();},async 'getTeam'(_0x5463e7){const _0x38cad8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5463e7));if(!_0x38cad8['ok']){const _0x9fd4bb=await _0x38cad8['json']()['catch'](()=>({'message':_0x38cad8['statusText']}));throw new Error(_0x9fd4bb['message']||'Failed\x20to\x20get\x20team');}return await _0x38cad8['json']();},async 'createTeam'(_0x3a2bc7){const _0x2d0cfc=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a2bc7)});if(!_0x2d0cfc['ok']){const _0x52b86e=await _0x2d0cfc['json']()['catch'](()=>({'message':_0x2d0cfc['statusText']}));throw new Error(_0x52b86e['message']||'Failed\x20to\x20create\x20team');}return await _0x2d0cfc['json']();},async 'updateTeam'(_0x10b8df,_0x3f690d){const _0x5e2070=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x10b8df),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f690d)});if(!_0x5e2070['ok']){const _0x436442=await _0x5e2070['json']()['catch'](()=>({'message':_0x5e2070['statusText']}));throw new Error(_0x436442['message']||'Failed\x20to\x20update\x20team');}return await _0x5e2070['json']();},async 'deleteTeam'(_0x376bf0){const _0x593b31=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x376bf0),{'method':'DELETE'});if(!_0x593b31['ok']){const _0x3a3be5=await _0x593b31['json']()['catch'](()=>({'message':_0x593b31['statusText']}));throw new Error(_0x3a3be5['message']||'Failed\x20to\x20delete\x20team');}return await _0x593b31['json']();},async 'addTeamMember'(_0x42d915,_0x4a27ef){const _0x514c7c=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x42d915)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4a27ef})});if(!_0x514c7c['ok']){const _0x47ca74=await _0x514c7c['json']()['catch'](()=>({'message':_0x514c7c['statusText']}));throw new Error(_0x47ca74['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x514c7c['json']();},async 'removeTeamMember'(_0x5474ff,_0x5c9f7c){const _0x1fc331=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5474ff)+'/members/'+encodeURIComponent(_0x5c9f7c),{'method':'DELETE'});if(!_0x1fc331['ok']){const _0x5545d3=await _0x1fc331['json']()['catch'](()=>({'message':_0x1fc331['statusText']}));throw new Error(_0x5545d3['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1fc331['json']();},async 'getBindings'(_0x23e0b0={}){const _0x44112b=new URLSearchParams();if(_0x23e0b0['resource_type'])_0x44112b['set']('resource_type',_0x23e0b0['resource_type']);if(_0x23e0b0['resource_id'])_0x44112b['set']('resource_id',_0x23e0b0['resource_id']);if(_0x23e0b0['subject_type'])_0x44112b['set']('subject_type',_0x23e0b0['subject_type']);if(_0x23e0b0['subject_id'])_0x44112b['set']('subject_id',_0x23e0b0['subject_id']);const _0x42ac4f=_0x44112b['toString'](),_0x56cc49=await fetch(API_BASE+'/bindings'+(_0x42ac4f?'?'+_0x42ac4f:''));if(!_0x56cc49['ok']){const _0x16a23b=await _0x56cc49['json']()['catch'](()=>({'message':_0x56cc49['statusText']}));throw new Error(_0x16a23b['message']||'Failed\x20to\x20get\x20bindings');}return await _0x56cc49['json']();},async 'createBinding'(_0x2659f6){const _0x4b6709=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2659f6)});if(!_0x4b6709['ok']){const _0x3a1127=await _0x4b6709['json']()['catch'](()=>({'message':_0x4b6709['statusText']}));throw new Error(_0x3a1127['message']||'Failed\x20to\x20create\x20binding');}return await _0x4b6709['json']();},async 'updateBinding'(_0x18ecba,_0x304b4f){const _0x35fb5b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x18ecba),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x304b4f)});if(!_0x35fb5b['ok']){const _0xdbc691=await _0x35fb5b['json']()['catch'](()=>({'message':_0x35fb5b['statusText']}));throw new Error(_0xdbc691['message']||'Failed\x20to\x20update\x20binding');}return await _0x35fb5b['json']();},async 'deleteBinding'(_0x2ca0e1){const _0x5094b3=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2ca0e1),{'method':'DELETE'});if(!_0x5094b3['ok']){const _0x5bb9e8=await _0x5094b3['json']()['catch'](()=>({'message':_0x5094b3['statusText']}));throw new Error(_0x5bb9e8['message']||'Failed\x20to\x20delete\x20binding');}return await _0x5094b3['json']();},async 'getRoleDefinitions'(){const _0x3fa56e=await fetch(API_BASE+'/roles');if(!_0x3fa56e['ok']){const _0x331476=await _0x3fa56e['json']()['catch'](()=>({'message':_0x3fa56e['statusText']}));throw new Error(_0x331476['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x3fa56e['json']();},async 'getRoleDefinition'(_0x2286cd){const _0x5ad435=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2286cd));if(!_0x5ad435['ok']){const _0x3b33f8=await _0x5ad435['json']()['catch'](()=>({'message':_0x5ad435['statusText']}));throw new Error(_0x3b33f8['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x5ad435['json']();},async 'createRoleDefinition'(_0x5cd667){const _0x171490=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5cd667)});if(!_0x171490['ok']){const _0x2f713f=await _0x171490['json']()['catch'](()=>({'message':_0x171490['statusText']}));throw new Error(_0x2f713f['message']||_0x2f713f['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x171490['json']();},async 'updateRoleDefinition'(_0xb21e01,_0xd47223){const _0x8f964f=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xb21e01),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd47223)});if(!_0x8f964f['ok']){const _0x366b95=await _0x8f964f['json']()['catch'](()=>({'message':_0x8f964f['statusText']}));throw new Error(_0x366b95['message']||_0x366b95['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x8f964f['json']();},async 'deleteRoleDefinition'(_0x368f2b){const _0x1a9fc0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x368f2b),{'method':'DELETE'});if(!_0x1a9fc0['ok']){const _0x8db6db=await _0x1a9fc0['json']()['catch'](()=>({'message':_0x1a9fc0['statusText']}));throw new Error(_0x8db6db['message']||_0x8db6db['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x1a9fc0['json']();},async 'getAvailablePermissions'(){const _0x563458=await fetch(API_BASE+'/roles/available-permissions');if(!_0x563458['ok']){const _0x172abc=await _0x563458['json']()['catch'](()=>({'message':_0x563458['statusText']}));throw new Error(_0x172abc['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x563458['json']();},async 'getGitProviderAllowedTeams'(_0x456ca4){const _0x5761f8=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x456ca4)+'/allowed-teams');if(!_0x5761f8['ok']){const _0x2eb67c=await _0x5761f8['json']()['catch'](()=>({'message':_0x5761f8['statusText']}));throw new Error(_0x2eb67c['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5761f8['json']();},async 'setGitProviderAllowedTeams'(_0x4b2eb6,_0x3dc918){const _0x27674f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x4b2eb6)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3dc918})});if(!_0x27674f['ok']){const _0x49ea87=await _0x27674f['json']()['catch'](()=>({'message':_0x27674f['statusText']}));throw new Error(_0x49ea87['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x27674f['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 _0x173ca9=toastState['baseBottom'];toastState['toasts']['forEach'](_0x350b08=>{_0x350b08['el']['style']['bottom']=_0x173ca9+'px';const _0x34814f=_0x350b08['el']['offsetHeight']||toastState['defaultHeight'];_0x173ca9+=_0x34814f+toastState['gap'];});});}function removeToastById(_0x424197){const _0x57fc8a=toastState['toasts']['findIndex'](_0xf0ab31=>_0xf0ab31['id']===_0x424197);if(_0x57fc8a===-0x1)return;const _0x1937d2=toastState['toasts'][_0x57fc8a];if(_0x1937d2['timeoutId'])clearTimeout(_0x1937d2['timeoutId']);_0x1937d2['el']['classList']['remove']('show'),setTimeout(()=>_0x1937d2['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x57fc8a,0x1),repositionAllToasts();}function registerToast(_0x81ff68){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x81ff68),repositionAllToasts(),_0x81ff68['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(_0x412aa1){if(_0x412aa1===null||_0x412aa1===undefined)return'';return String(_0x412aa1)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x4ca0c9,_0x50c522){if(_0x4ca0c9&&typeof _0x4ca0c9==='object'&&!Array['isArray'](_0x4ca0c9))return{'code':typeof _0x4ca0c9['text']==='string'?_0x4ca0c9['text']:'','language':typeof _0x4ca0c9['lang']==='string'?_0x4ca0c9['lang']:''};return{'code':typeof _0x4ca0c9==='string'?_0x4ca0c9:'','language':typeof _0x50c522==='string'?_0x50c522:''};}function buildMermaidBlock(_0xe21a9d){const _0x4658f0=String(_0xe21a9d||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x4658f0))+'\x22>'+escapeHtmlValue(_0x4658f0)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x37b0df=new marked['Renderer'](),_0x1fefee=_0x37b0df['code']['bind'](_0x37b0df);return _0x37b0df['code']=function(_0x3921e5,_0x3b7ab1,..._0x3f85e4){const {code:_0x55adc5,language:_0xe34154}=getMarkdownCodeBlockPayload(_0x3921e5,_0x3b7ab1),_0x35941a=String(_0xe34154||'')['trim']()['toLowerCase']();if(_0x35941a==='mermaid')return buildMermaidBlock(_0x55adc5);const _0x233524=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x233524&&_0x35941a)try{const _0xc5a45d=_0x233524['getLanguage'](_0x35941a)?_0x35941a:'plaintext',_0x582e63=_0x233524['highlight'](_0x55adc5,{'language':_0xc5a45d})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x35941a)+'\x22>'+_0x582e63+'</code></pre>';}catch(_0x31dc0e){console['error']('Syntax\x20highlighting\x20error:',_0x31dc0e);}return _0x1fefee(_0x3921e5,_0x3b7ab1,..._0x3f85e4);},sharedMarkedRenderer=_0x37b0df,_0x37b0df;}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 _0x18eb50=window['mermaid'];if(!_0x18eb50||typeof _0x18eb50['initialize']!=='function')return _0x18eb50||null;return _0x18eb50['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x18eb50;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2ea11d,_0x25c389)=>{const _0x7764c5=()=>_0x2ea11d(configureMermaidInstance()),_0x3b3aee=()=>{mermaidLoadPromise=null,_0x25c389(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x258ffb=document['getElementById'](MERMAID_SCRIPT_ID);!_0x258ffb&&(_0x258ffb=document['createElement']('script'),_0x258ffb['id']=MERMAID_SCRIPT_ID,_0x258ffb['src']=MERMAID_SCRIPT_SRC,_0x258ffb['async']=!![],document['head']['appendChild'](_0x258ffb));if(window['mermaid']){_0x7764c5();return;}_0x258ffb['addEventListener']('load',_0x7764c5,{'once':!![]}),_0x258ffb['addEventListener']('error',_0x3b3aee,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x5d52df){const _0x44ac54=_0x5d52df['getAttribute']('data-mermaid-source');if(!_0x44ac54)return null;let _0x5ef99a=_0x44ac54;try{_0x5ef99a=decodeURIComponent(_0x44ac54);}catch{}return _0x5d52df['textContent']=_0x5ef99a,_0x5d52df['removeAttribute']('data-processed'),_0x5d52df['removeAttribute']('aria-roledescription'),_0x5d52df['removeAttribute']('role'),_0x5d52df['removeAttribute']('aria-label'),_0x5ef99a;}function collectMermaidNodes(_0x2cbac7,_0x203a0f){if(!(_0x2cbac7 instanceof Element))return;_0x2cbac7['matches']('.mermaid[data-mermaid-source]')&&_0x203a0f['add'](_0x2cbac7),_0x2cbac7['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1a4da5=>{_0x203a0f['add'](_0x1a4da5);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x7cd64e=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x4b4d06=>setTimeout(_0x4b4d06,0x0);_0x7cd64e(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x21ea65=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x21ea65);});});}function queueMermaidRender(_0x28b339){const _0x438c5c=new Set();_0x28b339 instanceof Document||_0x28b339 instanceof DocumentFragment?_0x28b339['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3ca737=>_0x438c5c['add'](_0x3ca737)):collectMermaidNodes(_0x28b339,_0x438c5c);if(_0x438c5c['size']===0x0)return;_0x438c5c['forEach'](_0x3977ca=>pendingMermaidNodes['add'](_0x3977ca)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x352c4d=Array['from'](pendingMermaidNodes)['filter'](_0x86acda=>_0x86acda['isConnected']);pendingMermaidNodes['clear']();if(_0x352c4d['length']===0x0)return;const _0x2ca665=await loadMermaid();if(!_0x2ca665)return;configureMermaidInstance();const _0x215026=getMermaidTheme();for(const _0x66fc9c of _0x352c4d){const _0x2c8f43=_0x66fc9c['getAttribute']('data-mermaid-source');if(!_0x2c8f43)continue;const _0x8d7de4=_0x66fc9c['getAttribute']('data-processed')==='true';if(_0x8d7de4&&_0x66fc9c['dataset']['mermaidTheme']===_0x215026)continue;restoreMermaidSource(_0x66fc9c);try{if(typeof _0x2ca665['run']==='function')await _0x2ca665['run']({'nodes':[_0x66fc9c]});else typeof _0x2ca665['init']==='function'&&_0x2ca665['init'](undefined,[_0x66fc9c]);_0x66fc9c['dataset']['mermaidTheme']=_0x215026,delete _0x66fc9c['dataset']['mermaidError'];}catch(_0x4ac847){console['error']('Mermaid\x20render\x20failed:',_0x4ac847),restoreMermaidSource(_0x66fc9c),_0x66fc9c['dataset']['mermaidError']='true',delete _0x66fc9c['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x209c7b=>{_0x209c7b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x209c7b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4c6ed5=>{_0x4c6ed5['forEach'](_0x167662=>{_0x167662['addedNodes']['forEach'](_0x2b44bc=>{_0x2b44bc['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2b44bc);});});}),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'(_0x430288){const _0x3962e7=new Date(_0x430288),_0x451e49=new Date(),_0xe0732=_0x451e49-_0x3962e7,_0x33a076=Math['floor'](_0xe0732/0x3e8),_0x597b90=Math['floor'](_0x33a076/0x3c),_0x345a94=Math['floor'](_0x597b90/0x3c),_0x31705d=Math['floor'](_0x345a94/0x18);if(_0x33a076<0x3c)return'now';if(_0x597b90<0x3c)return _0x597b90+'m\x20ago';if(_0x345a94<0x18)return _0x345a94+'h\x20ago';return _0x31705d+'d\x20ago';},'getStatusIcon'(_0x13801a){switch(_0x13801a){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x8dad52){switch(_0x8dad52){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'(_0x1c5885,_0x3f21b5=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x13350c={};_0x13350c['text/plain']=new Blob([_0x1c5885],{'type':'text/plain'});_0x3f21b5&&(_0x13350c['text/html']=new Blob([_0x3f21b5],{'type':'text/html'}));const _0x5b5a24=new ClipboardItem(_0x13350c);return await navigator['clipboard']['write']([_0x5b5a24]),!![];}catch(_0x3d1372){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x3d1372);}try{const _0x2266c3=_0x3ded84=>{_0x3ded84['preventDefault'](),_0x3ded84['clipboardData']['setData']('text/plain',_0x1c5885),_0x3f21b5&&_0x3ded84['clipboardData']['setData']('text/html',_0x3f21b5);};document['addEventListener']('copy',_0x2266c3);const _0x256c86=document['execCommand']('copy');document['removeEventListener']('copy',_0x2266c3);if(_0x256c86)return!![];}catch(_0x1c00b4){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1c00b4);}try{const _0x40f87f=document['createElement']('textarea');_0x40f87f['value']=_0x1c5885,_0x40f87f['style']['position']='fixed',_0x40f87f['style']['opacity']='0',_0x40f87f['style']['pointerEvents']='none',document['body']['appendChild'](_0x40f87f),_0x40f87f['select']();const _0x57d5be=document['execCommand']('copy');return document['body']['removeChild'](_0x40f87f),_0x57d5be;}catch(_0x4ed0e2){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4ed0e2),![];}},'showToast'(_0x4a92e8,_0x5adc65='info'){const _0x55476b=getNextToastId(),_0x21f52a=document['createElement']('div');_0x21f52a['className']='toast\x20toast-'+_0x5adc65,_0x21f52a['textContent']=_0x4a92e8,_0x21f52a['dataset']['toastId']=_0x55476b,document['body']['appendChild'](_0x21f52a);const _0x15e9f5=_0x5adc65==='error'?0x2710:0xbb8,_0x4e131c=setTimeout(()=>{removeToastById(_0x55476b);},_0x15e9f5),_0x15103b={'id':_0x55476b,'el':_0x21f52a,'timeoutId':_0x4e131c};return registerToast(_0x15103b),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x21f52a['classList']['add']('show');});}),_0x55476b;},'showError'(_0x2f3dc1){console['error'](_0x2f3dc1);const _0x8c7bce=typeof _0x2f3dc1==='string'?_0x2f3dc1:_0x2f3dc1['message']||'An\x20error\x20occurred';this['showToast'](_0x8c7bce,'error');},'showSuccess'(_0x342635){this['showToast'](_0x342635,'success');},'capitalize'(_0x20b1d0){if(!_0x20b1d0)return'';return _0x20b1d0['charAt'](0x0)['toUpperCase']()+_0x20b1d0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2b0411){return escapeHtmlValue(_0x2b0411);},'ansiToHtml'(_0x2bb8e0){if(_0x2bb8e0===null||_0x2bb8e0===undefined)return'';let _0x573df8=this['escapeHtml'](_0x2bb8e0);const _0xa2e3e7={'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'},_0x13d3fc={'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 _0x5e6aa6=0x0;return _0x573df8=_0x573df8['replace'](/\x1b\[([0-9;]*)m/g,(_0x525f75,_0x54dd4f)=>{if(!_0x54dd4f||_0x54dd4f==='0'){const _0x505ca2='</span>'['repeat'](_0x5e6aa6);return _0x5e6aa6=0x0,_0x505ca2;}const _0x203bdf=_0x54dd4f['split'](';'),_0x2a073a=[];for(const _0x1bdfb4 of _0x203bdf){if(_0x1bdfb4==='1')_0x2a073a['push']('font-weight:bold');else{if(_0x1bdfb4==='2')_0x2a073a['push']('opacity:0.7');else{if(_0x1bdfb4==='3')_0x2a073a['push']('font-style:italic');else{if(_0x1bdfb4==='4')_0x2a073a['push']('text-decoration:underline');else{if(_0x1bdfb4==='9')_0x2a073a['push']('text-decoration:line-through');else{if(_0xa2e3e7[_0x1bdfb4])_0x2a073a['push']('color:'+_0xa2e3e7[_0x1bdfb4]);else{if(_0x13d3fc[_0x1bdfb4])_0x2a073a['push']('background-color:'+_0x13d3fc[_0x1bdfb4]);}}}}}}}if(_0x2a073a['length']>0x0)return _0x5e6aa6++,'<span\x20style=\x22'+_0x2a073a['join'](';')+'\x22>';return'';}),_0x573df8+='</span>'['repeat'](_0x5e6aa6),_0x573df8=_0x573df8['replace'](/\\u001b\[([0-9;]*)m/g,(_0x58bd3b,_0x16273c)=>{if(!_0x16273c||_0x16273c==='0')return'';const _0x486298=_0x16273c['split'](';'),_0x5bcd41=[];for(const _0x2113d9 of _0x486298){if(_0x2113d9==='1')_0x5bcd41['push']('font-weight:bold');else{if(_0xa2e3e7[_0x2113d9])_0x5bcd41['push']('color:'+_0xa2e3e7[_0x2113d9]);else{if(_0x13d3fc[_0x2113d9])_0x5bcd41['push']('background-color:'+_0x13d3fc[_0x2113d9]);}}}if(_0x5bcd41['length']>0x0)return'<span\x20style=\x22'+_0x5bcd41['join'](';')+'\x22>';return'';}),_0x573df8;},'showModal'({title:_0xe1df3a,content:_0x5e7d66,buttons:buttons=[]}){const _0x94f9b='\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'](_0xe1df3a)+'</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'+_0x5e7d66+'\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']((_0x7ae3e1,_0x36a6fd)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x7ae3e1['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x36a6fd+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x7ae3e1['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',_0x58bd74=document['createElement']('div');_0x58bd74['id']='utils-modal',_0x58bd74['className']='modal',_0x58bd74['innerHTML']=_0x94f9b,document['body']['appendChild'](_0x58bd74);const _0x5f29df=document['getElementById']('utils-modal-close');_0x5f29df&&_0x5f29df['addEventListener']('click',()=>this['hideModal']());const _0x25cee7=_0x58bd74['querySelectorAll']('[data-btn-index]');_0x25cee7['forEach'](_0x3edc80=>{const _0x4e96c0=parseInt(_0x3edc80['dataset']['btnIndex']);buttons[_0x4e96c0]?.['onClick']&&_0x3edc80['addEventListener']('click',buttons[_0x4e96c0]['onClick']);});const _0x4182a2=document['getElementById']('utils-modal-overlay');_0x4182a2&&_0x4182a2['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x15fad8=document['getElementById']('utils-modal');_0x15fad8&&_0x15fad8['remove']();},'parseKeyValuePairs'(_0x1e0ca5){const _0x4b097a={};if(!_0x1e0ca5)return _0x4b097a;return _0x1e0ca5['split'](/\r?\n/)['map'](_0x24f356=>_0x24f356['trim']())['filter'](Boolean)['forEach'](_0x5ca86b=>{const _0x2e9ec0=_0x5ca86b['indexOf']('=');if(_0x2e9ec0>0x0){const _0x55ef19=_0x5ca86b['slice'](0x0,_0x2e9ec0)['trim'](),_0x5decf0=_0x5ca86b['slice'](_0x2e9ec0+0x1)['trim']();if(_0x55ef19)_0x4b097a[_0x55ef19]=_0x5decf0;}}),_0x4b097a;},'debounce'(_0x15682b,_0x2ddfdf=0xfa){let _0x490e15=null;return(..._0x126d46)=>{clearTimeout(_0x490e15),_0x490e15=setTimeout(()=>_0x15682b['apply'](this,_0x126d46),_0x2ddfdf);};},'formatTimestamp'(_0x1ff68c){if(!_0x1ff68c)return'N/A';const _0x51a747=new Date(_0x1ff68c);return _0x51a747['toLocaleDateString']()+'\x20'+_0x51a747['toLocaleTimeString']();},'getQueryParams'(){const _0x484643=new URLSearchParams(window['location']['search']),_0x367342={};for(const [_0x1bcede,_0x5daced]of _0x484643){_0x367342[_0x1bcede]=_0x5daced;}return _0x367342;},'formatDuration'(_0x8a76eb,_0x1a4c9f){if(!_0x8a76eb)return'N/A';const _0x4b49f4=new Date(_0x8a76eb),_0x38bf28=_0x1a4c9f?new Date(_0x1a4c9f):new Date(),_0x4ec168=_0x38bf28-_0x4b49f4;if(_0x4ec168<0x0)return'0s';const _0x54b5fb=Math['floor'](_0x4ec168/0x3e8),_0x52d5eb=Math['floor'](_0x54b5fb/0x3c),_0x96e954=Math['floor'](_0x52d5eb/0x3c),_0x319c08=Math['floor'](_0x96e954/0x18);if(_0x54b5fb<0x3c)return _0x54b5fb+'s';if(_0x52d5eb<0x3c)return _0x52d5eb+'m\x20'+_0x54b5fb%0x3c+'s';if(_0x96e954<0x18)return _0x96e954+'h\x20'+_0x52d5eb%0x3c+'m\x20'+_0x54b5fb%0x3c+'s';return _0x319c08+'d\x20'+_0x96e954%0x18+'h\x20'+_0x52d5eb%0x3c+'m';},'renderMarkdown'(_0x415f44,_0x3b9406={}){if(!_0x415f44)return'';_0x415f44=this['rewriteAttachmentLinks'](_0x415f44,_0x3b9406),_0x415f44=this['rewriteColorSyntax'](_0x415f44);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x415f44,_0x3b9406);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x415f44);}catch(_0x441d62){return console['error']('Markdown\x20parsing\x20error:',_0x441d62),this['renderMarkdownFallback'](_0x415f44,_0x3b9406);}},'rewriteAttachmentLinks'(_0x40e751,_0x41bc7d={}){const _0xc340ad=typeof _0x41bc7d['resolveAttachmentUrl']==='function'?_0x41bc7d['resolveAttachmentUrl']:_0x41bc7d['taskId']?_0x3f46af=>API_BASE+'/tasks/'+_0x41bc7d['taskId']+'/attachments/'+encodeURIComponent(_0x3f46af):null;if(!_0xc340ad)return _0x40e751;return String(_0x40e751)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x30b25d,_0x434d3b)=>{const _0x3eab92=String(_0x434d3b||'')['trim']();if(!_0x3eab92)return _0x30b25d;let _0x51a074=_0x3eab92;try{_0x51a074=decodeURIComponent(_0x3eab92);}catch{}const _0x527030=_0xc340ad(_0x51a074);if(!_0x527030)return _0x30b25d;return']('+_0x527030+')';});},'rewriteColorSyntax'(_0x58862d){if(!_0x58862d)return _0x58862d;return String(_0x58862d)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x23252f,_0x30d0b1,_0x143e61)=>{const _0x177740=this['rewriteColorSyntax'](_0x143e61);return'<span\x20style=\x22color:\x20'+_0x30d0b1+'\x22>'+_0x177740+'</span>';});},'renderMarkdownFallback'(_0x37a477,_0x25e9a0={}){if(!_0x37a477)return'';_0x37a477=_0x37a477['replace'](/\r\n/g,'\x0a'),_0x37a477=_0x37a477['replace'](/\r/g,'\x0a'),_0x37a477=this['rewriteAttachmentLinks'](_0x37a477,_0x25e9a0);let _0x360bf6=this['escapeHtml'](_0x37a477);return _0x360bf6=_0x360bf6['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x360bf6=_0x360bf6['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x360bf6=_0x360bf6['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x360bf6=_0x360bf6['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x360bf6=_0x360bf6['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x360bf6=_0x360bf6['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x360bf6=_0x360bf6['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x360bf6=_0x360bf6['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x360bf6=_0x360bf6['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x360bf6=_0x360bf6['replace'](/\n\n/g,'</p><p>'),_0x360bf6=_0x360bf6['replace'](/\n/g,'<br>'),'<p>'+_0x360bf6+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1f779a=new Uint8Array(0x10);crypto['getRandomValues'](_0x1f779a),_0x1f779a[0x6]=_0x1f779a[0x6]&0xf|0x40,_0x1f779a[0x8]=_0x1f779a[0x8]&0x3f|0x80;const _0x366f4e=Array['from'](_0x1f779a,_0x27a581=>_0x27a581['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x366f4e['slice'](0x0,0x8)+'-'+_0x366f4e['slice'](0x8,0xc)+'-'+_0x366f4e['slice'](0xc,0x10)+'-'+_0x366f4e['slice'](0x10,0x14)+'-'+_0x366f4e['slice'](0x14);}};export class CustomSelect{constructor(_0x1332d4,_0x424cb3={}){this['nativeSelect']=_0x1332d4,this['options']=_0x424cb3,this['isOpen']=![],this['selectedValue']=_0x1332d4['value']||'',this['searchable']=_0x424cb3['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x19ed63=document['createElement']('div');_0x19ed63['className']='custom-select';const _0x27163b=document['createElement']('div');_0x27163b['className']='custom-select-trigger',_0x27163b['setAttribute']('tabindex','0'),_0x27163b['setAttribute']('role','button'),_0x27163b['setAttribute']('aria-haspopup','listbox');const _0x2bac04=document['createElement']('span');_0x2bac04['className']='custom-select-trigger-text';const _0x5b10d6=document['createElement']('span');_0x5b10d6['className']='custom-select-arrow',_0x5b10d6['textContent']='▼',_0x27163b['appendChild'](_0x2bac04),_0x27163b['appendChild'](_0x5b10d6);const _0x52e8f1=document['createElement']('div');_0x52e8f1['className']='custom-select-dropdown',_0x52e8f1['setAttribute']('role','listbox');if(this['searchable']){const _0x18010=document['createElement']('div');_0x18010['className']='custom-select-search';const _0x16e781=document['createElement']('input');_0x16e781['type']='text',_0x16e781['className']='custom-select-search-input',_0x16e781['placeholder']='Type\x20to\x20search...',_0x16e781['setAttribute']('aria-label','Search\x20options'),_0x16e781['addEventListener']('input',_0x1fdd8a=>{this['searchQuery']=_0x1fdd8a['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x16e781['addEventListener']('keydown',_0x303078=>{if(_0x303078['key']==='Escape')_0x303078['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x303078['key']==='Enter'){_0x303078['preventDefault'](),_0x303078['stopPropagation']();const _0x545f84=_0x52e8f1['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x545f84){const _0x1f8f2b=_0x545f84['getAttribute']('data-value');this['select'](_0x1f8f2b);}}}}),_0x18010['appendChild'](_0x16e781),_0x52e8f1['appendChild'](_0x18010),this['searchInput']=_0x16e781;}const _0xe3a238=document['createElement']('div');_0xe3a238['className']='custom-select-options',_0x52e8f1['appendChild'](_0xe3a238),_0x19ed63['appendChild'](_0x27163b),_0x19ed63['appendChild'](_0x52e8f1),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x19ed63,this['nativeSelect']),this['wrapper']=_0x19ed63,this['trigger']=_0x27163b,this['triggerText']=_0x2bac04,this['dropdown']=_0x52e8f1,this['optionsContainer']=_0xe3a238,_0x27163b['addEventListener']('click',()=>this['toggle']()),_0x27163b['addEventListener']('keydown',_0x286d93=>this['handleKeydown'](_0x286d93)),document['addEventListener']('click',_0x14172d=>{!_0x19ed63['contains'](_0x14172d['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0xeeaad9=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0xeeaad9['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0xded45a=new MutationObserver(()=>{this['updateDisabledState']();});_0xded45a['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x2d9fdd=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x2d9fdd['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x2c75a5=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x2c75a5),this['trigger']['setAttribute']('aria-disabled',_0x2c75a5?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x2c75a5?'-1':'0'),_0x2c75a5&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x1c8c49=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x543112=_0x1c8c49['filter'](_0x19fc96=>!_0x19fc96['disabled']&&!_0x19fc96['hidden']);_0x1c8c49['forEach']((_0x2d607d,_0x2bd1da)=>{const _0x737125=document['createElement']('div');_0x737125['className']='custom-select-option',_0x737125['textContent']=_0x2d607d['textContent'],_0x737125['setAttribute']('data-value',_0x2d607d['value']),_0x737125['setAttribute']('data-index',_0x2bd1da),_0x737125['setAttribute']('role','option'),_0x2d607d['disabled']?_0x737125['classList']['add']('disabled'):_0x737125['addEventListener']('click',()=>this['select'](_0x2d607d['value'])),_0x2d607d['value']===this['selectedValue']&&_0x737125['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x737125),this['allOptions']['push']({'element':_0x737125,'text':_0x2d607d['textContent']['toLowerCase'](),'value':_0x2d607d['value'],'disabled':_0x2d607d['disabled']});});if(this['searchable']&&this['searchInput']){const _0x3db754=this['searchInput']['parentElement'];_0x543112['length']>0x3?_0x3db754['style']['display']='':_0x3db754['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x3057a7=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3ee95c=>{if(!_0x3057a7||_0x3ee95c['disabled'])_0x3ee95c['element']['style']['display']='';else{const _0x41c979=_0x3ee95c['text']['includes'](_0x3057a7);_0x3ee95c['element']['style']['display']=_0x41c979?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x527b0c){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x527b0c,this['nativeSelect']['value']=_0x527b0c;const _0x1ca8a9=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1ca8a9),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x4335af=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x4335af&&(this['triggerText']['textContent']=_0x4335af['textContent'],_0x4335af['disabled']||_0x4335af['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x183756=>{_0x183756['getAttribute']('data-value')===this['selectedValue']?_0x183756['classList']['add']('selected'):_0x183756['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 _0x265c20=window['getComputedStyle'](this['dropdown']);if(_0x265c20['position']==='fixed'){const _0x374695=this['trigger']['getBoundingClientRect'](),_0x4e5893=parseInt(_0x265c20['maxHeight'])||0xc8,_0x6d5ca1=window['innerHeight'],_0x317ad4=_0x6d5ca1-_0x374695['bottom'],_0x7b8127=_0x374695['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x34a7f1;_0x317ad4<_0x4e5893&&_0x7b8127>_0x317ad4?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x6d5ca1-_0x374695['top']+'px',_0x34a7f1=Math['min'](_0x4e5893,_0x7b8127-0xa),this['dropdown']['style']['maxHeight']=_0x34a7f1+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x374695['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x34a7f1=Math['min'](_0x4e5893,_0x317ad4-0xa),this['dropdown']['style']['maxHeight']=_0x34a7f1+'px');if(this['optionsContainer']){let _0x28b6a1=_0x34a7f1;if(this['searchInput']){const _0x2d4470=this['searchInput']['parentElement'];_0x2d4470&&(_0x28b6a1-=_0x2d4470['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x28b6a1)+'px';}this['dropdown']['style']['left']=_0x374695['left']+'px',this['dropdown']['style']['width']=_0x374695['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x37112b=this['searchInput']['parentElement'];_0x37112b&&_0x37112b['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'](_0x55670e){if(this['nativeSelect']['disabled'])return;if(_0x55670e['key']==='Enter'||_0x55670e['key']==='\x20')_0x55670e['preventDefault'](),this['toggle']();else _0x55670e['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1c093a='\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',_0x1c093a),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x1cf013=document['getElementById']('confirm-dialog-close'),_0x21bb3d=document['getElementById']('confirm-dialog-cancel'),_0x15ac17=document['getElementById']('confirm-dialog-confirm'),_0x1f2b32=this['_modal']['querySelector']('.modal-overlay');_0x1cf013['addEventListener']('click',()=>this['_resolve'](![])),_0x21bb3d['addEventListener']('click',()=>this['_resolve'](![])),_0x15ac17['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f2b32['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x38e338=>{if(_0x38e338['key']==='Escape')_0x38e338['preventDefault'](),this['_resolve'](![]);else _0x38e338['key']==='Enter'&&(_0x38e338['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4cb5ed,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x38c9f6=>{this['_resolvePromise']=_0x38c9f6,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4cb5ed;const _0x3b7483=document['getElementById']('confirm-dialog-cancel'),_0x267816=document['getElementById']('confirm-dialog-confirm');_0x3b7483['textContent']=cancelText,_0x267816['textContent']=confirmText,_0x267816['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x267816['focus']();});},'_resolve'(_0xcaad46){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0xcaad46),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1521b1,_0x4c1b34={}){this['container']=_0x1521b1,this['options']={'placeholder':_0x4c1b34['placeholder']||'Type\x20to\x20search...','maxItems':_0x4c1b34['maxItems']||0x64,'loadItems':_0x4c1b34['loadItems']||(async()=>[]),'renderItem':_0x4c1b34['renderItem']||(_0x59796c=>({'primary':String(_0x59796c),'secondary':''})),'onSelect':_0x4c1b34['onSelect']||(()=>{}),'filterItems':_0x4c1b34['filterItems']||null,'getItemValue':_0x4c1b34['getItemValue']||(_0x111d81=>_0x111d81),'sortItems':_0x4c1b34['sortItems']||null,'debounceMs':_0x4c1b34['debounceMs']||0xc8,'minCharsForSearch':_0x4c1b34['minCharsForSearch']||0x0,'emptyMessage':_0x4c1b34['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x4c1b34['loadingMessage']||'Loading...','preload':_0x4c1b34['preload']!==![],'searchMode':_0x4c1b34['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',_0x55485e=>this['onBlur'](_0x55485e)),this['input']['addEventListener']('input',_0x5d7cd4=>this['onInput'](_0x5d7cd4)),this['input']['addEventListener']('keydown',_0x2263c6=>this['onKeydown'](_0x2263c6)),this['clearBtn']['addEventListener']('mousedown',_0x5b52c6=>{_0x5b52c6['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x3dc53f=>{_0x3dc53f['preventDefault']();}),document['addEventListener']('click',_0x35d26e=>{!this['wrapper']['contains'](_0x35d26e['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(_0x3d7bb6){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x3d7bb6);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x488e7e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x52852d){const _0x1acc6e=_0x52852d['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1acc6e);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1acc6e):this['loadAndShow'](_0x1acc6e);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x699b0e){switch(_0x699b0e['key']){case'ArrowDown':_0x699b0e['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x699b0e['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x699b0e['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x699b0e['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4476ba){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x280f80=this['selectedIndex']+_0x4476ba;if(_0x280f80>=0x0&&_0x280f80<this['filteredItems']['length']){this['selectedIndex']=_0x280f80,this['updateSelectionHighlight']();const _0x35a195=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x35a195[this['selectedIndex']]&&_0x35a195[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x4a7846=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4a7846['forEach']((_0xb3c820,_0x12ee58)=>{_0xb3c820['classList']['toggle']('keyboard-selected',_0x12ee58===this['selectedIndex']);});}async['loadAndShow'](_0x156c29){this['showLoading']();try{const _0x193c64=await this['options']['loadItems'](_0x156c29);if(this['options']['searchMode']==='server'){let _0x50b4ce=_0x193c64;this['options']['sortItems']&&(_0x50b4ce=this['options']['sortItems']([..._0x193c64]));this['filteredItems']=_0x50b4ce;const _0x4c1181=this['filteredItems']['length']>=this['options']['maxItems'];_0x4c1181&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x4c1181),this['open']();}else this['allItems']=_0x193c64,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x156c29);}catch(_0x201c38){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x201c38),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x10c488){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x10c488):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x39b4d1=this['filteredItems']['length']>=this['options']['maxItems'];_0x39b4d1&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x39b4d1),this['open']();}['renderItems'](_0x5de065){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']((_0x41f240,_0x295cd6)=>{const _0xf20c4c=document['createElement']('div');_0xf20c4c['className']='autocomplete-select-item',_0xf20c4c['setAttribute']('role','option'),_0xf20c4c['setAttribute']('data-index',_0x295cd6);const _0x2e1fd1=this['options']['renderItem'](_0x41f240);let _0x3f3bf2='';_0x2e1fd1['icon']&&(_0x3f3bf2='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x2e1fd1['iconClass']||'')+'\x22>'+_0x2e1fd1['icon']+'</span>'),_0xf20c4c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3f3bf2+'\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'](_0x2e1fd1['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2e1fd1['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x2e1fd1['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xf20c4c['addEventListener']('click',()=>{this['selectItem'](_0x41f240);}),_0xf20c4c['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x295cd6,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xf20c4c);}),_0x5de065?(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'](_0x2a1471){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x2a1471)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x21fe5e){this['selectedItem']=_0x21fe5e;const _0x568d95=this['options']['renderItem'](_0x21fe5e);this['input']['value']=_0x568d95['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x21fe5e);}['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'](_0x282266){if(_0x282266){this['selectedItem']=_0x282266;const _0x58bd76=this['options']['renderItem'](_0x282266);this['input']['value']=_0x58bd76['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4ddf76){this['allItems']=_0x4ddf76,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'](_0xbb4820){this['input']['placeholder']=_0xbb4820;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0xea75db=null){const _0x43627e=document['getElementById']('admin-menu-container'),_0x23e29c=document['getElementById']('admin-menu-btn'),_0x587a7a=document['getElementById']('admin-menu');if(!_0x43627e||!_0x23e29c||!_0x587a7a)return;try{!_0xea75db&&(_0xea75db=await API['getCurrentUser']());if(_0xea75db){const _0xc6924c=window['Permissions'],_0x8e5df5=_0xc6924c['hasServerPermission'](_0xea75db,'*')||_0xc6924c['hasEnvPermission'](_0xea75db,'environments:manage')||_0xc6924c['hasServerPermission'](_0xea75db,'users:create')||_0xc6924c['hasTeamPermission'](_0xea75db,'teams:manage')||_0xc6924c['hasEnvPermission'](_0xea75db,'environments:view_details');if(!_0x8e5df5)return;_0x43627e['hidden']=![];if(!_0xc6924c['hasServerPermission'](_0xea75db,'*')){const _0x559eb3=_0x587a7a['querySelectorAll']('.admin-menu-item');_0x559eb3['forEach'](_0x4425ed=>{const _0x1cf113=_0x4425ed['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1cf113==='Users'&&!_0xc6924c['hasServerPermission'](_0xea75db,'users:create')&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Skills'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Server\x20Settings'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Server\x20Administration'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Git\x20History'&&(_0x4425ed['hidden']=!![]),_0x1cf113==='Roles'&&(_0x4425ed['hidden']=!![]);});}_0x23e29c['addEventListener']('click',_0x29a5de=>{_0x29a5de['stopPropagation']();const _0x3ed0cd=document['getElementById']('actions-menu');if(_0x3ed0cd)_0x3ed0cd['hidden']=!![];_0x587a7a['hidden']=!_0x587a7a['hidden'];}),document['addEventListener']('click',_0x349e02=>{!_0x587a7a['hidden']&&!_0x23e29c['contains'](_0x349e02['target'])&&!_0x587a7a['contains'](_0x349e02['target'])&&(_0x587a7a['hidden']=!![]);}),document['addEventListener']('keydown',_0x18b65c=>{_0x18b65c['key']==='Escape'&&!_0x587a7a['hidden']&&(_0x587a7a['hidden']=!![]);});}}catch(_0x510eb5){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x510eb5['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};