@profoundlogic/coderflow-server 0.6.9 → 0.7.1

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 (182) hide show
  1. package/dist/base-image/Dockerfile +3 -0
  2. package/dist/base-image/entrypoint.sh +13 -0
  3. package/dist/base-image/standard-instructions/ibmi-database-sql.md +11 -0
  4. package/dist/base-image/standard-instructions/ibmi-exploratory-verification.md +40 -0
  5. package/dist/base-image/standard-instructions/ibmi-output-requirements.md +6 -0
  6. package/dist/base-image/standard-instructions/output-requirements.md +18 -0
  7. package/dist/base-image/standard-instructions/screenshot-guidelines.md +17 -0
  8. package/dist/coder-server.js +1 -1
  9. package/dist/config.js +1 -1
  10. package/dist/lib/agent-keepalive.js +1 -1
  11. package/dist/lib/agent-models.js +1 -1
  12. package/dist/lib/api-keys.js +1 -1
  13. package/dist/lib/apiKeys.js +1 -1
  14. package/dist/lib/app-server-ports.js +1 -1
  15. package/dist/lib/auto-judge.js +1 -1
  16. package/dist/lib/automation-service.js +1 -1
  17. package/dist/lib/basic-auth.js +1 -1
  18. package/dist/lib/bindings.js +1 -1
  19. package/dist/lib/build-history.js +1 -1
  20. package/dist/lib/build-output-service.js +1 -1
  21. package/dist/lib/build-scheduler.js +1 -1
  22. package/dist/lib/build-service.js +1 -1
  23. package/dist/lib/ca-certificates.js +1 -1
  24. package/dist/lib/claude-oauth-refresh.js +1 -1
  25. package/dist/lib/cli/build.js +1 -1
  26. package/dist/lib/cli/cleanup-users.js +1 -1
  27. package/dist/lib/cli/config-command.js +1 -1
  28. package/dist/lib/cli/config.js +1 -1
  29. package/dist/lib/cli/create-user.js +1 -1
  30. package/dist/lib/cli/grant-admin.js +1 -1
  31. package/dist/lib/cli/init.js +1 -1
  32. package/dist/lib/cli/jira.js +1 -1
  33. package/dist/lib/cli/license.js +1 -1
  34. package/dist/lib/cli/list-roles.js +1 -1
  35. package/dist/lib/cli/list-users.js +1 -1
  36. package/dist/lib/cli/server-manager.js +1 -1
  37. package/dist/lib/cli/set-password.js +1 -1
  38. package/dist/lib/config-migration.js +1 -1
  39. package/dist/lib/container-credential-sync.js +1 -1
  40. package/dist/lib/container-tokens.js +1 -1
  41. package/dist/lib/data-dir.js +1 -1
  42. package/dist/lib/deployment-history.js +1 -1
  43. package/dist/lib/deployment-service.js +1 -1
  44. package/dist/lib/docker-utils.js +1 -1
  45. package/dist/lib/email.js +1 -1
  46. package/dist/lib/emailTemplates.js +1 -1
  47. package/dist/lib/entitlement.js +1 -1
  48. package/dist/lib/external-connections.js +1 -1
  49. package/dist/lib/fetch-utils.js +1 -1
  50. package/dist/lib/git-commit-details-route.js +1 -1
  51. package/dist/lib/git-history-diff-guardrails.js +1 -1
  52. package/dist/lib/git-provider-service.js +1 -1
  53. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  54. package/dist/lib/git-provider-setup/index.js +1 -1
  55. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  56. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  57. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  58. package/dist/lib/git-providers/github-app-provider.js +1 -1
  59. package/dist/lib/git-providers/index.js +1 -1
  60. package/dist/lib/git-providers/provider-factory.js +1 -1
  61. package/dist/lib/git-providers/provider-interface.js +1 -1
  62. package/dist/lib/github-urls.js +1 -1
  63. package/dist/lib/group-objective-linking.js +1 -1
  64. package/dist/lib/ibmi-sync.js +1 -1
  65. package/dist/lib/jira-client.js +1 -1
  66. package/dist/lib/judge-blinding.js +1 -1
  67. package/dist/lib/logger.js +1 -1
  68. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  69. package/dist/lib/model-fetcher.js +1 -1
  70. package/dist/lib/notifications.js +1 -1
  71. package/dist/lib/objective-context.js +1 -1
  72. package/dist/lib/oidc-auth.js +1 -1
  73. package/dist/lib/oidc-device-flow.js +1 -1
  74. package/dist/lib/passwordTokens.js +1 -1
  75. package/dist/lib/permission-resolver.js +1 -1
  76. package/dist/lib/pin-cascade.js +1 -1
  77. package/dist/lib/provider-accounts.js +1 -1
  78. package/dist/lib/provider-oauth.js +1 -1
  79. package/dist/lib/provider-profile.js +1 -1
  80. package/dist/lib/provider-token-refresh.js +1 -1
  81. package/dist/lib/rbac-user-state.js +1 -1
  82. package/dist/lib/request-url.js +1 -1
  83. package/dist/lib/rewind.js +1 -1
  84. package/dist/lib/role-definitions.js +1 -1
  85. package/dist/lib/roles.js +1 -1
  86. package/dist/lib/secrets.js +1 -1
  87. package/dist/lib/setup-repo-git-auth.js +1 -1
  88. package/dist/lib/state-capture.js +1 -1
  89. package/dist/lib/static-files.js +1 -1
  90. package/dist/lib/task-aliases.js +1 -1
  91. package/dist/lib/task-name-format.js +1 -1
  92. package/dist/lib/task-name-generator.js +1 -1
  93. package/dist/lib/task-source-metadata.js +1 -1
  94. package/dist/lib/teams.js +1 -1
  95. package/dist/lib/user-git-oauth.js +1 -1
  96. package/dist/lib/user-git-tokens.js +1 -1
  97. package/dist/lib/users.js +1 -1
  98. package/dist/middleware/requireAuth.js +1 -1
  99. package/dist/middleware/requireInit.js +1 -1
  100. package/dist/middleware/requirePermission.js +1 -1
  101. package/dist/package.json +1 -1
  102. package/dist/playwright.config.js +1 -1
  103. package/dist/playwright.task-terminal.config.js +1 -1
  104. package/dist/routes/apiKeys.js +1 -1
  105. package/dist/routes/auth-oidc.js +1 -1
  106. package/dist/routes/auth.js +1 -1
  107. package/dist/routes/automations.js +1 -1
  108. package/dist/routes/bindings.js +1 -1
  109. package/dist/routes/build.js +1 -1
  110. package/dist/routes/containers.js +1 -1
  111. package/dist/routes/deploy-task.js +1 -1
  112. package/dist/routes/environment-management.js +1 -1
  113. package/dist/routes/environments.js +1 -1
  114. package/dist/routes/external-skills.js +1 -1
  115. package/dist/routes/git-credentials.js +1 -1
  116. package/dist/routes/git-oauth.js +1 -1
  117. package/dist/routes/git-provider-setup.js +1 -1
  118. package/dist/routes/health.js +1 -1
  119. package/dist/routes/jira.js +1 -1
  120. package/dist/routes/objective-management.js +1 -1
  121. package/dist/routes/password.js +1 -1
  122. package/dist/routes/prompt.js +1 -1
  123. package/dist/routes/provider-auth.js +1 -1
  124. package/dist/routes/qa.js +1 -1
  125. package/dist/routes/roles.js +1 -1
  126. package/dist/routes/settings.js +1 -1
  127. package/dist/routes/skill-management.js +1 -1
  128. package/dist/routes/skills.js +1 -1
  129. package/dist/routes/tasks.js +1 -1
  130. package/dist/routes/teams.js +1 -1
  131. package/dist/routes/templates.js +1 -1
  132. package/dist/routes/test-task.js +1 -1
  133. package/dist/routes/test.js +1 -1
  134. package/dist/routes/users.js +1 -1
  135. package/dist/routes/visualizations.js +1 -1
  136. package/dist/scripts/create-user.js +1 -1
  137. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  138. package/dist/start.js +1 -1
  139. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  140. package/dist/web-ui/public/activity-feed.js +1 -1
  141. package/dist/web-ui/public/activity-formatters.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.css +21 -0
  150. package/dist/web-ui/public/environments.html +68 -1
  151. package/dist/web-ui/public/environments.js +1 -1
  152. package/dist/web-ui/public/feedback-widget.js +1 -1
  153. package/dist/web-ui/public/file-selection-tree.js +1 -1
  154. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  155. package/dist/web-ui/public/git-history.js +1 -1
  156. package/dist/web-ui/public/git-status.js +1 -1
  157. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  158. package/dist/web-ui/public/index.js +1 -1
  159. package/dist/web-ui/public/login.js +1 -1
  160. package/dist/web-ui/public/markdown-editor.js +1 -1
  161. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  162. package/dist/web-ui/public/modal-maximize.js +1 -1
  163. package/dist/web-ui/public/notifications.js +1 -1
  164. package/dist/web-ui/public/permissions.js +1 -1
  165. package/dist/web-ui/public/pr-dialog.js +1 -1
  166. package/dist/web-ui/public/roles.js +1 -1
  167. package/dist/web-ui/public/server-health.js +1 -1
  168. package/dist/web-ui/public/settings.js +1 -1
  169. package/dist/web-ui/public/setup-password.js +1 -1
  170. package/dist/web-ui/public/skills.js +1 -1
  171. package/dist/web-ui/public/sse-client.js +1 -1
  172. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  173. package/dist/web-ui/public/styles.css +52 -1
  174. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  175. package/dist/web-ui/public/task.html +43 -5
  176. package/dist/web-ui/public/task.js +1 -1
  177. package/dist/web-ui/public/teams.js +1 -1
  178. package/dist/web-ui/public/terminal.js +1 -1
  179. package/dist/web-ui/public/theme.js +1 -1
  180. package/dist/web-ui/public/users.js +1 -1
  181. package/dist/web-ui/public/variant-grouping.js +1 -1
  182. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x478d1e=window['location']['pathname'],_0x153d9d=_0x478d1e['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x153d9d)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x153d9d[0x1]),_0x153d9d[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x3ff65b={}){const _0x4cfaa5=new URLSearchParams();_0x3ff65b['userId']&&_0x4cfaa5['set']('userId',String(_0x3ff65b['userId']));_0x3ff65b['automation']&&_0x4cfaa5['set']('automation',String(_0x3ff65b['automation']));const _0x3a46e9=API_BASE+'/tasks/stats'+(_0x4cfaa5['toString']()?'?'+_0x4cfaa5['toString']():''),_0x42fbc8=await fetch(_0x3a46e9);if(!_0x42fbc8['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x42fbc8['statusText']);return await _0x42fbc8['json']();},async 'getTasks'(_0x2f8d20={}){const _0x3a356c=new URLSearchParams();_0x2f8d20['status']&&_0x3a356c['set']('status',String(_0x2f8d20['status']));_0x2f8d20['environment']&&_0x3a356c['set']('environment',String(_0x2f8d20['environment']));_0x2f8d20['automation']&&_0x3a356c['set']('automation',String(_0x2f8d20['automation']));if(_0x2f8d20['include']){const _0x2ee5c9=Array['isArray'](_0x2f8d20['include'])?_0x2f8d20['include']['join'](','):String(_0x2f8d20['include']);_0x2ee5c9&&_0x3a356c['set']('include',_0x2ee5c9);}_0x2f8d20['filter']&&_0x3a356c['set']('filter',String(_0x2f8d20['filter']));_0x2f8d20['page']&&_0x3a356c['set']('page',String(_0x2f8d20['page']));_0x2f8d20['limit']&&_0x3a356c['set']('limit',String(_0x2f8d20['limit']));_0x2f8d20['userId']&&_0x3a356c['set']('userId',String(_0x2f8d20['userId']));_0x2f8d20['search']&&_0x3a356c['set']('search',String(_0x2f8d20['search']));_0x2f8d20['includeChildTasks']&&_0x3a356c['set']('includeChildTasks','true');const _0x105b79=API_BASE+'/tasks'+(_0x3a356c['toString']()?'?'+_0x3a356c['toString']():''),_0x22c0e2=await fetch(_0x105b79);if(!_0x22c0e2['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x22c0e2['statusText']);return await _0x22c0e2['json']();},async 'getAutomations'(_0x32a1ef={}){const _0x29f5a1=new URLSearchParams();_0x32a1ef['environment']&&_0x29f5a1['set']('environment',String(_0x32a1ef['environment']));const _0x2ba613=await fetch(API_BASE+'/api/automations'+(_0x29f5a1['toString']()?'?'+_0x29f5a1['toString']():''));if(!_0x2ba613['ok']){const _0x595f2a=await _0x2ba613['json']()['catch'](()=>({}));throw new Error(_0x595f2a['message']||_0x595f2a['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2ba613['statusText']);}return await _0x2ba613['json']();},async 'getAutomation'(_0x5c18ad){const _0x1453c0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c18ad));if(!_0x1453c0['ok']){const _0x1e0774=await _0x1453c0['json']()['catch'](()=>({}));throw new Error(_0x1e0774['message']||_0x1e0774['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x1453c0['statusText']);}return await _0x1453c0['json']();},async 'createAutomation'(_0x935aab){const _0x54bec9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x935aab||{})});if(!_0x54bec9['ok']){const _0x21906d=await _0x54bec9['json']()['catch'](()=>({}));throw new Error(_0x21906d['message']||_0x21906d['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x54bec9['statusText']);}return await _0x54bec9['json']();},async 'updateAutomation'(_0x27a019,_0x18897f){const _0x410181=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x27a019),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18897f||{})});if(!_0x410181['ok']){const _0x4d3072=await _0x410181['json']()['catch'](()=>({}));throw new Error(_0x4d3072['message']||_0x4d3072['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x410181['statusText']);}return await _0x410181['json']();},async 'deleteAutomation'(_0x588e6e){const _0x4ae845=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x588e6e),{'method':'DELETE'});if(!_0x4ae845['ok']){const _0x41e3e7=await _0x4ae845['json']()['catch'](()=>({}));throw new Error(_0x41e3e7['message']||_0x41e3e7['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x4ae845['statusText']);}return await _0x4ae845['json']();},async 'triggerAutomation'(_0x38bf14){const _0x1495e4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x38bf14)+'/trigger',{'method':'POST'});if(!_0x1495e4['ok']){const _0x3a88a2=await _0x1495e4['json']()['catch'](()=>({}));throw new Error(_0x3a88a2['message']||_0x3a88a2['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x1495e4['statusText']);}return await _0x1495e4['json']();},async 'setAutomationEnabled'(_0xa81284,_0x47a1e7){const _0x3c8250=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa81284)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x47a1e7})});if(!_0x3c8250['ok']){const _0x109bc9=await _0x3c8250['json']()['catch'](()=>({}));throw new Error(_0x109bc9['message']||_0x109bc9['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x3c8250['statusText']);}return await _0x3c8250['json']();},async 'getAutomationHistory'(_0x5c1913,_0x4c8a57=0x32){const _0x5cbbd3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c1913)+'/history?limit='+encodeURIComponent(String(_0x4c8a57)));if(!_0x5cbbd3['ok']){const _0x5c004a=await _0x5cbbd3['json']()['catch'](()=>({}));throw new Error(_0x5c004a['message']||_0x5c004a['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5cbbd3['statusText']);}return await _0x5cbbd3['json']();},async 'getTask'(_0x5d599a,_0x40dc7c={}){const _0x187bfb=new URLSearchParams();if(_0x40dc7c['include']){const _0x2adef7=Array['isArray'](_0x40dc7c['include'])?_0x40dc7c['include']['join'](','):String(_0x40dc7c['include']);if(_0x2adef7)_0x187bfb['set']('include',_0x2adef7);}const _0x39b1c3=await fetch(API_BASE+'/tasks/'+_0x5d599a+(_0x187bfb['toString']()?'?'+_0x187bfb['toString']():''));if(!_0x39b1c3['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x39b1c3['statusText']);return await _0x39b1c3['json']();},async 'getTaskResults'(_0x47268b){const _0x4af2e7=await fetch(API_BASE+'/tasks/'+_0x47268b+'/results');if(!_0x4af2e7['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4af2e7['statusText']);return await _0x4af2e7['json']();},async 'getTaskPatches'(_0x2332e8){const _0x833c3a=await fetch(API_BASE+'/tasks/'+_0x2332e8+'/patches');if(!_0x833c3a['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x833c3a['statusText']);return await _0x833c3a['json']();},async 'getTaskAttachments'(_0x44218b){const _0x241683=await fetch(API_BASE+'/tasks/'+_0x44218b+'/attachments');if(!_0x241683['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x241683['statusText']);return await _0x241683['json']();},async 'uploadAttachments'(_0x57d105,_0x3cd3c9){const _0x1e2d84=new FormData();for(const _0x31c505 of _0x3cd3c9){_0x1e2d84['append']('attachments',_0x31c505);}const _0x1bd0d0=await fetch(API_BASE+'/tasks/'+_0x57d105+'/attachments',{'method':'POST','body':_0x1e2d84});if(!_0x1bd0d0['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x1bd0d0['statusText']);return await _0x1bd0d0['json']();},async 'isAINameGenerationAvailable'(){try{const _0x102192=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x102192['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x102192['json']();}catch(_0x424296){return{'available':![],'reason':_0x424296['message']};}},async 'generateTaskName'(_0x41406a){try{const _0x197bb5=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x41406a})});return await _0x197bb5['json']();}catch(_0x2f5643){return{'success':![],'error':_0x2f5643['message']};}},async 'createTask'(_0x507fc2){let _0x149dc2,_0x14a113={};if(_0x507fc2['files']&&_0x507fc2['files']['length']>0x0){const _0x243c40=new FormData();for(const [_0x5844d8,_0x306da0]of Object['entries'](_0x507fc2)){if(_0x5844d8!=='files'){if(_0x306da0==null)continue;typeof _0x306da0==='object'?_0x243c40['append'](_0x5844d8,JSON['stringify'](_0x306da0)):_0x243c40['append'](_0x5844d8,String(_0x306da0));}}for(const _0x2e90fc of _0x507fc2['files']){_0x243c40['append']('attachments',_0x2e90fc);}_0x149dc2=_0x243c40;}else _0x14a113['Content-Type']='application/json',_0x149dc2=JSON['stringify'](_0x507fc2);const _0x4aee42=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x14a113,'body':_0x149dc2});if(!_0x4aee42['ok']){const _0x154b75=await _0x4aee42['json'](),_0xeaefba=new Error(_0x154b75['error']||'Failed\x20to\x20create\x20task:\x20'+_0x4aee42['statusText']),{message:_0x3882cd,..._0x42d185}=_0x154b75;Object['assign'](_0xeaefba,_0x42d185);throw _0xeaefba;}return await _0x4aee42['json']();},async 'createTestTask'(_0x55758a){const _0xf7e1e3=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55758a)});if(!_0xf7e1e3['ok']){const _0x222c35=await _0xf7e1e3['json']();throw new Error(_0x222c35['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0xf7e1e3['statusText']);}return await _0xf7e1e3['json']();},async 'createEphemeralTest'(_0x3adca3){const _0x31b14e=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3adca3)});if(!_0x31b14e['ok']){const _0x400f20=await _0x31b14e['json']();throw new Error(_0x400f20['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x31b14e['statusText']);}return await _0x31b14e['json']();},async 'createDeployTask'(_0xe54a85){const _0x2bfd99=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe54a85)});if(!_0x2bfd99['ok']){const _0x14dba9=await _0x2bfd99['json']();throw new Error(_0x14dba9['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x2bfd99['statusText']);}return await _0x2bfd99['json']();},async 'getEnvironments'(){const _0x227c4e=await fetch(API_BASE+'/environments');if(!_0x227c4e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x227c4e['statusText']);return await _0x227c4e['json']();},async 'getEnvironment'(_0x4f6c1f){const _0x462327=await fetch(API_BASE+'/environments/'+_0x4f6c1f);if(!_0x462327['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x462327['statusText']);return await _0x462327['json']();},async 'getEnvironmentRepoHistory'(_0x3b3a35,_0x58cc79,_0x228cad={}){if(!_0x3b3a35||!_0x58cc79)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x8d9089=new URLSearchParams();if(_0x228cad['limit'])_0x8d9089['set']('limit',String(_0x228cad['limit']));if(_0x228cad['offset'])_0x8d9089['set']('offset',String(_0x228cad['offset']));if(_0x228cad['search'])_0x8d9089['set']('search',String(_0x228cad['search']));if(_0x228cad['branch'])_0x8d9089['set']('branch',String(_0x228cad['branch']));const _0x56c47a=API_BASE+'/environments/'+encodeURIComponent(_0x3b3a35)+'/repos/'+encodeURIComponent(_0x58cc79)+'/git/history',_0x25b399=await fetch(''+_0x56c47a+(_0x8d9089['toString']()?'?'+_0x8d9089['toString']():''));if(!_0x25b399['ok']){const _0x82d95f=await _0x25b399['json']()['catch'](()=>({}));throw new Error(_0x82d95f['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x25b399['statusText']);}return await _0x25b399['json']();},async 'getEnvironmentRepoCommit'(_0x27ab5b,_0x1cee47,_0x50d100){if(!_0x27ab5b||!_0x1cee47||!_0x50d100)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4c74c8=API_BASE+'/environments/'+encodeURIComponent(_0x27ab5b)+'/repos/'+encodeURIComponent(_0x1cee47)+'/git/commits/'+encodeURIComponent(_0x50d100),_0x273ad4=await fetch(_0x4c74c8);if(!_0x273ad4['ok']){const _0x4b81b9=await _0x273ad4['json']()['catch'](()=>({}));throw new Error(_0x4b81b9['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x273ad4['statusText']);}return await _0x273ad4['json']();},async 'getEnvironmentRepoBranches'(_0x3763d6,_0x4674ab){if(!_0x3763d6||!_0x4674ab)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3a1378=API_BASE+'/environments/'+encodeURIComponent(_0x3763d6)+'/repos/'+encodeURIComponent(_0x4674ab)+'/git/branches',_0x51040d=await fetch(_0x3a1378);if(!_0x51040d['ok']){const _0x558c54=await _0x51040d['json']()['catch'](()=>({}));throw new Error(_0x558c54['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x51040d['statusText']);}return await _0x51040d['json']();},async 'revertEnvironmentRepoCommit'(_0x62487,_0x14cc89,_0x40d5df,_0xfc9fec={}){if(!_0x62487||!_0x14cc89||!_0x40d5df)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4e1099=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x62487)+'/repos/'+encodeURIComponent(_0x14cc89)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x40d5df,..._0xfc9fec})});if(!_0x4e1099['ok']){const _0x2ee149=await _0x4e1099['json']()['catch'](()=>({}));throw new Error(_0x2ee149['message']||_0x2ee149['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4e1099['statusText']);}return await _0x4e1099['json']();},async 'getTemplates'(_0x21a608={}){const _0x480d7e=new URLSearchParams();if(_0x21a608['include']){const _0x528cce=Array['isArray'](_0x21a608['include'])?_0x21a608['include']['join'](','):String(_0x21a608['include']);if(_0x528cce)_0x480d7e['set']('include',_0x528cce);}const _0x3b2e36=await fetch(API_BASE+'/templates'+(_0x480d7e['toString']()?'?'+_0x480d7e['toString']():''));if(!_0x3b2e36['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3b2e36['statusText']);return await _0x3b2e36['json']();},async 'getTemplatesForEnvironment'(_0x21843a,_0x39bdc1={}){if(!_0x21843a)throw new Error('Environment\x20name\x20is\x20required');const _0x157094=new URLSearchParams();if(_0x39bdc1['include']){const _0x15bd24=Array['isArray'](_0x39bdc1['include'])?_0x39bdc1['include']['join'](','):String(_0x39bdc1['include']);if(_0x15bd24)_0x157094['set']('include',_0x15bd24);}const _0x771b78=await fetch(API_BASE+'/templates/'+_0x21843a+(_0x157094['toString']()?'?'+_0x157094['toString']():''));if(!_0x771b78['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x21843a+':\x20'+_0x771b78['statusText']);return await _0x771b78['json']();},async 'getTemplate'(_0x56760e,_0x207dce,_0x3356f0={}){if(!_0x56760e||!_0x207dce)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x4cba66=new URLSearchParams();if(_0x3356f0['include']){const _0x50a5e7=Array['isArray'](_0x3356f0['include'])?_0x3356f0['include']['join'](','):String(_0x3356f0['include']);if(_0x50a5e7)_0x4cba66['set']('include',_0x50a5e7);}const _0x940645=await fetch(API_BASE+'/templates/'+_0x56760e+'/'+_0x207dce+(_0x4cba66['toString']()?'?'+_0x4cba66['toString']():''));if(!_0x940645['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x940645['statusText']);return await _0x940645['json']();},async 'getTaskLogs'(_0x33c9ba,_0x3dbdc4={}){if(!_0x33c9ba)throw new Error('Task\x20ID\x20is\x20required');const _0xfe3a8b=new URLSearchParams();_0x3dbdc4['tail']&&_0xfe3a8b['set']('tail',String(_0x3dbdc4['tail']));const _0x49f4b4=await fetch(API_BASE+'/tasks/'+_0x33c9ba+'/logs'+(_0xfe3a8b['toString']()?'?'+_0xfe3a8b['toString']():''));if(!_0x49f4b4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x49f4b4['statusText']);return await _0x49f4b4['text']();},async 'getContainers'(){const _0x1b43ae=await fetch(API_BASE+'/containers');if(!_0x1b43ae['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x1b43ae['statusText']);return await _0x1b43ae['json']();},async 'getContainer'(_0x3ece04){const _0x5ea67b=await fetch(API_BASE+'/containers/'+_0x3ece04);if(!_0x5ea67b['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5ea67b['statusText']);return await _0x5ea67b['json']();},async 'startInteractiveContainer'(_0x3ae865){const _0x1bf748=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ae865)});if(!_0x1bf748['ok']){const _0x298881=await _0x1bf748['json']()['catch'](()=>({}));throw new Error(_0x298881['message']||'Failed\x20to\x20start\x20container:\x20'+_0x1bf748['statusText']);}return await _0x1bf748['json']();},async 'stopContainer'(_0x3f5861){const _0x3a3c7f=await fetch(API_BASE+'/containers/'+_0x3f5861,{'method':'DELETE'});if(!_0x3a3c7f['ok']){const _0xc359ff=await _0x3a3c7f['json']()['catch'](()=>({}));throw new Error(_0xc359ff['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x3a3c7f['statusText']);}return await _0x3a3c7f['json']();},async 'stopTask'(_0x45a5b8){if(!_0x45a5b8)throw new Error('Task\x20ID\x20is\x20required');const _0x11f746=await fetch(API_BASE+'/tasks/'+_0x45a5b8+'/stop',{'method':'POST'});if(!_0x11f746['ok']){const _0x1f76e8=await _0x11f746['json']()['catch'](()=>({}));throw new Error(_0x1f76e8['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x11f746['statusText']);}return await _0x11f746['json']();},async 'interruptTask'(_0x4bf36b){if(!_0x4bf36b)throw new Error('Task\x20ID\x20is\x20required');const _0x40cc74=await fetch(API_BASE+'/tasks/'+_0x4bf36b+'/interrupt',{'method':'POST'});if(!_0x40cc74['ok']){const _0xd5edfc=await _0x40cc74['json']()['catch'](()=>({}));throw new Error(_0xd5edfc['error']||_0xd5edfc['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x40cc74['statusText']);}return await _0x40cc74['json']();},async 'startTask'(_0x5b15a5){if(!_0x5b15a5)throw new Error('Task\x20ID\x20is\x20required');const _0x4e261f=await fetch(API_BASE+'/tasks/'+_0x5b15a5+'/start',{'method':'POST'});if(!_0x4e261f['ok']){const _0x138eb2=await _0x4e261f['json']()['catch'](()=>({}));throw new Error(_0x138eb2['error']||'Failed\x20to\x20start\x20task:\x20'+_0x4e261f['statusText']);}return await _0x4e261f['json']();},async 'deleteTask'(_0x1804d1){if(!_0x1804d1)throw new Error('Task\x20ID\x20is\x20required');const _0x23fc56=await fetch(API_BASE+'/tasks/'+_0x1804d1,{'method':'DELETE'});if(!_0x23fc56['ok']){const _0x11866b=await _0x23fc56['json']()['catch'](()=>({}));throw new Error(_0x11866b['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x23fc56['statusText']);}return await _0x23fc56['json']();},async 'refreshTasksFromDisk'(){const _0x1f02d9=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x1f02d9['ok']){const _0x11038c=await _0x1f02d9['json']()['catch'](()=>({}));throw new Error(_0x11038c['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x1f02d9['statusText']);}return await _0x1f02d9['json']();},async 'approveTask'(_0x388316,_0x4652b8={}){if(!_0x388316)throw new Error('Task\x20ID\x20is\x20required');const _0x512a4c={'commit_message':_0x4652b8['commit_message']||'','pull':_0x4652b8['pull']??![],'push':_0x4652b8['push']??![]};_0x4652b8['new_branch']&&(_0x512a4c['new_branch']=_0x4652b8['new_branch']);const _0x1411e7=await fetch(API_BASE+'/tasks/'+_0x388316+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x512a4c)});if(!_0x1411e7['ok']){const _0x49c7ba=await _0x1411e7['json']()['catch'](()=>({}));let _0xfe6d92=_0x49c7ba['error']||_0x49c7ba['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x1411e7['statusText'];if(_0x49c7ba['results']&&Array['isArray'](_0x49c7ba['results'])){const _0x44ea70=_0x49c7ba['results']['filter'](_0x5e6f0f=>!_0x5e6f0f['success']&&_0x5e6f0f['error']);_0x44ea70['length']>0x0&&(_0xfe6d92=_0x44ea70[0x0]['error']);}throw new Error(_0xfe6d92);}return await _0x1411e7['json']();},async 'getPullRequestInfo'(_0x550a89){if(!_0x550a89)throw new Error('Task\x20ID\x20is\x20required');const _0x4fbdae=await fetch(API_BASE+'/tasks/'+_0x550a89+'/pull-request-info');if(!_0x4fbdae['ok']){const _0x42916b=await _0x4fbdae['json']()['catch'](()=>({}));throw new Error(_0x42916b['error']||_0x42916b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4fbdae['statusText']);}return await _0x4fbdae['json']();},async 'createPullRequests'(_0x32ebe2,_0x1a1262){if(!_0x32ebe2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a1262||!Array['isArray'](_0x1a1262))throw new Error('repos\x20array\x20is\x20required');const _0x33772e=await fetch(API_BASE+'/tasks/'+_0x32ebe2+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x1a1262})});if(!_0x33772e['ok']){const _0x1c2cf3=await _0x33772e['json']()['catch'](()=>({}));let _0x397e4f=_0x1c2cf3['error']||_0x1c2cf3['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x33772e['statusText'];if(_0x1c2cf3['results']&&Array['isArray'](_0x1c2cf3['results'])){const _0x5044f3=_0x1c2cf3['results']['filter'](_0x2d9cb7=>!_0x2d9cb7['success']&&_0x2d9cb7['error']);_0x5044f3['length']>0x0&&(_0x397e4f=_0x5044f3[0x0]['error']);}throw new Error(_0x397e4f);}return await _0x33772e['json']();},async 'syncRepos'(_0x5b8e57){if(!_0x5b8e57)throw new Error('Task\x20ID\x20is\x20required');const _0x102493=await fetch(API_BASE+'/tasks/'+_0x5b8e57+'/sync-repos',{'method':'POST'});if(!_0x102493['ok']){const _0x38c2b5=await _0x102493['json']()['catch'](()=>({}));throw new Error(_0x38c2b5['error']||_0x38c2b5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x102493['statusText']);}return await _0x102493['json']();},async 'getIbmiSyncInfo'(_0x4e702d){if(!_0x4e702d)throw new Error('Task\x20ID\x20is\x20required');const _0x328ec3=await fetch(API_BASE+'/tasks/'+_0x4e702d+'/ibmi-sync-info');if(!_0x328ec3['ok']){const _0x3ebb49=await _0x328ec3['json']()['catch'](()=>({}));throw new Error(_0x3ebb49['error']||_0x3ebb49['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x328ec3['json']();},async 'getSyncFiles'(_0x44c55e){if(!_0x44c55e)throw new Error('Task\x20ID\x20is\x20required');const _0x5368f9=await fetch(API_BASE+'/tasks/'+_0x44c55e+'/sync-to-ibmi/files');if(!_0x5368f9['ok']){const _0x533ccc=await _0x5368f9['json']()['catch'](()=>({}));throw new Error(_0x533ccc['error']||_0x533ccc['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5368f9['json']();},async 'syncToIbmi'(_0x14f191,_0x27ee64,_0x53319f=null,_0x252fa2=null,_0x28f3a4=null){if(!_0x14f191)throw new Error('Task\x20ID\x20is\x20required');const _0x106abb={'library':_0x27ee64};if(_0x53319f)_0x106abb['user']=_0x53319f;if(_0x252fa2)_0x106abb['password']=_0x252fa2;if(_0x28f3a4)_0x106abb['files']=_0x28f3a4;const _0x13cb17=await fetch(API_BASE+'/tasks/'+_0x14f191+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x106abb)});if(!_0x13cb17['ok']){const _0x146f83=await _0x13cb17['json']()['catch'](()=>({}));throw new Error(_0x146f83['error']||_0x146f83['message']||'Sync\x20failed');}return await _0x13cb17['json']();},async 'getIbmiSyncLog'(_0x7894f9){if(!_0x7894f9)throw new Error('Task\x20ID\x20is\x20required');const _0x3d813c=await fetch(API_BASE+'/tasks/'+_0x7894f9+'/ibmi-sync-log');if(!_0x3d813c['ok']){const _0xf1373c=await _0x3d813c['json']()['catch'](()=>({}));throw new Error(_0xf1373c['error']||_0xf1373c['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3d813c['json']();},async 'pullChanges'(_0x40265e){if(!_0x40265e)throw new Error('Task\x20ID\x20is\x20required');const _0x3685aa=await fetch(API_BASE+'/tasks/'+_0x40265e+'/pull-changes',{'method':'POST'});if(!_0x3685aa['ok']){const _0x567a1b=await _0x3685aa['json']()['catch'](()=>({}));throw new Error(_0x567a1b['error']||_0x567a1b['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x3685aa['statusText']);}return await _0x3685aa['json']();},async 'readFile'(_0x14152c,_0x41264c){if(!_0x14152c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x41264c)throw new Error('File\x20path\x20is\x20required');const _0x31ff5d=await fetch(API_BASE+'/tasks/'+_0x14152c+'/files?path='+encodeURIComponent(_0x41264c));if(!_0x31ff5d['ok']){const _0xe3b6d2=await _0x31ff5d['json']()['catch'](()=>({}));throw new Error(_0xe3b6d2['error']||_0xe3b6d2['message']||'Failed\x20to\x20read\x20file:\x20'+_0x31ff5d['statusText']);}return await _0x31ff5d['json']();},'getTaskFileDownloadUrl'(_0x53c797,_0x3fc7a4){if(!_0x53c797)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3fc7a4)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x53c797+'/files/download?path='+encodeURIComponent(_0x3fc7a4);},async 'writeFile'(_0x196fad,_0x5668d9,_0x3dc05c){if(!_0x196fad)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5668d9)throw new Error('File\x20path\x20is\x20required');if(_0x3dc05c===undefined)throw new Error('Content\x20is\x20required');const _0x2ec565=await fetch(API_BASE+'/tasks/'+_0x196fad+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5668d9,'content':_0x3dc05c})});if(!_0x2ec565['ok']){const _0x48f841=await _0x2ec565['json']()['catch'](()=>({}));throw new Error(_0x48f841['error']||_0x48f841['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2ec565['statusText']);}return await _0x2ec565['json']();},async 'uploadTaskFiles'(_0x261279,_0x4292b8,_0x557588){if(!_0x261279)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4292b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x557588||_0x557588['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4fd1a9=new FormData();_0x4fd1a9['append']('targetDir',_0x4292b8);for(const _0x3d9f49 of _0x557588){_0x4fd1a9['append']('files',_0x3d9f49,_0x3d9f49['name']);}const _0x4d9563=await fetch(API_BASE+'/tasks/'+_0x261279+'/files/upload',{'method':'POST','body':_0x4fd1a9});if(!_0x4d9563['ok']){const _0x628efd=await _0x4d9563['json']()['catch'](()=>({}));throw new Error(_0x628efd['error']||_0x628efd['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x4d9563['statusText']);}return await _0x4d9563['json']();},async 'deleteFile'(_0x31668f,_0x336777){if(!_0x31668f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x336777)throw new Error('File\x20path\x20is\x20required');const _0x2ed69f=await fetch(API_BASE+'/tasks/'+_0x31668f+'/files?path='+encodeURIComponent(_0x336777),{'method':'DELETE'});if(!_0x2ed69f['ok']){const _0x45efe8=await _0x2ed69f['json']()['catch'](()=>({}));throw new Error(_0x45efe8['error']||_0x45efe8['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x2ed69f['statusText']);}return await _0x2ed69f['json']();},async 'discardFile'(_0x5a5548,_0x5d871e,_0xf17b6e){if(!_0x5a5548)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d871e)throw new Error('File\x20path\x20is\x20required');if(!_0xf17b6e)throw new Error('Repository\x20path\x20is\x20required');const _0x2fad69=await fetch(API_BASE+'/tasks/'+_0x5a5548+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5d871e,'repoPath':_0xf17b6e})});if(!_0x2fad69['ok']){const _0x15c8ce=await _0x2fad69['json']()['catch'](()=>({}));throw new Error(_0x15c8ce['error']||_0x15c8ce['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2fad69['statusText']);}return await _0x2fad69['json']();},async 'followUpTask'(_0xb73778,_0x59d33d={}){if(!_0xb73778)throw new Error('Task\x20ID\x20is\x20required');if(!_0x59d33d['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x50f9ed,_0x448a27={};if(_0x59d33d['files']&&_0x59d33d['files']['length']>0x0){const _0xa2540=new FormData();_0xa2540['append']('instructions',_0x59d33d['instructions']);for(const _0xd99d5 of _0x59d33d['files']){_0xa2540['append']('attachments',_0xd99d5);}_0x50f9ed=_0xa2540;}else _0x448a27['Content-Type']='application/json',_0x50f9ed=JSON['stringify']({'instructions':_0x59d33d['instructions']});const _0xa6a7e7=await fetch(API_BASE+'/tasks/'+_0xb73778+'/follow-up',{'method':'POST','headers':_0x448a27,'body':_0x50f9ed});if(!_0xa6a7e7['ok']){const _0x306711=await _0xa6a7e7['json']()['catch'](()=>({}));throw new Error(_0x306711['error']||_0x306711['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0xa6a7e7['statusText']);}return await _0xa6a7e7['json']();},async 'getTaskRewindPoints'(_0x4449cb){if(!_0x4449cb)throw new Error('Task\x20ID\x20is\x20required');const _0x8b7d2d=await fetch(API_BASE+'/tasks/'+_0x4449cb+'/rewind-points');if(!_0x8b7d2d['ok']){const _0x32b5a6=await _0x8b7d2d['json']()['catch'](()=>({}));throw new Error(_0x32b5a6['error']||_0x32b5a6['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x8b7d2d['statusText']);}return await _0x8b7d2d['json']();},async 'rewindTask'(_0x3c582e,_0x3e648d={}){if(!_0x3c582e)throw new Error('Task\x20ID\x20is\x20required');const _0x222d55=Number['isInteger'](_0x3e648d['targetFollowUpCount'])?_0x3e648d['targetFollowUpCount']:0x0,_0x5ecc1e={'targetFollowUpCount':_0x222d55};typeof _0x3e648d['instructions']==='string'&&_0x3e648d['instructions']['trim']()&&(_0x5ecc1e['instructions']=_0x3e648d['instructions']['trim']());typeof _0x3e648d['rewindFiles']==='boolean'&&(_0x5ecc1e['rewindFiles']=_0x3e648d['rewindFiles']);const _0x409255=await fetch(API_BASE+'/tasks/'+_0x3c582e+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ecc1e)});if(!_0x409255['ok']){const _0x16c682=await _0x409255['json']()['catch'](()=>({}));throw new Error(_0x16c682['error']||_0x16c682['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x409255['statusText']);}return await _0x409255['json']();},async 'login'(_0x1282aa,_0x12309c){const _0x120204=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x1282aa,'password':_0x12309c})});if(!_0x120204['ok']){const _0x353846=await _0x120204['json']();throw new Error(_0x353846['message']||'Login\x20failed');}return await _0x120204['json']();},async 'logout'(){const _0x4b66a2=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x4b66a2['ok']){const _0x18f285=await _0x4b66a2['json']();throw new Error(_0x18f285['message']||'Logout\x20failed');}return await _0x4b66a2['json']();},async 'getCurrentUser'(){const _0x4687f1=await fetch(API_BASE+'/auth/me');if(!_0x4687f1['ok'])throw new Error('Not\x20authenticated');const _0x362de1=await _0x4687f1['json']();return _0x362de1['user'];},async 'getRolesInfo'(){const _0x42b66f=await fetch(API_BASE+'/users/roles');if(!_0x42b66f['ok']){const _0x132c3b=await _0x42b66f['json']();throw new Error(_0x132c3b['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x42b66f['json']();},async 'getUsers'(){const _0x5c87b8=await fetch(API_BASE+'/users');if(!_0x5c87b8['ok']){const _0x5d19cb=await _0x5c87b8['json']();throw new Error(_0x5d19cb['message']||'Failed\x20to\x20get\x20users');}return await _0x5c87b8['json']();},async 'getUser'(_0x51cfd9){const _0x3b4068=await fetch(API_BASE+'/users/'+_0x51cfd9);if(!_0x3b4068['ok']){const _0x1cf0ed=await _0x3b4068['json']();throw new Error(_0x1cf0ed['message']||'Failed\x20to\x20get\x20user');}return await _0x3b4068['json']();},async 'createUser'(_0x37e4f5){const _0x46d3d3=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x37e4f5)});if(!_0x46d3d3['ok']){const _0x3e8c09=await _0x46d3d3['json']();throw new Error(_0x3e8c09['message']||'Failed\x20to\x20create\x20user');}return await _0x46d3d3['json']();},async 'updateUser'(_0x3524c7,_0x3f2f06){const _0x1ff7ff=await fetch(API_BASE+'/users/'+_0x3524c7,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f2f06)});if(!_0x1ff7ff['ok']){const _0x3f6581=await _0x1ff7ff['json']();throw new Error(_0x3f6581['message']||'Failed\x20to\x20update\x20user');}return await _0x1ff7ff['json']();},async 'deleteUser'(_0x388463){const _0x32c54d=await fetch(API_BASE+'/users/'+_0x388463,{'method':'DELETE'});if(!_0x32c54d['ok']){const _0x491413=await _0x32c54d['json']();throw new Error(_0x491413['message']||'Failed\x20to\x20delete\x20user');}return await _0x32c54d['json']();},async 'stopAllContainers'(){const _0x10ce30=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x344f5c=await _0x10ce30['json']()['catch'](()=>({}));if(!_0x10ce30['ok'])throw new Error(_0x344f5c['message']||_0x344f5c['error']||'Failed\x20to\x20stop\x20containers');return _0x344f5c;},async 'removeStoppedContainers'(){const _0x2e2e45=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x56180d=await _0x2e2e45['json']()['catch'](()=>({}));if(!_0x2e2e45['ok'])throw new Error(_0x56180d['message']||_0x56180d['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x56180d;},async 'pruneDockerResources'(){const _0x326b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x2f868c=await _0x326b22['json']()['catch'](()=>({}));if(!_0x326b22['ok'])throw new Error(_0x2f868c['message']||_0x2f868c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x2f868c;},async 'createPasswordToken'(_0x55af5f,_0x2a6570='setup',_0x199008=![]){const _0x33bb5f=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x55af5f,'type':_0x2a6570,'sendEmail':_0x199008})});if(!_0x33bb5f['ok']){const _0x3b8911=await _0x33bb5f['json']();throw new Error(_0x3b8911['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x33bb5f['json']();},async 'getEmailConfig'(){const _0x265ec1=await fetch(API_BASE+'/password/email-config');if(!_0x265ec1['ok']){const _0x1ba1f2=await _0x265ec1['json']();throw new Error(_0x1ba1f2['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x265ec1['json']();},async 'updateTaskName'(_0x4ed290,_0x4defd9){const _0x5bd402=await fetch(API_BASE+'/tasks/'+_0x4ed290,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4defd9})});if(!_0x5bd402['ok']){const _0x47cfeb=await _0x5bd402['json']();throw new Error(_0x47cfeb['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x5bd402['json']();},async 'pinTask'(_0x32901b,_0x34943d,_0x439880=null){if(!_0x32901b)throw new Error('Task\x20ID\x20is\x20required');const _0x2aeb38={'pinned':_0x34943d};_0x439880&&_0x439880['length']>0x0&&(_0x2aeb38['additionalTaskIds']=_0x439880);const _0x1b40b1=await fetch(API_BASE+'/tasks/'+_0x32901b+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2aeb38)});if(!_0x1b40b1['ok']){const _0xf80518=await _0x1b40b1['json']();throw new Error(_0xf80518['error']||'Failed\x20to\x20pin\x20task');}return await _0x1b40b1['json']();},async 'setTaskWinner'(_0x599f72,_0x771bde,_0x85571=[]){if(!_0x599f72)throw new Error('Task\x20ID\x20is\x20required');const _0x1a1352=await fetch(API_BASE+'/tasks/'+_0x599f72+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x771bde,'siblings':_0x85571})});if(!_0x1a1352['ok']){const _0x2560e3=await _0x1a1352['json']();throw new Error(_0x2560e3['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x1a1352['json']();},async 'setTaskLoser'(_0x1237c2,_0x570e49){if(!_0x1237c2)throw new Error('Task\x20ID\x20is\x20required');const _0x2c89c0=await fetch(API_BASE+'/tasks/'+_0x1237c2+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x570e49})});if(!_0x2c89c0['ok']){const _0x22c4da=await _0x2c89c0['json']();throw new Error(_0x22c4da['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2c89c0['json']();},async 'createTaskGroup'(_0x4b8468){const _0xe6a20c=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b8468)});if(!_0xe6a20c['ok']){const _0x12be75=await _0xe6a20c['json']();throw new Error(_0x12be75['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0xe6a20c['json']();},async 'getTaskGroups'(_0x224168={}){const _0x373637=new URLSearchParams();if(_0x224168['userId'])_0x373637['set']('userId',String(_0x224168['userId']));if(_0x224168['status'])_0x373637['set']('status',String(_0x224168['status']));if(_0x224168['limit'])_0x373637['set']('limit',String(_0x224168['limit']));const _0x48e606=API_BASE+'/tasks/groups'+(_0x373637['toString']()?'?'+_0x373637['toString']():''),_0x2a0f05=await fetch(_0x48e606);if(!_0x2a0f05['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x2a0f05['json']();},async 'getTaskGroup'(_0x3f6028){const _0x448032=await fetch(API_BASE+'/tasks/groups/'+_0x3f6028);if(!_0x448032['ok']){const _0x1213fc=await _0x448032['json']();throw new Error(_0x1213fc['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x448032['json']();},async 'updateTaskGroup'(_0x4991ea,_0x2f943b,_0x38b937){const _0x2a1ecc=await fetch(API_BASE+'/tasks/'+_0x4991ea+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x2f943b,'groupIndex':_0x38b937})});if(!_0x2a1ecc['ok']){const _0x2344f9=await _0x2a1ecc['json']();throw new Error(_0x2344f9['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x2a1ecc['json']();},async 'removeTaskFromGroup'(_0x1b6eab){return this['updateTaskGroup'](_0x1b6eab,null,null);},async 'deleteTaskGroup'(_0x22de05,_0x1f8f32=![]){const _0x4d18fd=_0x1f8f32?'?deleteTasks=true':'',_0x563c09=await fetch(API_BASE+'/tasks/groups/'+_0x22de05+_0x4d18fd,{'method':'DELETE'});if(!_0x563c09['ok']){const _0x63c96a=await _0x563c09['json']();throw new Error(_0x63c96a['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0xb93960,_0x22a8f5){const _0x29bdd2=await fetch(API_BASE+'/tasks/groups/'+_0xb93960+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x22a8f5})});if(!_0x29bdd2['ok']){const _0x128778=await _0x29bdd2['json']();throw new Error(_0x128778['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x29bdd2['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x1a55cf){if(!_0x1a55cf)throw new Error('Task\x20ID\x20is\x20required');const _0x4b1c2f=await fetch(API_BASE+'/tasks/'+_0x1a55cf+'/comments');if(!_0x4b1c2f['ok']){const _0x8bca60=await _0x4b1c2f['json']()['catch'](()=>({}));throw new Error(_0x8bca60['error']||'Failed\x20to\x20get\x20comments');}return await _0x4b1c2f['json']();},async 'addComment'(_0x3bc104,_0x45fa70){if(!_0x3bc104)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45fa70)throw new Error('Comment\x20content\x20is\x20required');const _0x542e4a=await fetch(API_BASE+'/tasks/'+_0x3bc104+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x45fa70})});if(!_0x542e4a['ok']){const _0xf4ca22=await _0x542e4a['json']()['catch'](()=>({}));throw new Error(_0xf4ca22['error']||'Failed\x20to\x20add\x20comment');}return await _0x542e4a['json']();},async 'updateComment'(_0x2d2277,_0x429515,_0x25a90a){if(!_0x2d2277)throw new Error('Task\x20ID\x20is\x20required');if(!_0x429515)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x25a90a)throw new Error('Comment\x20content\x20is\x20required');const _0x4940ca=await fetch(API_BASE+'/tasks/'+_0x2d2277+'/comments/'+_0x429515,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x25a90a})});if(!_0x4940ca['ok']){const _0x4c04f1=await _0x4940ca['json']()['catch'](()=>({}));throw new Error(_0x4c04f1['error']||'Failed\x20to\x20update\x20comment');}return await _0x4940ca['json']();},async 'deleteComment'(_0x59ec5f,_0x2ababe){if(!_0x59ec5f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ababe)throw new Error('Comment\x20ID\x20is\x20required');const _0x371d68=await fetch(API_BASE+'/tasks/'+_0x59ec5f+'/comments/'+_0x2ababe,{'method':'DELETE'});if(!_0x371d68['ok']){const _0x393a29=await _0x371d68['json']()['catch'](()=>({}));throw new Error(_0x393a29['error']||'Failed\x20to\x20delete\x20comment');}return await _0x371d68['json']();},async 'createObjective'(_0x112975){const _0x70ac76={'objective':!![],'name':_0x112975['name']||'','environment':_0x112975['environment']||null,'agents':_0x112975['agents']||[],'branches':_0x112975['branches']||{},'isPinned':_0x112975['isPinned']||![],'parentObjectiveId':_0x112975['parentObjectiveId']||null,'env_vars':_0x112975['envVars']||{},'parameters':{'instructions':_0x112975['instructions']||''},'files':_0x112975['files']||[],'jira':_0x112975['jira']||null};return this['createTask'](_0x70ac76);},async 'updateObjective'(_0x33afe8,_0x25fc71,_0x435aed=[],_0x382922=[]){let _0x216e9c,_0x51979c={};const _0x3c2eb2={..._0x25fc71};_0x382922&&_0x382922['length']>0x0&&(_0x3c2eb2['removeAttachments']=_0x382922);if(_0x435aed&&_0x435aed['length']>0x0){const _0x1da3a2=new FormData();for(const [_0x1517df,_0x2ac6b0]of Object['entries'](_0x3c2eb2)){if(_0x2ac6b0==null)continue;typeof _0x2ac6b0==='object'?_0x1da3a2['append'](_0x1517df,JSON['stringify'](_0x2ac6b0)):_0x1da3a2['append'](_0x1517df,String(_0x2ac6b0));}for(const _0x16e12f of _0x435aed){_0x1da3a2['append']('attachments',_0x16e12f);}_0x216e9c=_0x1da3a2;}else _0x51979c['Content-Type']='application/json',_0x216e9c=JSON['stringify'](_0x3c2eb2);const _0x1a0f15=await fetch(API_BASE+'/tasks/'+_0x33afe8,{'method':'PATCH','headers':_0x51979c,'body':_0x216e9c});if(!_0x1a0f15['ok']){const _0x37785e=await _0x1a0f15['json']();throw new Error(_0x37785e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1a0f15['json']();},async 'deleteObjective'(_0x172d63){return this['deleteTask'](_0x172d63);},async 'launchObjective'(_0x1c54d7,_0x19a519={}){const _0x37053d=await fetch(API_BASE+'/tasks/'+_0x1c54d7+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19a519)});if(!_0x37053d['ok']){const _0x1e9b00=await _0x37053d['json']();throw new Error(_0x1e9b00['error']||'Failed\x20to\x20launch\x20objective');}return await _0x37053d['json']();},async 'getObjectiveAttachments'(_0xecd05a){return this['getTaskAttachments'](_0xecd05a);},async 'createJudgeTask'({environment:_0x15a809,judgeAgent:_0x183d8e,groupId:_0xd86d3a,taskIds:_0x4c97b2,judgeCustomInstructions:_0x556405,isPinned:_0x1144ab}){const _0x159ac0=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x15a809,'judgeAgent':_0x183d8e,'groupId':_0xd86d3a,'taskIds':_0x4c97b2,'judgeCustomInstructions':_0x556405,'isPinned':_0x1144ab})});if(!_0x159ac0['ok']){const _0x54a30a=await _0x159ac0['json']();throw new Error(_0x54a30a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x159ac0['json']();},async 'getJudgeTasks'(_0x120bbb){const _0x460e65=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x120bbb));if(!_0x460e65['ok']){const _0xb03103=await _0x460e65['json']();throw new Error(_0xb03103['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x460e65['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x578006,_0x30dbf0,_0x67a9b3=''){const _0x12e187=await fetch(API_BASE+'/tasks/'+_0x578006+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x30dbf0,'customPreamble':_0x67a9b3})});if(!_0x12e187['ok']){const _0x54f8ce=await _0x12e187['json']();throw new Error(_0x54f8ce['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x12e187['json']();},async 'getJiraConfig'(){const _0x7c1243=await fetch(API_BASE+'/jira/config');if(!_0x7c1243['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x7c1243['json']();},async 'getJiraIssue'(_0x1decd1){const _0x1fd023=await fetch(API_BASE+'/jira/issues/'+_0x1decd1);if(!_0x1fd023['ok']){const _0x20a8c8=await _0x1fd023['json']()['catch'](()=>({}));throw new Error(_0x20a8c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x1fd023['statusText']);}return await _0x1fd023['json']();},async 'searchJiraIssues'(_0x57206c,_0x2aea51=0x14){const _0x46651f=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x57206c,'maxResults':_0x2aea51})});if(!_0x46651f['ok']){const _0xe3359e=await _0x46651f['json']()['catch'](()=>({}));throw new Error(_0xe3359e['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x46651f['statusText']);}return await _0x46651f['json']();},async 'postJiraComment'(_0x116920,_0x584dbb){const _0x980f41=await fetch(API_BASE+'/jira/issues/'+_0x116920+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x584dbb})});if(!_0x980f41['ok']){const _0x280041=await _0x980f41['json']()['catch'](()=>({}));throw new Error(_0x280041['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x980f41['statusText']);}return await _0x980f41['json']();},async 'getJiraComments'(_0x922dba){const _0x4e5a7a=await fetch(API_BASE+'/jira/issues/'+_0x922dba+'/comments');if(!_0x4e5a7a['ok']){const _0xc35359=await _0x4e5a7a['json']()['catch'](()=>({}));throw new Error(_0xc35359['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x4e5a7a['statusText']);}return await _0x4e5a7a['json']();},async 'promptParameter'({environment:_0xbea5a2,command:_0x172554,parser:parser='json'}){const _0x310551=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xbea5a2,'command':_0x172554,'parser':parser})});if(!_0x310551['ok']){const _0xeb14e2=await _0x310551['json']()['catch'](()=>({}));throw new Error(_0xeb14e2['message']||_0xeb14e2['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x310551['statusText']);}return await _0x310551['json']();},async 'promptParameterStream'(_0x1abee0,_0x5f10a6){const _0x251005=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1abee0)});if(!_0x251005['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x251005['statusText']);const _0x242da5=_0x251005['body']['getReader'](),_0x4d3b34=new TextDecoder();let _0x22af1d='';return new Promise((_0x19568c,_0x367abc)=>{const _0x461f58=async()=>{try{const {done:_0x44cdfe,value:_0x4164b3}=await _0x242da5['read']();if(_0x44cdfe)return;_0x22af1d+=_0x4d3b34['decode'](_0x4164b3,{'stream':!![]});const _0x3dfb79=_0x22af1d['split']('\x0a\x0a');_0x22af1d=_0x3dfb79['pop']()||'';for(const _0x36a639 of _0x3dfb79){if(!_0x36a639['trim']())continue;const _0x5daa9f=_0x36a639['split']('\x0a');let _0x156131='message',_0x114808='';for(const _0x1307a2 of _0x5daa9f){if(_0x1307a2['startsWith']('event:'))_0x156131=_0x1307a2['substring'](0x6)['trim']();else _0x1307a2['startsWith']('data:')&&(_0x114808=_0x1307a2['substring'](0x5)['trim']());}if(!_0x114808)continue;try{const _0x2bca7c=JSON['parse'](_0x114808);if(_0x156131==='progress'&&_0x5f10a6)_0x5f10a6(_0x2bca7c['stage'],_0x2bca7c['message']);else{if(_0x156131==='result'){_0x19568c(_0x2bca7c);return;}else{if(_0x156131==='error'){let _0x506802=_0x2bca7c['message']||_0x2bca7c['error']||'Prompt\x20command\x20failed';_0x2bca7c['rawOutput']&&(_0x506802+='\x0a\x0aRaw\x20output:\x0a'+_0x2bca7c['rawOutput']);_0x367abc(new Error(_0x506802));return;}}}}catch(_0x5c7eb3){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5c7eb3),console['error']('Event\x20type:',_0x156131),console['error']('Event\x20data:',_0x114808),console['error']('First\x20200\x20chars:',_0x114808['substring'](0x0,0xc8)),_0x367abc(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5c7eb3['message']+'\x0a\x0aData:\x20'+_0x114808['substring'](0x0,0x1f4)));return;}}_0x461f58();}catch(_0x29235a){_0x367abc(_0x29235a);}};_0x461f58();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x1673ae){const _0x58082f=await fetch(''+API_BASE+_0x1673ae);if(!_0x58082f['ok']){const _0xb1a72e=await _0x58082f['json']()['catch'](()=>({'error':_0x58082f['statusText']})),_0x4f8acf=new Error(_0xb1a72e['error']||_0xb1a72e['message']||_0x58082f['statusText']);if(_0xb1a72e['detail']!==undefined)_0x4f8acf['detail']=_0xb1a72e['detail'];throw _0x4f8acf;}return await _0x58082f['json']();},async 'post'(_0x510ea6,_0x5bb817){const _0x5aabb1=await fetch(''+API_BASE+_0x510ea6,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5bb817)});if(!_0x5aabb1['ok']){const _0x5a3a85=await _0x5aabb1['json']()['catch'](()=>({'error':_0x5aabb1['statusText']})),_0x37bc97=new Error(_0x5a3a85['error']||_0x5a3a85['message']||_0x5aabb1['statusText']);if(_0x5a3a85['detail']!==undefined)_0x37bc97['detail']=_0x5a3a85['detail'];throw _0x37bc97;}return await _0x5aabb1['json']();},async 'put'(_0x7a594c,_0x413681){const _0x40c66a=await fetch(''+API_BASE+_0x7a594c,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x413681)});if(!_0x40c66a['ok']){const _0x5a8ae7=await _0x40c66a['json']()['catch'](()=>({'error':_0x40c66a['statusText']})),_0x516a44=new Error(_0x5a8ae7['error']||_0x5a8ae7['message']||_0x40c66a['statusText']);if(_0x5a8ae7['detail']!==undefined)_0x516a44['detail']=_0x5a8ae7['detail'];throw _0x516a44;}return await _0x40c66a['json']();},async 'delete'(_0x2ec75f,_0x3aee42){const _0x6019d8={'method':'DELETE'};_0x3aee42&&(_0x6019d8['headers']={'Content-Type':'application/json'},_0x6019d8['body']=JSON['stringify'](_0x3aee42));const _0x1df987=await fetch(''+API_BASE+_0x2ec75f,_0x6019d8);if(!_0x1df987['ok']){const _0x1a88bd=await _0x1df987['json']()['catch'](()=>({'error':_0x1df987['statusText']})),_0x216189=new Error(_0x1a88bd['error']||_0x1a88bd['message']||_0x1df987['statusText']);if(_0x1a88bd['detail']!==undefined)_0x216189['detail']=_0x1a88bd['detail'];throw _0x216189;}return await _0x1df987['json']();},async 'getSkills'(){const _0x2b8603=await fetch(API_BASE+'/skills');if(!_0x2b8603['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2b8603['statusText']);return await _0x2b8603['json']();},async 'getSkill'(_0x36e7c9){const _0x11faff=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36e7c9));if(!_0x11faff['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x11faff['statusText']);return await _0x11faff['json']();},async 'createSkill'(_0x241aac){const _0x511d69=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x241aac)});if(!_0x511d69['ok']){const _0x4ec2e6=await _0x511d69['json']()['catch'](()=>({'error':_0x511d69['statusText']})),_0x2b5b7a=new Error(_0x4ec2e6['error']||_0x4ec2e6['message']||_0x511d69['statusText']);if(_0x4ec2e6['detail']!==undefined)_0x2b5b7a['detail']=_0x4ec2e6['detail'];throw _0x2b5b7a;}return await _0x511d69['json']();},async 'updateSkill'(_0x1b8136,_0x498246){const _0x746197=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b8136),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498246)});if(!_0x746197['ok']){const _0x517806=await _0x746197['json']()['catch'](()=>({'error':_0x746197['statusText']})),_0x6ffc56=new Error(_0x517806['error']||_0x517806['message']||_0x746197['statusText']);if(_0x517806['detail']!==undefined)_0x6ffc56['detail']=_0x517806['detail'];throw _0x6ffc56;}return await _0x746197['json']();},async 'deleteSkill'(_0x5d8ecf){const _0x2859cc=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5d8ecf),{'method':'DELETE'});if(!_0x2859cc['ok']){const _0x2948cb=await _0x2859cc['json']()['catch'](()=>({'error':_0x2859cc['statusText']})),_0x21f66e=new Error(_0x2948cb['error']||_0x2948cb['message']||_0x2859cc['statusText']);if(_0x2948cb['detail']!==undefined)_0x21f66e['detail']=_0x2948cb['detail'];throw _0x21f66e;}return await _0x2859cc['json']();},async 'getSkillFile'(_0x2c9e0f,_0x4cf69d){const _0x2818f9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2c9e0f)+'/files/'+_0x4cf69d);if(!_0x2818f9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x2818f9['statusText']);return await _0x2818f9['json']();},async 'saveSkillFile'(_0xd461c7,_0x485430,_0x54a846){const _0x42aea0=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xd461c7)+'/files/'+_0x485430,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x54a846})});if(!_0x42aea0['ok']){const _0x1c3837=await _0x42aea0['json']()['catch'](()=>({'error':_0x42aea0['statusText']})),_0x19f50e=new Error(_0x1c3837['error']||_0x1c3837['message']||_0x42aea0['statusText']);if(_0x1c3837['detail']!==undefined)_0x19f50e['detail']=_0x1c3837['detail'];throw _0x19f50e;}return await _0x42aea0['json']();},async 'deleteSkillFile'(_0x3d5712,_0x262c8b){const _0x112a6f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3d5712)+'/files/'+_0x262c8b,{'method':'DELETE'});if(!_0x112a6f['ok']){const _0x409863=await _0x112a6f['json']()['catch'](()=>({'error':_0x112a6f['statusText']})),_0x2fa625=new Error(_0x409863['error']||_0x409863['message']||_0x112a6f['statusText']);if(_0x409863['detail']!==undefined)_0x2fa625['detail']=_0x409863['detail'];throw _0x2fa625;}return await _0x112a6f['json']();},async 'pullSkills'(){const _0x5a8e77=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x5a8e77['ok']){const _0x2b42fe=await _0x5a8e77['json']()['catch'](()=>({'error':_0x5a8e77['statusText']})),_0x17b8db=new Error(_0x2b42fe['error']||_0x2b42fe['message']||_0x5a8e77['statusText']);if(_0x2b42fe['detail']!==undefined)_0x17b8db['detail']=_0x2b42fe['detail'];throw _0x17b8db;}return await _0x5a8e77['json']();},async 'commitSkills'(_0x1ae3bf,_0x6e2275={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x6e2275,_0x1e210d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1ae3bf,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x1e210d['ok']){const _0x48e66e=await _0x1e210d['json']()['catch'](()=>({'error':_0x1e210d['statusText']})),_0x4b5b64=new Error(_0x48e66e['error']||_0x48e66e['message']||_0x1e210d['statusText']);if(_0x48e66e['detail']!==undefined)_0x4b5b64['detail']=_0x48e66e['detail'];throw _0x4b5b64;}return await _0x1e210d['json']();},async 'discardSkillsChanges'(){const _0x495e50=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x495e50['ok']){const _0x141f96=await _0x495e50['json']()['catch'](()=>({'error':_0x495e50['statusText']})),_0x448eab=new Error(_0x141f96['error']||_0x141f96['message']||_0x495e50['statusText']);if(_0x141f96['detail']!==undefined)_0x448eab['detail']=_0x141f96['detail'];throw _0x448eab;}return await _0x495e50['json']();},async 'getSkillCatalog'(){const _0x1b4f86=await fetch(API_BASE+'/external-skills/catalog');if(!_0x1b4f86['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x1b4f86['statusText']);return await _0x1b4f86['json']();},async 'getImportedSkillsRegistry'(){const _0x51b350=await fetch(API_BASE+'/external-skills/registry');if(!_0x51b350['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x51b350['statusText']);return await _0x51b350['json']();},async 'importCatalogSkill'(_0x562ef1){const _0x3ec80d=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x562ef1})});if(!_0x3ec80d['ok']){const _0x2493fb=await _0x3ec80d['json']()['catch'](()=>({'error':_0x3ec80d['statusText']})),_0x17a4e8=new Error(_0x2493fb['error']||_0x2493fb['message']||_0x3ec80d['statusText']);if(_0x2493fb['detail']!==undefined)_0x17a4e8['detail']=_0x2493fb['detail'];throw _0x17a4e8;}return await _0x3ec80d['json']();},async 'importSkillFromGit'(_0x26fb8a,_0x254f35,_0x1d04ef='main',_0x5e6671=null){const _0x264d73=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x26fb8a,'skillPath':_0x254f35,'branch':_0x1d04ef,'skillId':_0x5e6671})});if(!_0x264d73['ok']){const _0x5235d1=await _0x264d73['json']()['catch'](()=>({'error':_0x264d73['statusText']})),_0x2a1f76=new Error(_0x5235d1['error']||_0x5235d1['message']||_0x264d73['statusText']);if(_0x5235d1['detail']!==undefined)_0x2a1f76['detail']=_0x5235d1['detail'];throw _0x2a1f76;}return await _0x264d73['json']();},async 'probeMarketplace'(_0x384a9d,_0x36e3c6='main'){const _0x2561bc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x384a9d,'branch':_0x36e3c6})});if(!_0x2561bc['ok']){const _0x3b1bb3=await _0x2561bc['json']()['catch'](()=>({'error':_0x2561bc['statusText']})),_0x5bdf7a=new Error(_0x3b1bb3['error']||_0x3b1bb3['message']||_0x2561bc['statusText']);if(_0x3b1bb3['detail']!==undefined)_0x5bdf7a['detail']=_0x3b1bb3['detail'];throw _0x5bdf7a;}return await _0x2561bc['json']();},async 'importMarketplaceBundle'(_0x4dd592,_0x29234f,_0x4960dd,_0x6cd29c=null){const _0x5069c4=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x4dd592,'branch':_0x29234f,'bundleId':_0x4960dd,'selectedSkills':_0x6cd29c})});if(!_0x5069c4['ok']){const _0xd93c66=await _0x5069c4['json']()['catch'](()=>({'error':_0x5069c4['statusText']})),_0x1ceabb=new Error(_0xd93c66['error']||_0xd93c66['message']||_0x5069c4['statusText']);if(_0xd93c66['detail']!==undefined)_0x1ceabb['detail']=_0xd93c66['detail'];throw _0x1ceabb;}return await _0x5069c4['json']();},async 'importSkillFromFolder'(_0x44b1a1,_0x58f937=null){const _0x1dd59a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x44b1a1,'skillId':_0x58f937})});if(!_0x1dd59a['ok']){const _0x4a65ca=await _0x1dd59a['json']()['catch'](()=>({'error':_0x1dd59a['statusText']})),_0xf5444=new Error(_0x4a65ca['error']||_0x4a65ca['message']||_0x1dd59a['statusText']);if(_0x4a65ca['detail']!==undefined)_0xf5444['detail']=_0x4a65ca['detail'];throw _0xf5444;}return await _0x1dd59a['json']();},async 'importSkillFromNpm'(_0x75588d,_0x2385dd='latest',_0x548244=null,_0x5da076=null){const _0x2fa580=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x75588d,'version':_0x2385dd,'skillId':_0x548244,'registry':_0x5da076})});if(!_0x2fa580['ok']){const _0x1041dc=await _0x2fa580['json']()['catch'](()=>({'error':_0x2fa580['statusText']})),_0x17cb4e=new Error(_0x1041dc['error']||_0x1041dc['message']||_0x2fa580['statusText']);if(_0x1041dc['detail']!==undefined)_0x17cb4e['detail']=_0x1041dc['detail'];throw _0x17cb4e;}return await _0x2fa580['json']();},async 'checkSkillUpdates'(_0xfea491){const _0x347aeb=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xfea491)+'/check-updates',{'method':'POST'});if(!_0x347aeb['ok']){const _0x29a941=await _0x347aeb['json']()['catch'](()=>({'error':_0x347aeb['statusText']})),_0x274148=new Error(_0x29a941['error']||_0x29a941['message']||_0x347aeb['statusText']);if(_0x29a941['detail']!==undefined)_0x274148['detail']=_0x29a941['detail'];throw _0x274148;}return await _0x347aeb['json']();},async 'updateExternalSkill'(_0x399983){const _0xbf3477=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x399983)+'/update',{'method':'POST'});if(!_0xbf3477['ok']){const _0x1777f1=await _0xbf3477['json']()['catch'](()=>({'error':_0xbf3477['statusText']})),_0x3fddca=new Error(_0x1777f1['error']||_0x1777f1['message']||_0xbf3477['statusText']);if(_0x1777f1['detail']!==undefined)_0x3fddca['detail']=_0x1777f1['detail'];throw _0x3fddca;}return await _0xbf3477['json']();},async 'updateSkillFlags'(_0xf2d9e,_0x34fe8a){const _0x3631fe=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xf2d9e)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x34fe8a})});if(!_0x3631fe['ok']){const _0x1ea90c=await _0x3631fe['json']()['catch'](()=>({'error':_0x3631fe['statusText']})),_0x4b13ff=new Error(_0x1ea90c['error']||_0x1ea90c['message']||_0x3631fe['statusText']);if(_0x1ea90c['detail']!==undefined)_0x4b13ff['detail']=_0x1ea90c['detail'];throw _0x4b13ff;}return await _0x3631fe['json']();},async 'removeFromImportedRegistry'(_0x22afe1){const _0x349a20=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x22afe1)+'/registry',{'method':'DELETE'});if(!_0x349a20['ok']){const _0x7a509=await _0x349a20['json']()['catch'](()=>({'error':_0x349a20['statusText']})),_0x5c2113=new Error(_0x7a509['error']||_0x7a509['message']||_0x349a20['statusText']);if(_0x7a509['detail']!==undefined)_0x5c2113['detail']=_0x7a509['detail'];throw _0x5c2113;}return await _0x349a20['json']();},async 'getTeams'(){const _0x4532fd=await fetch(API_BASE+'/teams');if(!_0x4532fd['ok']){const _0x58cffe=await _0x4532fd['json']()['catch'](()=>({'message':_0x4532fd['statusText']}));throw new Error(_0x58cffe['message']||'Failed\x20to\x20get\x20teams');}return await _0x4532fd['json']();},async 'getTeam'(_0x101a1c){const _0x25d435=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x101a1c));if(!_0x25d435['ok']){const _0x51966d=await _0x25d435['json']()['catch'](()=>({'message':_0x25d435['statusText']}));throw new Error(_0x51966d['message']||'Failed\x20to\x20get\x20team');}return await _0x25d435['json']();},async 'createTeam'(_0x18ea8d){const _0x2e22bb=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x18ea8d)});if(!_0x2e22bb['ok']){const _0x3d93d8=await _0x2e22bb['json']()['catch'](()=>({'message':_0x2e22bb['statusText']}));throw new Error(_0x3d93d8['message']||'Failed\x20to\x20create\x20team');}return await _0x2e22bb['json']();},async 'updateTeam'(_0x30006c,_0x452dc2){const _0x64b631=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x30006c),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x452dc2)});if(!_0x64b631['ok']){const _0x4ccc6c=await _0x64b631['json']()['catch'](()=>({'message':_0x64b631['statusText']}));throw new Error(_0x4ccc6c['message']||'Failed\x20to\x20update\x20team');}return await _0x64b631['json']();},async 'deleteTeam'(_0x5f3ead){const _0x63792b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5f3ead),{'method':'DELETE'});if(!_0x63792b['ok']){const _0x53fe4d=await _0x63792b['json']()['catch'](()=>({'message':_0x63792b['statusText']}));throw new Error(_0x53fe4d['message']||'Failed\x20to\x20delete\x20team');}return await _0x63792b['json']();},async 'addTeamMember'(_0xf47a21,_0x4ef7f8){const _0x2dc554=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xf47a21)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x4ef7f8})});if(!_0x2dc554['ok']){const _0x49fe8e=await _0x2dc554['json']()['catch'](()=>({'message':_0x2dc554['statusText']}));throw new Error(_0x49fe8e['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2dc554['json']();},async 'removeTeamMember'(_0x397080,_0x33efb6){const _0x1c2df5=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x397080)+'/members/'+encodeURIComponent(_0x33efb6),{'method':'DELETE'});if(!_0x1c2df5['ok']){const _0x1ac12e=await _0x1c2df5['json']()['catch'](()=>({'message':_0x1c2df5['statusText']}));throw new Error(_0x1ac12e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x1c2df5['json']();},async 'getBindings'(_0x4e544c={}){const _0x4c328e=new URLSearchParams();if(_0x4e544c['resource_type'])_0x4c328e['set']('resource_type',_0x4e544c['resource_type']);if(_0x4e544c['resource_id'])_0x4c328e['set']('resource_id',_0x4e544c['resource_id']);if(_0x4e544c['subject_type'])_0x4c328e['set']('subject_type',_0x4e544c['subject_type']);if(_0x4e544c['subject_id'])_0x4c328e['set']('subject_id',_0x4e544c['subject_id']);const _0x19dcb9=_0x4c328e['toString'](),_0x72a4b4=await fetch(API_BASE+'/bindings'+(_0x19dcb9?'?'+_0x19dcb9:''));if(!_0x72a4b4['ok']){const _0x217fee=await _0x72a4b4['json']()['catch'](()=>({'message':_0x72a4b4['statusText']}));throw new Error(_0x217fee['message']||'Failed\x20to\x20get\x20bindings');}return await _0x72a4b4['json']();},async 'createBinding'(_0x365128){const _0x563c31=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x365128)});if(!_0x563c31['ok']){const _0x5387a6=await _0x563c31['json']()['catch'](()=>({'message':_0x563c31['statusText']}));throw new Error(_0x5387a6['message']||'Failed\x20to\x20create\x20binding');}return await _0x563c31['json']();},async 'updateBinding'(_0x35530f,_0x118eae){const _0xf1ec49=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x35530f),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x118eae)});if(!_0xf1ec49['ok']){const _0xa33993=await _0xf1ec49['json']()['catch'](()=>({'message':_0xf1ec49['statusText']}));throw new Error(_0xa33993['message']||'Failed\x20to\x20update\x20binding');}return await _0xf1ec49['json']();},async 'deleteBinding'(_0x14c553){const _0x4e3998=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x14c553),{'method':'DELETE'});if(!_0x4e3998['ok']){const _0x579f22=await _0x4e3998['json']()['catch'](()=>({'message':_0x4e3998['statusText']}));throw new Error(_0x579f22['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4e3998['json']();},async 'getRoleDefinitions'(){const _0x1ec491=await fetch(API_BASE+'/roles');if(!_0x1ec491['ok']){const _0x1edf4e=await _0x1ec491['json']()['catch'](()=>({'message':_0x1ec491['statusText']}));throw new Error(_0x1edf4e['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x1ec491['json']();},async 'getRoleDefinition'(_0x178d7b){const _0x1395bd=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x178d7b));if(!_0x1395bd['ok']){const _0x39376c=await _0x1395bd['json']()['catch'](()=>({'message':_0x1395bd['statusText']}));throw new Error(_0x39376c['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x1395bd['json']();},async 'createRoleDefinition'(_0x5ac8ff){const _0x1e80c3=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ac8ff)});if(!_0x1e80c3['ok']){const _0x3d4868=await _0x1e80c3['json']()['catch'](()=>({'message':_0x1e80c3['statusText']}));throw new Error(_0x3d4868['message']||_0x3d4868['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1e80c3['json']();},async 'updateRoleDefinition'(_0x2797ba,_0x33b5b5){const _0x343199=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2797ba),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33b5b5)});if(!_0x343199['ok']){const _0x1dc135=await _0x343199['json']()['catch'](()=>({'message':_0x343199['statusText']}));throw new Error(_0x1dc135['message']||_0x1dc135['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x343199['json']();},async 'deleteRoleDefinition'(_0x11d47b){const _0x241294=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x11d47b),{'method':'DELETE'});if(!_0x241294['ok']){const _0x2a0995=await _0x241294['json']()['catch'](()=>({'message':_0x241294['statusText']}));throw new Error(_0x2a0995['message']||_0x2a0995['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x241294['json']();},async 'getAvailablePermissions'(){const _0x5b7259=await fetch(API_BASE+'/roles/available-permissions');if(!_0x5b7259['ok']){const _0x2618c0=await _0x5b7259['json']()['catch'](()=>({'message':_0x5b7259['statusText']}));throw new Error(_0x2618c0['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x5b7259['json']();},async 'getGitProviderAllowedTeams'(_0x8acf7a){const _0x13e573=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x8acf7a)+'/allowed-teams');if(!_0x13e573['ok']){const _0x3e0909=await _0x13e573['json']()['catch'](()=>({'message':_0x13e573['statusText']}));throw new Error(_0x3e0909['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x13e573['json']();},async 'setGitProviderAllowedTeams'(_0x130592,_0x783c2e){const _0x3cacf3=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x130592)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x783c2e})});if(!_0x3cacf3['ok']){const _0x1f829b=await _0x3cacf3['json']()['catch'](()=>({'message':_0x3cacf3['statusText']}));throw new Error(_0x1f829b['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3cacf3['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 _0x7a1c3b=toastState['baseBottom'];toastState['toasts']['forEach'](_0x555fa5=>{_0x555fa5['el']['style']['bottom']=_0x7a1c3b+'px';const _0x366e53=_0x555fa5['el']['offsetHeight']||toastState['defaultHeight'];_0x7a1c3b+=_0x366e53+toastState['gap'];});});}function removeToastById(_0x5be30f){const _0x4f3ebb=toastState['toasts']['findIndex'](_0x37bcd3=>_0x37bcd3['id']===_0x5be30f);if(_0x4f3ebb===-0x1)return;const _0x3df90f=toastState['toasts'][_0x4f3ebb];if(_0x3df90f['timeoutId'])clearTimeout(_0x3df90f['timeoutId']);_0x3df90f['el']['classList']['remove']('show'),setTimeout(()=>_0x3df90f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x4f3ebb,0x1),repositionAllToasts();}function registerToast(_0x22a844){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x22a844),repositionAllToasts(),_0x22a844['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(_0x5f2afe){if(_0x5f2afe===null||_0x5f2afe===undefined)return'';return String(_0x5f2afe)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x2349c4,_0x235733){if(_0x2349c4&&typeof _0x2349c4==='object'&&!Array['isArray'](_0x2349c4))return{'code':typeof _0x2349c4['text']==='string'?_0x2349c4['text']:'','language':typeof _0x2349c4['lang']==='string'?_0x2349c4['lang']:''};return{'code':typeof _0x2349c4==='string'?_0x2349c4:'','language':typeof _0x235733==='string'?_0x235733:''};}function buildMermaidBlock(_0x13488c){const _0x1c385f=String(_0x13488c||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1c385f))+'\x22>'+escapeHtmlValue(_0x1c385f)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x36843b=new marked['Renderer'](),_0x471606=_0x36843b['code']['bind'](_0x36843b);return _0x36843b['code']=function(_0x3f8c17,_0x14f3f4,..._0x4972af){const {code:_0x4cd2c8,language:_0x52ba1b}=getMarkdownCodeBlockPayload(_0x3f8c17,_0x14f3f4),_0x4b1da9=String(_0x52ba1b||'')['trim']()['toLowerCase']();if(_0x4b1da9==='mermaid')return buildMermaidBlock(_0x4cd2c8);const _0x24f09a=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x24f09a&&_0x4b1da9)try{const _0x529c0b=_0x24f09a['getLanguage'](_0x4b1da9)?_0x4b1da9:'plaintext',_0x50b472=_0x24f09a['highlight'](_0x4cd2c8,{'language':_0x529c0b})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4b1da9)+'\x22>'+_0x50b472+'</code></pre>';}catch(_0x2f6889){console['error']('Syntax\x20highlighting\x20error:',_0x2f6889);}return _0x471606(_0x3f8c17,_0x14f3f4,..._0x4972af);},sharedMarkedRenderer=_0x36843b,_0x36843b;}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 _0x5a70ed=window['mermaid'];if(!_0x5a70ed||typeof _0x5a70ed['initialize']!=='function')return _0x5a70ed||null;return _0x5a70ed['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x5a70ed;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4c7667,_0x5d540b)=>{const _0x4172b9=()=>_0x4c7667(configureMermaidInstance()),_0xcff783=()=>{mermaidLoadPromise=null,_0x5d540b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x5cde29=document['getElementById'](MERMAID_SCRIPT_ID);!_0x5cde29&&(_0x5cde29=document['createElement']('script'),_0x5cde29['id']=MERMAID_SCRIPT_ID,_0x5cde29['src']=MERMAID_SCRIPT_SRC,_0x5cde29['async']=!![],document['head']['appendChild'](_0x5cde29));if(window['mermaid']){_0x4172b9();return;}_0x5cde29['addEventListener']('load',_0x4172b9,{'once':!![]}),_0x5cde29['addEventListener']('error',_0xcff783,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x57da33){const _0x19825b=_0x57da33['getAttribute']('data-mermaid-source');if(!_0x19825b)return null;let _0x1cd5ca=_0x19825b;try{_0x1cd5ca=decodeURIComponent(_0x19825b);}catch{}return _0x57da33['textContent']=_0x1cd5ca,_0x57da33['removeAttribute']('data-processed'),_0x57da33['removeAttribute']('aria-roledescription'),_0x57da33['removeAttribute']('role'),_0x57da33['removeAttribute']('aria-label'),_0x1cd5ca;}function collectMermaidNodes(_0x2277b7,_0x1dde4d){if(!(_0x2277b7 instanceof Element))return;_0x2277b7['matches']('.mermaid[data-mermaid-source]')&&_0x1dde4d['add'](_0x2277b7),_0x2277b7['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x361a8d=>{_0x1dde4d['add'](_0x361a8d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x58855a=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x2c41f6=>setTimeout(_0x2c41f6,0x0);_0x58855a(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5d06c2=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5d06c2);});});}function queueMermaidRender(_0x178706){const _0x4b5044=new Set();_0x178706 instanceof Document||_0x178706 instanceof DocumentFragment?_0x178706['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x26865c=>_0x4b5044['add'](_0x26865c)):collectMermaidNodes(_0x178706,_0x4b5044);if(_0x4b5044['size']===0x0)return;_0x4b5044['forEach'](_0x7a9fb8=>pendingMermaidNodes['add'](_0x7a9fb8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x5130f3=Array['from'](pendingMermaidNodes)['filter'](_0x5e9c7a=>_0x5e9c7a['isConnected']);pendingMermaidNodes['clear']();if(_0x5130f3['length']===0x0)return;const _0x11b6f4=await loadMermaid();if(!_0x11b6f4)return;configureMermaidInstance();const _0x5271b7=getMermaidTheme();for(const _0x58c4f8 of _0x5130f3){const _0x1c011d=_0x58c4f8['getAttribute']('data-mermaid-source');if(!_0x1c011d)continue;const _0x5d13a9=_0x58c4f8['getAttribute']('data-processed')==='true';if(_0x5d13a9&&_0x58c4f8['dataset']['mermaidTheme']===_0x5271b7)continue;restoreMermaidSource(_0x58c4f8);try{if(typeof _0x11b6f4['run']==='function')await _0x11b6f4['run']({'nodes':[_0x58c4f8]});else typeof _0x11b6f4['init']==='function'&&_0x11b6f4['init'](undefined,[_0x58c4f8]);_0x58c4f8['dataset']['mermaidTheme']=_0x5271b7,delete _0x58c4f8['dataset']['mermaidError'];}catch(_0xa54d46){console['error']('Mermaid\x20render\x20failed:',_0xa54d46),restoreMermaidSource(_0x58c4f8),_0x58c4f8['dataset']['mermaidError']='true',delete _0x58c4f8['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1c3fce=>{_0x1c3fce['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x1c3fce);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x4d4c6f=>{_0x4d4c6f['forEach'](_0x5ee531=>{_0x5ee531['addedNodes']['forEach'](_0x2e7972=>{_0x2e7972['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x2e7972);});});}),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'(_0x548f61){const _0x3ebbba=new Date(_0x548f61),_0xf2393d=new Date(),_0x348018=_0xf2393d-_0x3ebbba,_0x3194c1=Math['floor'](_0x348018/0x3e8),_0x4b470a=Math['floor'](_0x3194c1/0x3c),_0x5a3303=Math['floor'](_0x4b470a/0x3c),_0x40b7a6=Math['floor'](_0x5a3303/0x18);if(_0x3194c1<0x3c)return'now';if(_0x4b470a<0x3c)return _0x4b470a+'m\x20ago';if(_0x5a3303<0x18)return _0x5a3303+'h\x20ago';return _0x40b7a6+'d\x20ago';},'getStatusIcon'(_0x18b265){switch(_0x18b265){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x125a19){switch(_0x125a19){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'(_0x3e825d,_0xba4590=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x53ef66={};_0x53ef66['text/plain']=new Blob([_0x3e825d],{'type':'text/plain'});_0xba4590&&(_0x53ef66['text/html']=new Blob([_0xba4590],{'type':'text/html'}));const _0xd2ae8a=new ClipboardItem(_0x53ef66);return await navigator['clipboard']['write']([_0xd2ae8a]),!![];}catch(_0x2d8979){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x2d8979);}try{const _0x56fc7d=_0x1aff03=>{_0x1aff03['preventDefault'](),_0x1aff03['clipboardData']['setData']('text/plain',_0x3e825d),_0xba4590&&_0x1aff03['clipboardData']['setData']('text/html',_0xba4590);};document['addEventListener']('copy',_0x56fc7d);const _0x5e24b9=document['execCommand']('copy');document['removeEventListener']('copy',_0x56fc7d);if(_0x5e24b9)return!![];}catch(_0xa4c177){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xa4c177);}try{const _0x3faf32=document['createElement']('textarea');_0x3faf32['value']=_0x3e825d,_0x3faf32['style']['position']='fixed',_0x3faf32['style']['opacity']='0',_0x3faf32['style']['pointerEvents']='none',document['body']['appendChild'](_0x3faf32),_0x3faf32['select']();const _0x15be56=document['execCommand']('copy');return document['body']['removeChild'](_0x3faf32),_0x15be56;}catch(_0x972297){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x972297),![];}},'showToast'(_0x2af2d7,_0x221ce9='info'){const _0x3fe74d=getNextToastId(),_0x255a57=document['createElement']('div');_0x255a57['className']='toast\x20toast-'+_0x221ce9,_0x255a57['textContent']=_0x2af2d7,_0x255a57['dataset']['toastId']=_0x3fe74d,document['body']['appendChild'](_0x255a57);const _0xc884ec=_0x221ce9==='error'?0x2710:0xbb8,_0x50bd68=setTimeout(()=>{removeToastById(_0x3fe74d);},_0xc884ec),_0x42f6ad={'id':_0x3fe74d,'el':_0x255a57,'timeoutId':_0x50bd68};return registerToast(_0x42f6ad),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x255a57['classList']['add']('show');});}),_0x3fe74d;},'showError'(_0x1dec0c){console['error'](_0x1dec0c);const _0x44b3c3=typeof _0x1dec0c==='string'?_0x1dec0c:_0x1dec0c['message']||'An\x20error\x20occurred';this['showToast'](_0x44b3c3,'error');},'showSuccess'(_0x2686b3){this['showToast'](_0x2686b3,'success');},'capitalize'(_0x1850b0){if(!_0x1850b0)return'';return _0x1850b0['charAt'](0x0)['toUpperCase']()+_0x1850b0['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x4940c2){return escapeHtmlValue(_0x4940c2);},'ansiToHtml'(_0x46ced4){if(_0x46ced4===null||_0x46ced4===undefined)return'';let _0xd6af58=this['escapeHtml'](_0x46ced4);const _0xf7ccb9={'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'},_0x543aa6={'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 _0x57bdc8=0x0;return _0xd6af58=_0xd6af58['replace'](/\x1b\[([0-9;]*)m/g,(_0x388f20,_0x4658b8)=>{if(!_0x4658b8||_0x4658b8==='0'){const _0x346ed1='</span>'['repeat'](_0x57bdc8);return _0x57bdc8=0x0,_0x346ed1;}const _0x316369=_0x4658b8['split'](';'),_0xd6523d=[];for(const _0x3f3633 of _0x316369){if(_0x3f3633==='1')_0xd6523d['push']('font-weight:bold');else{if(_0x3f3633==='2')_0xd6523d['push']('opacity:0.7');else{if(_0x3f3633==='3')_0xd6523d['push']('font-style:italic');else{if(_0x3f3633==='4')_0xd6523d['push']('text-decoration:underline');else{if(_0x3f3633==='9')_0xd6523d['push']('text-decoration:line-through');else{if(_0xf7ccb9[_0x3f3633])_0xd6523d['push']('color:'+_0xf7ccb9[_0x3f3633]);else{if(_0x543aa6[_0x3f3633])_0xd6523d['push']('background-color:'+_0x543aa6[_0x3f3633]);}}}}}}}if(_0xd6523d['length']>0x0)return _0x57bdc8++,'<span\x20style=\x22'+_0xd6523d['join'](';')+'\x22>';return'';}),_0xd6af58+='</span>'['repeat'](_0x57bdc8),_0xd6af58=_0xd6af58['replace'](/\\u001b\[([0-9;]*)m/g,(_0x3403de,_0x53ab58)=>{if(!_0x53ab58||_0x53ab58==='0')return'';const _0x1cae68=_0x53ab58['split'](';'),_0x480f73=[];for(const _0x2c4818 of _0x1cae68){if(_0x2c4818==='1')_0x480f73['push']('font-weight:bold');else{if(_0xf7ccb9[_0x2c4818])_0x480f73['push']('color:'+_0xf7ccb9[_0x2c4818]);else{if(_0x543aa6[_0x2c4818])_0x480f73['push']('background-color:'+_0x543aa6[_0x2c4818]);}}}if(_0x480f73['length']>0x0)return'<span\x20style=\x22'+_0x480f73['join'](';')+'\x22>';return'';}),_0xd6af58;},'showModal'({title:_0x389c33,content:_0x53d1e5,buttons:buttons=[]}){const _0x3427a1='\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'](_0x389c33)+'</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'+_0x53d1e5+'\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']((_0x2ff8ba,_0x5abd55)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x2ff8ba['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5abd55+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x2ff8ba['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',_0x499532=document['createElement']('div');_0x499532['id']='utils-modal',_0x499532['className']='modal',_0x499532['innerHTML']=_0x3427a1,document['body']['appendChild'](_0x499532);const _0x2db970=document['getElementById']('utils-modal-close');_0x2db970&&_0x2db970['addEventListener']('click',()=>this['hideModal']());const _0x5f1330=_0x499532['querySelectorAll']('[data-btn-index]');_0x5f1330['forEach'](_0xb70f83=>{const _0x3700e7=parseInt(_0xb70f83['dataset']['btnIndex']);buttons[_0x3700e7]?.['onClick']&&_0xb70f83['addEventListener']('click',buttons[_0x3700e7]['onClick']);});const _0x2686cf=document['getElementById']('utils-modal-overlay');_0x2686cf&&_0x2686cf['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x23d67e=document['getElementById']('utils-modal');_0x23d67e&&_0x23d67e['remove']();},'parseKeyValuePairs'(_0x41d021){const _0x13b074={};if(!_0x41d021)return _0x13b074;return _0x41d021['split'](/\r?\n/)['map'](_0x25bc0c=>_0x25bc0c['trim']())['filter'](Boolean)['forEach'](_0x294828=>{const _0x354cdf=_0x294828['indexOf']('=');if(_0x354cdf>0x0){const _0x57c15b=_0x294828['slice'](0x0,_0x354cdf)['trim'](),_0x296b58=_0x294828['slice'](_0x354cdf+0x1)['trim']();if(_0x57c15b)_0x13b074[_0x57c15b]=_0x296b58;}}),_0x13b074;},'debounce'(_0x21638d,_0x35c825=0xfa){let _0x4b290c=null;return(..._0x388e6d)=>{clearTimeout(_0x4b290c),_0x4b290c=setTimeout(()=>_0x21638d['apply'](this,_0x388e6d),_0x35c825);};},'formatTimestamp'(_0x1ad2c8){if(!_0x1ad2c8)return'N/A';const _0x4689f3=new Date(_0x1ad2c8);return _0x4689f3['toLocaleDateString']()+'\x20'+_0x4689f3['toLocaleTimeString']();},'getQueryParams'(){const _0x6ee5=new URLSearchParams(window['location']['search']),_0x44c070={};for(const [_0x33dcde,_0x1de0b3]of _0x6ee5){_0x44c070[_0x33dcde]=_0x1de0b3;}return _0x44c070;},'formatDuration'(_0x14e51b,_0x21d8df){if(!_0x14e51b)return'N/A';const _0x1cfe10=new Date(_0x14e51b),_0x2df19d=_0x21d8df?new Date(_0x21d8df):new Date(),_0x3a7203=_0x2df19d-_0x1cfe10;if(_0x3a7203<0x0)return'0s';const _0x5564ab=Math['floor'](_0x3a7203/0x3e8),_0x4b541d=Math['floor'](_0x5564ab/0x3c),_0x2803ab=Math['floor'](_0x4b541d/0x3c),_0x21f8dd=Math['floor'](_0x2803ab/0x18);if(_0x5564ab<0x3c)return _0x5564ab+'s';if(_0x4b541d<0x3c)return _0x4b541d+'m\x20'+_0x5564ab%0x3c+'s';if(_0x2803ab<0x18)return _0x2803ab+'h\x20'+_0x4b541d%0x3c+'m\x20'+_0x5564ab%0x3c+'s';return _0x21f8dd+'d\x20'+_0x2803ab%0x18+'h\x20'+_0x4b541d%0x3c+'m';},'renderMarkdown'(_0x55aaef,_0x5a715d={}){if(!_0x55aaef)return'';_0x55aaef=this['rewriteAttachmentLinks'](_0x55aaef,_0x5a715d),_0x55aaef=this['rewriteColorSyntax'](_0x55aaef);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x55aaef);}catch(_0x32f21f){return console['error']('Markdown\x20parsing\x20error:',_0x32f21f),this['renderMarkdownFallback'](_0x55aaef,_0x5a715d);}},'rewriteAttachmentLinks'(_0x50ee4d,_0x5afe69={}){const _0x930fd9=typeof _0x5afe69['resolveAttachmentUrl']==='function'?_0x5afe69['resolveAttachmentUrl']:_0x5afe69['taskId']?_0x6c93f6=>API_BASE+'/tasks/'+_0x5afe69['taskId']+'/attachments/'+encodeURIComponent(_0x6c93f6):null;if(!_0x930fd9)return _0x50ee4d;return String(_0x50ee4d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3f14b3,_0x2d745f)=>{const _0x8645c8=String(_0x2d745f||'')['trim']();if(!_0x8645c8)return _0x3f14b3;let _0x427c56=_0x8645c8;try{_0x427c56=decodeURIComponent(_0x8645c8);}catch{}const _0x1380d1=_0x930fd9(_0x427c56);if(!_0x1380d1)return _0x3f14b3;return']('+_0x1380d1+')';});},'rewriteColorSyntax'(_0x5511ca){if(!_0x5511ca)return _0x5511ca;return String(_0x5511ca)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x44a01f,_0x1fcf87,_0x5ce656)=>{const _0x18f92f=this['rewriteColorSyntax'](_0x5ce656);return'<span\x20style=\x22color:\x20'+_0x1fcf87+'\x22>'+_0x18f92f+'</span>';});},'renderMarkdownFallback'(_0x1ed004,_0x42fad2={}){if(!_0x1ed004)return'';_0x1ed004=_0x1ed004['replace'](/\r\n/g,'\x0a'),_0x1ed004=_0x1ed004['replace'](/\r/g,'\x0a'),_0x1ed004=this['rewriteAttachmentLinks'](_0x1ed004,_0x42fad2);let _0x58f3bd=this['escapeHtml'](_0x1ed004);return _0x58f3bd=_0x58f3bd['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x58f3bd=_0x58f3bd['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x58f3bd=_0x58f3bd['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x58f3bd=_0x58f3bd['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x58f3bd=_0x58f3bd['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x58f3bd=_0x58f3bd['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x58f3bd=_0x58f3bd['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x58f3bd=_0x58f3bd['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x58f3bd=_0x58f3bd['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x58f3bd=_0x58f3bd['replace'](/\n\n/g,'</p><p>'),_0x58f3bd=_0x58f3bd['replace'](/\n/g,'<br>'),'<p>'+_0x58f3bd+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x5b1d94=new Uint8Array(0x10);crypto['getRandomValues'](_0x5b1d94),_0x5b1d94[0x6]=_0x5b1d94[0x6]&0xf|0x40,_0x5b1d94[0x8]=_0x5b1d94[0x8]&0x3f|0x80;const _0x3c86d7=Array['from'](_0x5b1d94,_0x15e178=>_0x15e178['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x3c86d7['slice'](0x0,0x8)+'-'+_0x3c86d7['slice'](0x8,0xc)+'-'+_0x3c86d7['slice'](0xc,0x10)+'-'+_0x3c86d7['slice'](0x10,0x14)+'-'+_0x3c86d7['slice'](0x14);}};export class CustomSelect{constructor(_0x1e4e6f,_0x373c81={}){this['nativeSelect']=_0x1e4e6f,this['options']=_0x373c81,this['isOpen']=![],this['selectedValue']=_0x1e4e6f['value']||'',this['searchable']=_0x373c81['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x42474d=document['createElement']('div');_0x42474d['className']='custom-select';const _0x3641ad=document['createElement']('div');_0x3641ad['className']='custom-select-trigger',_0x3641ad['setAttribute']('tabindex','0'),_0x3641ad['setAttribute']('role','button'),_0x3641ad['setAttribute']('aria-haspopup','listbox');const _0x13ff34=document['createElement']('span');_0x13ff34['className']='custom-select-trigger-text';const _0x4494a1=document['createElement']('span');_0x4494a1['className']='custom-select-arrow',_0x4494a1['textContent']='▼',_0x3641ad['appendChild'](_0x13ff34),_0x3641ad['appendChild'](_0x4494a1);const _0x4133c3=document['createElement']('div');_0x4133c3['className']='custom-select-dropdown',_0x4133c3['setAttribute']('role','listbox');if(this['searchable']){const _0x35c108=document['createElement']('div');_0x35c108['className']='custom-select-search';const _0x35dff4=document['createElement']('input');_0x35dff4['type']='text',_0x35dff4['className']='custom-select-search-input',_0x35dff4['placeholder']='Type\x20to\x20search...',_0x35dff4['setAttribute']('aria-label','Search\x20options'),_0x35dff4['addEventListener']('input',_0x234998=>{this['searchQuery']=_0x234998['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x35dff4['addEventListener']('keydown',_0x494899=>{if(_0x494899['key']==='Escape')_0x494899['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x494899['key']==='Enter'){_0x494899['preventDefault'](),_0x494899['stopPropagation']();const _0x511acc=_0x4133c3['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x511acc){const _0x3a5abf=_0x511acc['getAttribute']('data-value');this['select'](_0x3a5abf);}}}}),_0x35c108['appendChild'](_0x35dff4),_0x4133c3['appendChild'](_0x35c108),this['searchInput']=_0x35dff4;}const _0x464965=document['createElement']('div');_0x464965['className']='custom-select-options',_0x4133c3['appendChild'](_0x464965),_0x42474d['appendChild'](_0x3641ad),_0x42474d['appendChild'](_0x4133c3),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x42474d,this['nativeSelect']),this['wrapper']=_0x42474d,this['trigger']=_0x3641ad,this['triggerText']=_0x13ff34,this['dropdown']=_0x4133c3,this['optionsContainer']=_0x464965,_0x3641ad['addEventListener']('click',()=>this['toggle']()),_0x3641ad['addEventListener']('keydown',_0x40e039=>this['handleKeydown'](_0x40e039)),document['addEventListener']('click',_0xa32bc2=>{!_0x42474d['contains'](_0xa32bc2['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x180dcf=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x180dcf['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x4cc9a4=new MutationObserver(()=>{this['updateDisabledState']();});_0x4cc9a4['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5be427=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5be427['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x25673d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x25673d),this['trigger']['setAttribute']('aria-disabled',_0x25673d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x25673d?'-1':'0'),_0x25673d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xd9a5be=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x578085=_0xd9a5be['filter'](_0x3b51ef=>!_0x3b51ef['disabled']&&!_0x3b51ef['hidden']);_0xd9a5be['forEach']((_0x1fe3ce,_0x282349)=>{const _0x1ef1b8=document['createElement']('div');_0x1ef1b8['className']='custom-select-option',_0x1ef1b8['textContent']=_0x1fe3ce['textContent'],_0x1ef1b8['setAttribute']('data-value',_0x1fe3ce['value']),_0x1ef1b8['setAttribute']('data-index',_0x282349),_0x1ef1b8['setAttribute']('role','option'),_0x1fe3ce['disabled']?_0x1ef1b8['classList']['add']('disabled'):_0x1ef1b8['addEventListener']('click',()=>this['select'](_0x1fe3ce['value'])),_0x1fe3ce['value']===this['selectedValue']&&_0x1ef1b8['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1ef1b8),this['allOptions']['push']({'element':_0x1ef1b8,'text':_0x1fe3ce['textContent']['toLowerCase'](),'value':_0x1fe3ce['value'],'disabled':_0x1fe3ce['disabled']});});if(this['searchable']&&this['searchInput']){const _0x146f02=this['searchInput']['parentElement'];_0x578085['length']>0x3?_0x146f02['style']['display']='':_0x146f02['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4836ac=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x709f14=>{if(!_0x4836ac||_0x709f14['disabled'])_0x709f14['element']['style']['display']='';else{const _0xa7c42=_0x709f14['text']['includes'](_0x4836ac);_0x709f14['element']['style']['display']=_0xa7c42?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x2f201b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x2f201b,this['nativeSelect']['value']=_0x2f201b;const _0x2ab19d=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x2ab19d),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x45183f=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x45183f&&(this['triggerText']['textContent']=_0x45183f['textContent'],_0x45183f['disabled']||_0x45183f['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x818e09=>{_0x818e09['getAttribute']('data-value')===this['selectedValue']?_0x818e09['classList']['add']('selected'):_0x818e09['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 _0x136a40=window['getComputedStyle'](this['dropdown']);if(_0x136a40['position']==='fixed'){const _0x3ab68f=this['trigger']['getBoundingClientRect'](),_0x258f2f=parseInt(_0x136a40['maxHeight'])||0xc8,_0x4abde6=window['innerHeight'],_0x4aa5b3=_0x4abde6-_0x3ab68f['bottom'],_0x7606d=_0x3ab68f['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x14aa70;_0x4aa5b3<_0x258f2f&&_0x7606d>_0x4aa5b3?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4abde6-_0x3ab68f['top']+'px',_0x14aa70=Math['min'](_0x258f2f,_0x7606d-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x3ab68f['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x14aa70=Math['min'](_0x258f2f,_0x4aa5b3-0xa),this['dropdown']['style']['maxHeight']=_0x14aa70+'px');if(this['optionsContainer']){let _0x4d4c69=_0x14aa70;if(this['searchInput']){const _0x5cdd14=this['searchInput']['parentElement'];_0x5cdd14&&(_0x4d4c69-=_0x5cdd14['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4d4c69)+'px';}this['dropdown']['style']['left']=_0x3ab68f['left']+'px',this['dropdown']['style']['width']=_0x3ab68f['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x57366c=this['searchInput']['parentElement'];_0x57366c&&_0x57366c['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'](_0x44b2c4){if(this['nativeSelect']['disabled'])return;if(_0x44b2c4['key']==='Enter'||_0x44b2c4['key']==='\x20')_0x44b2c4['preventDefault'](),this['toggle']();else _0x44b2c4['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x4ba6a8='\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',_0x4ba6a8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x53d5c5=document['getElementById']('confirm-dialog-close'),_0x1cae21=document['getElementById']('confirm-dialog-cancel'),_0x3536fe=document['getElementById']('confirm-dialog-confirm'),_0x1f260e=this['_modal']['querySelector']('.modal-overlay');_0x53d5c5['addEventListener']('click',()=>this['_resolve'](![])),_0x1cae21['addEventListener']('click',()=>this['_resolve'](![])),_0x3536fe['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f260e['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x2dd6b9=>{if(_0x2dd6b9['key']==='Escape')_0x2dd6b9['preventDefault'](),this['_resolve'](![]);else _0x2dd6b9['key']==='Enter'&&(_0x2dd6b9['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x573a17,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x103de4=>{this['_resolvePromise']=_0x103de4,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x573a17;const _0x5d6354=document['getElementById']('confirm-dialog-cancel'),_0x399a63=document['getElementById']('confirm-dialog-confirm');_0x5d6354['textContent']=cancelText,_0x399a63['textContent']=confirmText,_0x399a63['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x399a63['focus']();});},'_resolve'(_0x3745c8){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3745c8),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1ddbba,_0x340ee1={}){this['container']=_0x1ddbba,this['options']={'placeholder':_0x340ee1['placeholder']||'Type\x20to\x20search...','maxItems':_0x340ee1['maxItems']||0x64,'loadItems':_0x340ee1['loadItems']||(async()=>[]),'renderItem':_0x340ee1['renderItem']||(_0x18305c=>({'primary':String(_0x18305c),'secondary':''})),'onSelect':_0x340ee1['onSelect']||(()=>{}),'filterItems':_0x340ee1['filterItems']||null,'getItemValue':_0x340ee1['getItemValue']||(_0x50738c=>_0x50738c),'sortItems':_0x340ee1['sortItems']||null,'debounceMs':_0x340ee1['debounceMs']||0xc8,'minCharsForSearch':_0x340ee1['minCharsForSearch']||0x0,'emptyMessage':_0x340ee1['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x340ee1['loadingMessage']||'Loading...','preload':_0x340ee1['preload']!==![],'searchMode':_0x340ee1['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',_0x16c916=>this['onBlur'](_0x16c916)),this['input']['addEventListener']('input',_0x1fd27f=>this['onInput'](_0x1fd27f)),this['input']['addEventListener']('keydown',_0x32a027=>this['onKeydown'](_0x32a027)),this['clearBtn']['addEventListener']('mousedown',_0x3dbcad=>{_0x3dbcad['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x284089=>{_0x284089['preventDefault']();}),document['addEventListener']('click',_0x3bec39=>{!this['wrapper']['contains'](_0x3bec39['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(_0x1bc683){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1bc683);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x5d657e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0xbf5646){const _0x3c00cd=_0xbf5646['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3c00cd);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3c00cd):this['loadAndShow'](_0x3c00cd);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x38d972){switch(_0x38d972['key']){case'ArrowDown':_0x38d972['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x38d972['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x38d972['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x38d972['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x37e433){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x339df1=this['selectedIndex']+_0x37e433;if(_0x339df1>=0x0&&_0x339df1<this['filteredItems']['length']){this['selectedIndex']=_0x339df1,this['updateSelectionHighlight']();const _0x4a98a9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x4a98a9[this['selectedIndex']]&&_0x4a98a9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2fdb33=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2fdb33['forEach']((_0x55d357,_0x3e783e)=>{_0x55d357['classList']['toggle']('keyboard-selected',_0x3e783e===this['selectedIndex']);});}async['loadAndShow'](_0x5cae49){this['showLoading']();try{const _0x11683f=await this['options']['loadItems'](_0x5cae49);if(this['options']['searchMode']==='server'){let _0x529812=_0x11683f;this['options']['sortItems']&&(_0x529812=this['options']['sortItems']([..._0x11683f]));this['filteredItems']=_0x529812;const _0x579e6b=this['filteredItems']['length']>=this['options']['maxItems'];_0x579e6b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x579e6b),this['open']();}else this['allItems']=_0x11683f,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x5cae49);}catch(_0x2b9288){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x2b9288),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x107061){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x107061):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5b863c=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b863c&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b863c),this['open']();}['renderItems'](_0x49db64){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']((_0x24d2af,_0x55a7c3)=>{const _0x3c514c=document['createElement']('div');_0x3c514c['className']='autocomplete-select-item',_0x3c514c['setAttribute']('role','option'),_0x3c514c['setAttribute']('data-index',_0x55a7c3);const _0x4b100c=this['options']['renderItem'](_0x24d2af);let _0x48907e='';_0x4b100c['icon']&&(_0x48907e='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x4b100c['iconClass']||'')+'\x22>'+_0x4b100c['icon']+'</span>'),_0x3c514c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x48907e+'\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'](_0x4b100c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x4b100c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x4b100c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x3c514c['addEventListener']('click',()=>{this['selectItem'](_0x24d2af);}),_0x3c514c['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x55a7c3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x3c514c);}),_0x49db64?(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'](_0x5257aa){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5257aa)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x4aadaf){this['selectedItem']=_0x4aadaf;const _0x12cd69=this['options']['renderItem'](_0x4aadaf);this['input']['value']=_0x12cd69['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x4aadaf);}['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'](_0x37a814){if(_0x37a814){this['selectedItem']=_0x37a814;const _0x3f3fac=this['options']['renderItem'](_0x37a814);this['input']['value']=_0x3f3fac['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5515f0){this['allItems']=_0x5515f0,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'](_0x40bf0c){this['input']['placeholder']=_0x40bf0c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x23e488=null){const _0x156c00=document['getElementById']('admin-menu-container'),_0x2788be=document['getElementById']('admin-menu-btn'),_0x423cbf=document['getElementById']('admin-menu');if(!_0x156c00||!_0x2788be||!_0x423cbf)return;try{!_0x23e488&&(_0x23e488=await API['getCurrentUser']());if(_0x23e488){const _0x4e1260=window['Permissions'],_0x3ff697=_0x4e1260['hasServerPermission'](_0x23e488,'*')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:manage')||_0x4e1260['hasServerPermission'](_0x23e488,'users:create')||_0x4e1260['hasTeamPermission'](_0x23e488,'teams:manage')||_0x4e1260['hasEnvPermission'](_0x23e488,'environments:view_details');if(!_0x3ff697)return;_0x156c00['hidden']=![];if(!_0x4e1260['hasServerPermission'](_0x23e488,'*')){const _0x54253a=_0x423cbf['querySelectorAll']('.admin-menu-item');_0x54253a['forEach'](_0xd4c05c=>{const _0x5763c9=_0xd4c05c['querySelector']('.option-text')?.['textContent']?.['trim']();_0x5763c9==='Users'&&!_0x4e1260['hasServerPermission'](_0x23e488,'users:create')&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Skills'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Settings'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Server\x20Health'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Git\x20History'&&(_0xd4c05c['hidden']=!![]),_0x5763c9==='Roles'&&(_0xd4c05c['hidden']=!![]);});}_0x2788be['addEventListener']('click',_0x23deae=>{_0x23deae['stopPropagation']();const _0x19a98c=document['getElementById']('actions-menu');if(_0x19a98c)_0x19a98c['hidden']=!![];_0x423cbf['hidden']=!_0x423cbf['hidden'];}),document['addEventListener']('click',_0x7e4b9d=>{!_0x423cbf['hidden']&&!_0x2788be['contains'](_0x7e4b9d['target'])&&!_0x423cbf['contains'](_0x7e4b9d['target'])&&(_0x423cbf['hidden']=!![]);}),document['addEventListener']('keydown',_0x58e410=>{_0x58e410['key']==='Escape'&&!_0x423cbf['hidden']&&(_0x423cbf['hidden']=!![]);});const _0x59e427=document['getElementById']('server-health-btn');_0x59e427&&_0x59e427['addEventListener']('click',async()=>{_0x423cbf['hidden']=!![];const {openServerHealthModal:_0x5d58d8}=await import('./server-health.js');_0x5d58d8();});}}catch(_0x5ccaf2){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5ccaf2['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 _0x75a9ac=window['location']['pathname'],_0x542a01=_0x75a9ac['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x542a01)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x542a01[0x1]),_0x542a01[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4c8d1f={}){const _0x13bdad=new URLSearchParams();_0x4c8d1f['userId']&&_0x13bdad['set']('userId',String(_0x4c8d1f['userId']));_0x4c8d1f['automation']&&_0x13bdad['set']('automation',String(_0x4c8d1f['automation']));const _0x1e8a52=API_BASE+'/tasks/stats'+(_0x13bdad['toString']()?'?'+_0x13bdad['toString']():''),_0x4a3ae9=await fetch(_0x1e8a52);if(!_0x4a3ae9['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4a3ae9['statusText']);return await _0x4a3ae9['json']();},async 'getTasks'(_0x170024={}){const _0xa71c07=new URLSearchParams();_0x170024['status']&&_0xa71c07['set']('status',String(_0x170024['status']));_0x170024['environment']&&_0xa71c07['set']('environment',String(_0x170024['environment']));_0x170024['automation']&&_0xa71c07['set']('automation',String(_0x170024['automation']));if(_0x170024['include']){const _0xfd5765=Array['isArray'](_0x170024['include'])?_0x170024['include']['join'](','):String(_0x170024['include']);_0xfd5765&&_0xa71c07['set']('include',_0xfd5765);}_0x170024['filter']&&_0xa71c07['set']('filter',String(_0x170024['filter']));_0x170024['page']&&_0xa71c07['set']('page',String(_0x170024['page']));_0x170024['limit']&&_0xa71c07['set']('limit',String(_0x170024['limit']));_0x170024['userId']&&_0xa71c07['set']('userId',String(_0x170024['userId']));_0x170024['search']&&_0xa71c07['set']('search',String(_0x170024['search']));_0x170024['includeChildTasks']&&_0xa71c07['set']('includeChildTasks','true');const _0x30f377=API_BASE+'/tasks'+(_0xa71c07['toString']()?'?'+_0xa71c07['toString']():''),_0x4aba9c=await fetch(_0x30f377);if(!_0x4aba9c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4aba9c['statusText']);return await _0x4aba9c['json']();},async 'getAutomations'(_0x6c443a={}){const _0x33bd58=new URLSearchParams();_0x6c443a['environment']&&_0x33bd58['set']('environment',String(_0x6c443a['environment']));const _0x2aedc4=await fetch(API_BASE+'/api/automations'+(_0x33bd58['toString']()?'?'+_0x33bd58['toString']():''));if(!_0x2aedc4['ok']){const _0x41b5ae=await _0x2aedc4['json']()['catch'](()=>({}));throw new Error(_0x41b5ae['message']||_0x41b5ae['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2aedc4['statusText']);}return await _0x2aedc4['json']();},async 'getAutomation'(_0x1c3336){const _0x30a3ef=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c3336));if(!_0x30a3ef['ok']){const _0x208196=await _0x30a3ef['json']()['catch'](()=>({}));throw new Error(_0x208196['message']||_0x208196['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x30a3ef['statusText']);}return await _0x30a3ef['json']();},async 'createAutomation'(_0x55ba33){const _0x28cf59=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55ba33||{})});if(!_0x28cf59['ok']){const _0x5bed34=await _0x28cf59['json']()['catch'](()=>({}));throw new Error(_0x5bed34['message']||_0x5bed34['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x28cf59['statusText']);}return await _0x28cf59['json']();},async 'updateAutomation'(_0x40f813,_0x110445){const _0x1be80f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x40f813),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x110445||{})});if(!_0x1be80f['ok']){const _0x2180e4=await _0x1be80f['json']()['catch'](()=>({}));throw new Error(_0x2180e4['message']||_0x2180e4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x1be80f['statusText']);}return await _0x1be80f['json']();},async 'deleteAutomation'(_0x2f9332){const _0x5a8182=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2f9332),{'method':'DELETE'});if(!_0x5a8182['ok']){const _0x27333b=await _0x5a8182['json']()['catch'](()=>({}));throw new Error(_0x27333b['message']||_0x27333b['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5a8182['statusText']);}return await _0x5a8182['json']();},async 'triggerAutomation'(_0x5c45a5){const _0x4693dc=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c45a5)+'/trigger',{'method':'POST'});if(!_0x4693dc['ok']){const _0x4e4de3=await _0x4693dc['json']()['catch'](()=>({}));throw new Error(_0x4e4de3['message']||_0x4e4de3['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4693dc['statusText']);}return await _0x4693dc['json']();},async 'setAutomationEnabled'(_0x394b87,_0x479b31){const _0x128205=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x394b87)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x479b31})});if(!_0x128205['ok']){const _0x214c87=await _0x128205['json']()['catch'](()=>({}));throw new Error(_0x214c87['message']||_0x214c87['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x128205['statusText']);}return await _0x128205['json']();},async 'getAutomationHistory'(_0x55a8ce,_0x3993a9=0x32){const _0x130482=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55a8ce)+'/history?limit='+encodeURIComponent(String(_0x3993a9)));if(!_0x130482['ok']){const _0x45f50b=await _0x130482['json']()['catch'](()=>({}));throw new Error(_0x45f50b['message']||_0x45f50b['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x130482['statusText']);}return await _0x130482['json']();},async 'getTask'(_0x24aab2,_0x1cd294={}){const _0xed54e8=new URLSearchParams();if(_0x1cd294['include']){const _0xeab505=Array['isArray'](_0x1cd294['include'])?_0x1cd294['include']['join'](','):String(_0x1cd294['include']);if(_0xeab505)_0xed54e8['set']('include',_0xeab505);}const _0xbfacbb=await fetch(API_BASE+'/tasks/'+_0x24aab2+(_0xed54e8['toString']()?'?'+_0xed54e8['toString']():''));if(!_0xbfacbb['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xbfacbb['statusText']);return await _0xbfacbb['json']();},async 'getTaskResults'(_0x44a326){const _0x4a2470=await fetch(API_BASE+'/tasks/'+_0x44a326+'/results');if(!_0x4a2470['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4a2470['statusText']);return await _0x4a2470['json']();},async 'getTaskPatches'(_0x4acf4a){const _0xa529de=await fetch(API_BASE+'/tasks/'+_0x4acf4a+'/patches');if(!_0xa529de['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0xa529de['statusText']);return await _0xa529de['json']();},async 'getTaskAttachments'(_0x3e4785){const _0x1ffb64=await fetch(API_BASE+'/tasks/'+_0x3e4785+'/attachments');if(!_0x1ffb64['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1ffb64['statusText']);return await _0x1ffb64['json']();},async 'uploadAttachments'(_0x4df27e,_0x39685b){const _0x5e1e37=new FormData();for(const _0x4722be of _0x39685b){_0x5e1e37['append']('attachments',_0x4722be);}const _0x2b6377=await fetch(API_BASE+'/tasks/'+_0x4df27e+'/attachments',{'method':'POST','body':_0x5e1e37});if(!_0x2b6377['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2b6377['statusText']);return await _0x2b6377['json']();},async 'isAINameGenerationAvailable'(){try{const _0x53c8d3=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x53c8d3['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x53c8d3['json']();}catch(_0x7b662a){return{'available':![],'reason':_0x7b662a['message']};}},async 'generateTaskName'(_0x46319f){try{const _0x27cc1b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x46319f})});return await _0x27cc1b['json']();}catch(_0x2bcf64){return{'success':![],'error':_0x2bcf64['message']};}},async 'createTask'(_0x27521a){let _0x2926be,_0x4e0223={};if(_0x27521a['files']&&_0x27521a['files']['length']>0x0){const _0x4ab1b6=new FormData();for(const [_0x42bdb5,_0x50a17d]of Object['entries'](_0x27521a)){if(_0x42bdb5!=='files'){if(_0x50a17d==null)continue;typeof _0x50a17d==='object'?_0x4ab1b6['append'](_0x42bdb5,JSON['stringify'](_0x50a17d)):_0x4ab1b6['append'](_0x42bdb5,String(_0x50a17d));}}for(const _0x349ec6 of _0x27521a['files']){_0x4ab1b6['append']('attachments',_0x349ec6);}_0x2926be=_0x4ab1b6;}else _0x4e0223['Content-Type']='application/json',_0x2926be=JSON['stringify'](_0x27521a);const _0x5dc775=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4e0223,'body':_0x2926be});if(!_0x5dc775['ok']){const _0x5b54c2=await _0x5dc775['json'](),_0x445126=new Error(_0x5b54c2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5dc775['statusText']),{message:_0x465c2f,..._0x4b4465}=_0x5b54c2;Object['assign'](_0x445126,_0x4b4465);throw _0x445126;}return await _0x5dc775['json']();},async 'createTestTask'(_0x5d2c6c){const _0x3c47f4=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d2c6c)});if(!_0x3c47f4['ok']){const _0x38da5b=await _0x3c47f4['json']();throw new Error(_0x38da5b['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c47f4['statusText']);}return await _0x3c47f4['json']();},async 'createEphemeralTest'(_0x29952e){const _0x41a78d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29952e)});if(!_0x41a78d['ok']){const _0x1619bd=await _0x41a78d['json']();throw new Error(_0x1619bd['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x41a78d['statusText']);}return await _0x41a78d['json']();},async 'createDeployTask'(_0xd0ae2){const _0x442d2e=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0ae2)});if(!_0x442d2e['ok']){const _0x4b651e=await _0x442d2e['json']();throw new Error(_0x4b651e['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x442d2e['statusText']);}return await _0x442d2e['json']();},async 'getEnvironments'(){const _0x2a3faa=await fetch(API_BASE+'/environments');if(!_0x2a3faa['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2a3faa['statusText']);return await _0x2a3faa['json']();},async 'getEnvironment'(_0x1d8654){const _0x13998e=await fetch(API_BASE+'/environments/'+_0x1d8654);if(!_0x13998e['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x13998e['statusText']);return await _0x13998e['json']();},async 'getEnvironmentRepoHistory'(_0x280327,_0x494d68,_0x8c8fb4={}){if(!_0x280327||!_0x494d68)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xd3aa41=new URLSearchParams();if(_0x8c8fb4['limit'])_0xd3aa41['set']('limit',String(_0x8c8fb4['limit']));if(_0x8c8fb4['offset'])_0xd3aa41['set']('offset',String(_0x8c8fb4['offset']));if(_0x8c8fb4['search'])_0xd3aa41['set']('search',String(_0x8c8fb4['search']));if(_0x8c8fb4['branch'])_0xd3aa41['set']('branch',String(_0x8c8fb4['branch']));const _0x94a480=API_BASE+'/environments/'+encodeURIComponent(_0x280327)+'/repos/'+encodeURIComponent(_0x494d68)+'/git/history',_0x4c3f40=await fetch(''+_0x94a480+(_0xd3aa41['toString']()?'?'+_0xd3aa41['toString']():''));if(!_0x4c3f40['ok']){const _0x41255a=await _0x4c3f40['json']()['catch'](()=>({}));throw new Error(_0x41255a['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4c3f40['statusText']);}return await _0x4c3f40['json']();},async 'getEnvironmentRepoCommit'(_0x1bb2af,_0x1edcb3,_0x953ff5){if(!_0x1bb2af||!_0x1edcb3||!_0x953ff5)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x164b3e=API_BASE+'/environments/'+encodeURIComponent(_0x1bb2af)+'/repos/'+encodeURIComponent(_0x1edcb3)+'/git/commits/'+encodeURIComponent(_0x953ff5),_0x5ee53d=await fetch(_0x164b3e);if(!_0x5ee53d['ok']){const _0x49a6d3=await _0x5ee53d['json']()['catch'](()=>({}));throw new Error(_0x49a6d3['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5ee53d['statusText']);}return await _0x5ee53d['json']();},async 'getEnvironmentRepoBranches'(_0x2331c3,_0x45599f){if(!_0x2331c3||!_0x45599f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5e1604=API_BASE+'/environments/'+encodeURIComponent(_0x2331c3)+'/repos/'+encodeURIComponent(_0x45599f)+'/git/branches',_0x465c0e=await fetch(_0x5e1604);if(!_0x465c0e['ok']){const _0x621e13=await _0x465c0e['json']()['catch'](()=>({}));throw new Error(_0x621e13['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x465c0e['statusText']);}return await _0x465c0e['json']();},async 'revertEnvironmentRepoCommit'(_0x5270a1,_0x5336ed,_0x4b7ff5,_0x361e04={}){if(!_0x5270a1||!_0x5336ed||!_0x4b7ff5)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1e4fb7=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x5270a1)+'/repos/'+encodeURIComponent(_0x5336ed)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4b7ff5,..._0x361e04})});if(!_0x1e4fb7['ok']){const _0x43a9e8=await _0x1e4fb7['json']()['catch'](()=>({}));throw new Error(_0x43a9e8['message']||_0x43a9e8['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1e4fb7['statusText']);}return await _0x1e4fb7['json']();},async 'getTemplates'(_0x1b08c7={}){const _0x211761=new URLSearchParams();if(_0x1b08c7['include']){const _0x1af3a7=Array['isArray'](_0x1b08c7['include'])?_0x1b08c7['include']['join'](','):String(_0x1b08c7['include']);if(_0x1af3a7)_0x211761['set']('include',_0x1af3a7);}const _0x1664f4=await fetch(API_BASE+'/templates'+(_0x211761['toString']()?'?'+_0x211761['toString']():''));if(!_0x1664f4['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x1664f4['statusText']);return await _0x1664f4['json']();},async 'getTemplatesForEnvironment'(_0x534a8e,_0x25b369={}){if(!_0x534a8e)throw new Error('Environment\x20name\x20is\x20required');const _0x34343b=new URLSearchParams();if(_0x25b369['include']){const _0x4e2167=Array['isArray'](_0x25b369['include'])?_0x25b369['include']['join'](','):String(_0x25b369['include']);if(_0x4e2167)_0x34343b['set']('include',_0x4e2167);}const _0xbdd070=await fetch(API_BASE+'/templates/'+_0x534a8e+(_0x34343b['toString']()?'?'+_0x34343b['toString']():''));if(!_0xbdd070['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x534a8e+':\x20'+_0xbdd070['statusText']);return await _0xbdd070['json']();},async 'getTemplate'(_0x1f567c,_0x5236ac,_0x35b4fa={}){if(!_0x1f567c||!_0x5236ac)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x367873=new URLSearchParams();if(_0x35b4fa['include']){const _0x1c4ae6=Array['isArray'](_0x35b4fa['include'])?_0x35b4fa['include']['join'](','):String(_0x35b4fa['include']);if(_0x1c4ae6)_0x367873['set']('include',_0x1c4ae6);}const _0x18c6ac=await fetch(API_BASE+'/templates/'+_0x1f567c+'/'+_0x5236ac+(_0x367873['toString']()?'?'+_0x367873['toString']():''));if(!_0x18c6ac['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x18c6ac['statusText']);return await _0x18c6ac['json']();},async 'getTaskLogs'(_0x1ec222,_0x2ca410={}){if(!_0x1ec222)throw new Error('Task\x20ID\x20is\x20required');const _0x191fb9=new URLSearchParams();_0x2ca410['tail']&&_0x191fb9['set']('tail',String(_0x2ca410['tail']));const _0x360ff4=await fetch(API_BASE+'/tasks/'+_0x1ec222+'/logs'+(_0x191fb9['toString']()?'?'+_0x191fb9['toString']():''));if(!_0x360ff4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x360ff4['statusText']);return await _0x360ff4['text']();},async 'getContainers'(){const _0x32ab37=await fetch(API_BASE+'/containers');if(!_0x32ab37['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x32ab37['statusText']);return await _0x32ab37['json']();},async 'getContainer'(_0x4c5539){const _0x33f05d=await fetch(API_BASE+'/containers/'+_0x4c5539);if(!_0x33f05d['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33f05d['statusText']);return await _0x33f05d['json']();},async 'startInteractiveContainer'(_0x48bc58){const _0x14a87a=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48bc58)});if(!_0x14a87a['ok']){const _0x2f7409=await _0x14a87a['json']()['catch'](()=>({}));throw new Error(_0x2f7409['message']||'Failed\x20to\x20start\x20container:\x20'+_0x14a87a['statusText']);}return await _0x14a87a['json']();},async 'stopContainer'(_0x369e7e){const _0x33f278=await fetch(API_BASE+'/containers/'+_0x369e7e,{'method':'DELETE'});if(!_0x33f278['ok']){const _0x1291a5=await _0x33f278['json']()['catch'](()=>({}));throw new Error(_0x1291a5['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x33f278['statusText']);}return await _0x33f278['json']();},async 'stopTask'(_0x4b75d4){if(!_0x4b75d4)throw new Error('Task\x20ID\x20is\x20required');const _0x28dad5=await fetch(API_BASE+'/tasks/'+_0x4b75d4+'/stop',{'method':'POST'});if(!_0x28dad5['ok']){const _0x5478f7=await _0x28dad5['json']()['catch'](()=>({}));throw new Error(_0x5478f7['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x28dad5['statusText']);}return await _0x28dad5['json']();},async 'interruptTask'(_0x4e2400){if(!_0x4e2400)throw new Error('Task\x20ID\x20is\x20required');const _0x46841f=await fetch(API_BASE+'/tasks/'+_0x4e2400+'/interrupt',{'method':'POST'});if(!_0x46841f['ok']){const _0xfc1dbf=await _0x46841f['json']()['catch'](()=>({}));throw new Error(_0xfc1dbf['error']||_0xfc1dbf['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x46841f['statusText']);}return await _0x46841f['json']();},async 'startTask'(_0xa6638e){if(!_0xa6638e)throw new Error('Task\x20ID\x20is\x20required');const _0x47ec0d=await fetch(API_BASE+'/tasks/'+_0xa6638e+'/start',{'method':'POST'});if(!_0x47ec0d['ok']){const _0x2306bd=await _0x47ec0d['json']()['catch'](()=>({}));throw new Error(_0x2306bd['error']||'Failed\x20to\x20start\x20task:\x20'+_0x47ec0d['statusText']);}return await _0x47ec0d['json']();},async 'deleteTask'(_0x1e1c90){if(!_0x1e1c90)throw new Error('Task\x20ID\x20is\x20required');const _0x198cd3=await fetch(API_BASE+'/tasks/'+_0x1e1c90,{'method':'DELETE'});if(!_0x198cd3['ok']){const _0x303914=await _0x198cd3['json']()['catch'](()=>({}));throw new Error(_0x303914['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x198cd3['statusText']);}return await _0x198cd3['json']();},async 'refreshTasksFromDisk'(){const _0x4beef1=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x4beef1['ok']){const _0x326f2e=await _0x4beef1['json']()['catch'](()=>({}));throw new Error(_0x326f2e['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x4beef1['statusText']);}return await _0x4beef1['json']();},async 'approveTask'(_0x31a261,_0x467b0b={}){if(!_0x31a261)throw new Error('Task\x20ID\x20is\x20required');const _0x401877={'commit_message':_0x467b0b['commit_message']||'','pull':_0x467b0b['pull']??![],'push':_0x467b0b['push']??![]};_0x467b0b['new_branch']&&(_0x401877['new_branch']=_0x467b0b['new_branch']);const _0xaf8fb1=await fetch(API_BASE+'/tasks/'+_0x31a261+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x401877)});if(!_0xaf8fb1['ok']){const _0x36aec2=await _0xaf8fb1['json']()['catch'](()=>({}));let _0x1951c1=_0x36aec2['error']||_0x36aec2['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xaf8fb1['statusText'];if(_0x36aec2['results']&&Array['isArray'](_0x36aec2['results'])){const _0x3274b3=_0x36aec2['results']['filter'](_0x2509f3=>!_0x2509f3['success']&&_0x2509f3['error']);_0x3274b3['length']>0x0&&(_0x1951c1=_0x3274b3[0x0]['error']);}throw new Error(_0x1951c1);}return await _0xaf8fb1['json']();},async 'getPullRequestInfo'(_0x4405fe){if(!_0x4405fe)throw new Error('Task\x20ID\x20is\x20required');const _0x471518=await fetch(API_BASE+'/tasks/'+_0x4405fe+'/pull-request-info');if(!_0x471518['ok']){const _0x462944=await _0x471518['json']()['catch'](()=>({}));throw new Error(_0x462944['error']||_0x462944['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x471518['statusText']);}return await _0x471518['json']();},async 'createPullRequests'(_0x35f221,_0x378d0c){if(!_0x35f221)throw new Error('Task\x20ID\x20is\x20required');if(!_0x378d0c||!Array['isArray'](_0x378d0c))throw new Error('repos\x20array\x20is\x20required');const _0x4b90c5=await fetch(API_BASE+'/tasks/'+_0x35f221+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x378d0c})});if(!_0x4b90c5['ok']){const _0x8cc989=await _0x4b90c5['json']()['catch'](()=>({}));let _0x108817=_0x8cc989['error']||_0x8cc989['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4b90c5['statusText'];if(_0x8cc989['results']&&Array['isArray'](_0x8cc989['results'])){const _0x3ae796=_0x8cc989['results']['filter'](_0x71bd0a=>!_0x71bd0a['success']&&_0x71bd0a['error']);_0x3ae796['length']>0x0&&(_0x108817=_0x3ae796[0x0]['error']);}throw new Error(_0x108817);}return await _0x4b90c5['json']();},async 'syncRepos'(_0x623e5e){if(!_0x623e5e)throw new Error('Task\x20ID\x20is\x20required');const _0x43b93c=await fetch(API_BASE+'/tasks/'+_0x623e5e+'/sync-repos',{'method':'POST'});if(!_0x43b93c['ok']){const _0x1ed348=await _0x43b93c['json']()['catch'](()=>({}));throw new Error(_0x1ed348['error']||_0x1ed348['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x43b93c['statusText']);}return await _0x43b93c['json']();},async 'getIbmiSyncInfo'(_0xb0c116){if(!_0xb0c116)throw new Error('Task\x20ID\x20is\x20required');const _0x35aa4b=await fetch(API_BASE+'/tasks/'+_0xb0c116+'/ibmi-sync-info');if(!_0x35aa4b['ok']){const _0x259cf5=await _0x35aa4b['json']()['catch'](()=>({}));throw new Error(_0x259cf5['error']||_0x259cf5['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x35aa4b['json']();},async 'getSyncFiles'(_0x4c9d7d){if(!_0x4c9d7d)throw new Error('Task\x20ID\x20is\x20required');const _0x1a656d=await fetch(API_BASE+'/tasks/'+_0x4c9d7d+'/sync-to-ibmi/files');if(!_0x1a656d['ok']){const _0x32c988=await _0x1a656d['json']()['catch'](()=>({}));throw new Error(_0x32c988['error']||_0x32c988['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x1a656d['json']();},async 'syncToIbmi'(_0x10bd27,_0x2596b0,_0x34ff47=null,_0x2b0f1f=null,_0x2d9d83=null){if(!_0x10bd27)throw new Error('Task\x20ID\x20is\x20required');const _0x1938af={'library':_0x2596b0};if(_0x34ff47)_0x1938af['user']=_0x34ff47;if(_0x2b0f1f)_0x1938af['password']=_0x2b0f1f;if(_0x2d9d83)_0x1938af['files']=_0x2d9d83;const _0x2be24d=await fetch(API_BASE+'/tasks/'+_0x10bd27+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1938af)});if(!_0x2be24d['ok']){const _0x1f023=await _0x2be24d['json']()['catch'](()=>({}));throw new Error(_0x1f023['error']||_0x1f023['message']||'Sync\x20failed');}return await _0x2be24d['json']();},async 'getIbmiSyncLog'(_0x45cbac){if(!_0x45cbac)throw new Error('Task\x20ID\x20is\x20required');const _0x144584=await fetch(API_BASE+'/tasks/'+_0x45cbac+'/ibmi-sync-log');if(!_0x144584['ok']){const _0x51351d=await _0x144584['json']()['catch'](()=>({}));throw new Error(_0x51351d['error']||_0x51351d['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x144584['json']();},async 'pullChanges'(_0x4f60e1){if(!_0x4f60e1)throw new Error('Task\x20ID\x20is\x20required');const _0x5c82f3=await fetch(API_BASE+'/tasks/'+_0x4f60e1+'/pull-changes',{'method':'POST'});if(!_0x5c82f3['ok']){const _0x595819=await _0x5c82f3['json']()['catch'](()=>({}));throw new Error(_0x595819['error']||_0x595819['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5c82f3['statusText']);}return await _0x5c82f3['json']();},async 'readFile'(_0x3dd682,_0x5a6fdb){if(!_0x3dd682)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a6fdb)throw new Error('File\x20path\x20is\x20required');const _0x1eebe7=await fetch(API_BASE+'/tasks/'+_0x3dd682+'/files?path='+encodeURIComponent(_0x5a6fdb));if(!_0x1eebe7['ok']){const _0x5ad797=await _0x1eebe7['json']()['catch'](()=>({}));throw new Error(_0x5ad797['error']||_0x5ad797['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1eebe7['statusText']);}return await _0x1eebe7['json']();},'getTaskFileDownloadUrl'(_0x221ecb,_0x2f50df){if(!_0x221ecb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2f50df)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x221ecb+'/files/download?path='+encodeURIComponent(_0x2f50df);},async 'writeFile'(_0x58e5a2,_0x5b5000,_0x548fd8){if(!_0x58e5a2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b5000)throw new Error('File\x20path\x20is\x20required');if(_0x548fd8===undefined)throw new Error('Content\x20is\x20required');const _0x1a09db=await fetch(API_BASE+'/tasks/'+_0x58e5a2+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5b5000,'content':_0x548fd8})});if(!_0x1a09db['ok']){const _0xff63ec=await _0x1a09db['json']()['catch'](()=>({}));throw new Error(_0xff63ec['error']||_0xff63ec['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1a09db['statusText']);}return await _0x1a09db['json']();},async 'uploadTaskFiles'(_0x3434f1,_0x66330e,_0x1a5d1c){if(!_0x3434f1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x66330e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x1a5d1c||_0x1a5d1c['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x30866e=new FormData();_0x30866e['append']('targetDir',_0x66330e);for(const _0xd74b51 of _0x1a5d1c){_0x30866e['append']('files',_0xd74b51,_0xd74b51['name']);}const _0x2a5788=await fetch(API_BASE+'/tasks/'+_0x3434f1+'/files/upload',{'method':'POST','body':_0x30866e});if(!_0x2a5788['ok']){const _0x1b5f8d=await _0x2a5788['json']()['catch'](()=>({}));throw new Error(_0x1b5f8d['error']||_0x1b5f8d['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2a5788['statusText']);}return await _0x2a5788['json']();},async 'createDirectory'(_0x6d9df8,_0x349cef){if(!_0x6d9df8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x349cef)throw new Error('Directory\x20path\x20is\x20required');const _0x26ef11=await fetch(API_BASE+'/tasks/'+_0x6d9df8+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x349cef})});if(!_0x26ef11['ok']){const _0x20ea25=await _0x26ef11['json']()['catch'](()=>({}));throw new Error(_0x20ea25['error']||_0x20ea25['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x26ef11['statusText']);}return await _0x26ef11['json']();},async 'renamePath'(_0x59b016,_0x4cc7bf,_0x1cd64b){if(!_0x59b016)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4cc7bf)throw new Error('Source\x20path\x20is\x20required');if(!_0x1cd64b)throw new Error('Destination\x20path\x20is\x20required');const _0x16cc02=await fetch(API_BASE+'/tasks/'+_0x59b016+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x4cc7bf,'newPath':_0x1cd64b})});if(!_0x16cc02['ok']){const _0x4f4c1d=await _0x16cc02['json']()['catch'](()=>({}));throw new Error(_0x4f4c1d['error']||_0x4f4c1d['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x16cc02['statusText']);}return await _0x16cc02['json']();},async 'deleteFile'(_0x543f7e,_0x24b2b2){if(!_0x543f7e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24b2b2)throw new Error('File\x20path\x20is\x20required');const _0x25f8aa=await fetch(API_BASE+'/tasks/'+_0x543f7e+'/files?path='+encodeURIComponent(_0x24b2b2),{'method':'DELETE'});if(!_0x25f8aa['ok']){const _0x134a9d=await _0x25f8aa['json']()['catch'](()=>({}));throw new Error(_0x134a9d['error']||_0x134a9d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x25f8aa['statusText']);}return await _0x25f8aa['json']();},async 'deleteDirectory'(_0x56b83e,_0x323471){if(!_0x56b83e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x323471)throw new Error('Directory\x20path\x20is\x20required');const _0x41982a=await fetch(API_BASE+'/tasks/'+_0x56b83e+'/files/directory?path='+encodeURIComponent(_0x323471),{'method':'DELETE'});if(!_0x41982a['ok']){const _0x3118a3=await _0x41982a['json']()['catch'](()=>({}));throw new Error(_0x3118a3['error']||_0x3118a3['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x41982a['statusText']);}return await _0x41982a['json']();},async 'discardFile'(_0x14fb7d,_0xbcf1f2,_0x2fc7c7){if(!_0x14fb7d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xbcf1f2)throw new Error('File\x20path\x20is\x20required');if(!_0x2fc7c7)throw new Error('Repository\x20path\x20is\x20required');const _0x26f167=await fetch(API_BASE+'/tasks/'+_0x14fb7d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xbcf1f2,'repoPath':_0x2fc7c7})});if(!_0x26f167['ok']){const _0x4c2af6=await _0x26f167['json']()['catch'](()=>({}));throw new Error(_0x4c2af6['error']||_0x4c2af6['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x26f167['statusText']);}return await _0x26f167['json']();},async 'followUpTask'(_0x4cb9fe,_0x4f1efe={}){if(!_0x4cb9fe)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4f1efe['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3e8d43,_0x332566={};if(_0x4f1efe['files']&&_0x4f1efe['files']['length']>0x0){const _0x356a6b=new FormData();_0x356a6b['append']('instructions',_0x4f1efe['instructions']);for(const _0x2fd190 of _0x4f1efe['files']){_0x356a6b['append']('attachments',_0x2fd190);}_0x3e8d43=_0x356a6b;}else _0x332566['Content-Type']='application/json',_0x3e8d43=JSON['stringify']({'instructions':_0x4f1efe['instructions']});const _0x43dd52=await fetch(API_BASE+'/tasks/'+_0x4cb9fe+'/follow-up',{'method':'POST','headers':_0x332566,'body':_0x3e8d43});if(!_0x43dd52['ok']){const _0x3884b6=await _0x43dd52['json']()['catch'](()=>({}));throw new Error(_0x3884b6['error']||_0x3884b6['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x43dd52['statusText']);}return await _0x43dd52['json']();},async 'getTaskRewindPoints'(_0x3898ac){if(!_0x3898ac)throw new Error('Task\x20ID\x20is\x20required');const _0x13e618=await fetch(API_BASE+'/tasks/'+_0x3898ac+'/rewind-points');if(!_0x13e618['ok']){const _0x5ba2ce=await _0x13e618['json']()['catch'](()=>({}));throw new Error(_0x5ba2ce['error']||_0x5ba2ce['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13e618['statusText']);}return await _0x13e618['json']();},async 'rewindTask'(_0x389b04,_0x2ca272={}){if(!_0x389b04)throw new Error('Task\x20ID\x20is\x20required');const _0x1a4562=Number['isInteger'](_0x2ca272['targetFollowUpCount'])?_0x2ca272['targetFollowUpCount']:0x0,_0x46b5f5={'targetFollowUpCount':_0x1a4562};typeof _0x2ca272['instructions']==='string'&&_0x2ca272['instructions']['trim']()&&(_0x46b5f5['instructions']=_0x2ca272['instructions']['trim']());typeof _0x2ca272['rewindFiles']==='boolean'&&(_0x46b5f5['rewindFiles']=_0x2ca272['rewindFiles']);const _0x2de7c0=await fetch(API_BASE+'/tasks/'+_0x389b04+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x46b5f5)});if(!_0x2de7c0['ok']){const _0x56aaa0=await _0x2de7c0['json']()['catch'](()=>({}));throw new Error(_0x56aaa0['error']||_0x56aaa0['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2de7c0['statusText']);}return await _0x2de7c0['json']();},async 'login'(_0x196461,_0x604d71){const _0x4d1ad5=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x196461,'password':_0x604d71})});if(!_0x4d1ad5['ok']){const _0x165067=await _0x4d1ad5['json']();throw new Error(_0x165067['message']||'Login\x20failed');}return await _0x4d1ad5['json']();},async 'logout'(){const _0x1a019e=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1a019e['ok']){const _0x1812a5=await _0x1a019e['json']();throw new Error(_0x1812a5['message']||'Logout\x20failed');}return await _0x1a019e['json']();},async 'getCurrentUser'(){const _0x2fc47e=await fetch(API_BASE+'/auth/me');if(!_0x2fc47e['ok'])throw new Error('Not\x20authenticated');const _0x5f1240=await _0x2fc47e['json']();return _0x5f1240['user'];},async 'getRolesInfo'(){const _0x412b05=await fetch(API_BASE+'/users/roles');if(!_0x412b05['ok']){const _0x3a3c79=await _0x412b05['json']();throw new Error(_0x3a3c79['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x412b05['json']();},async 'getUsers'(){const _0x3b736b=await fetch(API_BASE+'/users');if(!_0x3b736b['ok']){const _0x374fd1=await _0x3b736b['json']();throw new Error(_0x374fd1['message']||'Failed\x20to\x20get\x20users');}return await _0x3b736b['json']();},async 'getUser'(_0x14f272){const _0x1f7721=await fetch(API_BASE+'/users/'+_0x14f272);if(!_0x1f7721['ok']){const _0x12fe93=await _0x1f7721['json']();throw new Error(_0x12fe93['message']||'Failed\x20to\x20get\x20user');}return await _0x1f7721['json']();},async 'createUser'(_0x2449b2){const _0x5486c0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2449b2)});if(!_0x5486c0['ok']){const _0x1ddf56=await _0x5486c0['json']();throw new Error(_0x1ddf56['message']||'Failed\x20to\x20create\x20user');}return await _0x5486c0['json']();},async 'updateUser'(_0x9d7266,_0x40c62a){const _0x47d740=await fetch(API_BASE+'/users/'+_0x9d7266,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40c62a)});if(!_0x47d740['ok']){const _0x15763b=await _0x47d740['json']();throw new Error(_0x15763b['message']||'Failed\x20to\x20update\x20user');}return await _0x47d740['json']();},async 'deleteUser'(_0x454222){const _0x3eb509=await fetch(API_BASE+'/users/'+_0x454222,{'method':'DELETE'});if(!_0x3eb509['ok']){const _0x3d0aba=await _0x3eb509['json']();throw new Error(_0x3d0aba['message']||'Failed\x20to\x20delete\x20user');}return await _0x3eb509['json']();},async 'stopAllContainers'(){const _0x235468=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1f8b68=await _0x235468['json']()['catch'](()=>({}));if(!_0x235468['ok'])throw new Error(_0x1f8b68['message']||_0x1f8b68['error']||'Failed\x20to\x20stop\x20containers');return _0x1f8b68;},async 'removeStoppedContainers'(){const _0x156b03=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x23e323=await _0x156b03['json']()['catch'](()=>({}));if(!_0x156b03['ok'])throw new Error(_0x23e323['message']||_0x23e323['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x23e323;},async 'pruneDockerResources'(){const _0x18f60f=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xcd24f5=await _0x18f60f['json']()['catch'](()=>({}));if(!_0x18f60f['ok'])throw new Error(_0xcd24f5['message']||_0xcd24f5['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xcd24f5;},async 'createPasswordToken'(_0x5e7784,_0x2c41b4='setup',_0x4d9a28=![]){const _0x1d5bab=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5e7784,'type':_0x2c41b4,'sendEmail':_0x4d9a28})});if(!_0x1d5bab['ok']){const _0x364451=await _0x1d5bab['json']();throw new Error(_0x364451['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1d5bab['json']();},async 'getEmailConfig'(){const _0x5abfe2=await fetch(API_BASE+'/password/email-config');if(!_0x5abfe2['ok']){const _0x42a4fd=await _0x5abfe2['json']();throw new Error(_0x42a4fd['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5abfe2['json']();},async 'updateTaskName'(_0x17bd35,_0x92e3c){const _0x625230=await fetch(API_BASE+'/tasks/'+_0x17bd35,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x92e3c})});if(!_0x625230['ok']){const _0xe43d2d=await _0x625230['json']();throw new Error(_0xe43d2d['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x625230['json']();},async 'pinTask'(_0x25197a,_0x337beb,_0x5cbf4c=null){if(!_0x25197a)throw new Error('Task\x20ID\x20is\x20required');const _0x348175={'pinned':_0x337beb};_0x5cbf4c&&_0x5cbf4c['length']>0x0&&(_0x348175['additionalTaskIds']=_0x5cbf4c);const _0x540895=await fetch(API_BASE+'/tasks/'+_0x25197a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x348175)});if(!_0x540895['ok']){const _0x202c6d=await _0x540895['json']();throw new Error(_0x202c6d['error']||'Failed\x20to\x20pin\x20task');}return await _0x540895['json']();},async 'setTaskWinner'(_0x21dc64,_0x3e3268,_0xcbc369=[]){if(!_0x21dc64)throw new Error('Task\x20ID\x20is\x20required');const _0x19de09=await fetch(API_BASE+'/tasks/'+_0x21dc64+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3e3268,'siblings':_0xcbc369})});if(!_0x19de09['ok']){const _0x2513c5=await _0x19de09['json']();throw new Error(_0x2513c5['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x19de09['json']();},async 'setTaskLoser'(_0x236160,_0x3d4f07){if(!_0x236160)throw new Error('Task\x20ID\x20is\x20required');const _0x5c506e=await fetch(API_BASE+'/tasks/'+_0x236160+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3d4f07})});if(!_0x5c506e['ok']){const _0x35504c=await _0x5c506e['json']();throw new Error(_0x35504c['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x5c506e['json']();},async 'createTaskGroup'(_0x2bb72f){const _0x45c4ab=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2bb72f)});if(!_0x45c4ab['ok']){const _0x7c392d=await _0x45c4ab['json']();throw new Error(_0x7c392d['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x45c4ab['json']();},async 'getTaskGroups'(_0x1f5255={}){const _0xe8c65e=new URLSearchParams();if(_0x1f5255['userId'])_0xe8c65e['set']('userId',String(_0x1f5255['userId']));if(_0x1f5255['status'])_0xe8c65e['set']('status',String(_0x1f5255['status']));if(_0x1f5255['limit'])_0xe8c65e['set']('limit',String(_0x1f5255['limit']));const _0x47578a=API_BASE+'/tasks/groups'+(_0xe8c65e['toString']()?'?'+_0xe8c65e['toString']():''),_0x95cfed=await fetch(_0x47578a);if(!_0x95cfed['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x95cfed['json']();},async 'getTaskGroup'(_0x3c1bca){const _0x18f4f7=await fetch(API_BASE+'/tasks/groups/'+_0x3c1bca);if(!_0x18f4f7['ok']){const _0x57a6c6=await _0x18f4f7['json']();throw new Error(_0x57a6c6['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x18f4f7['json']();},async 'updateTaskGroup'(_0x4c2185,_0x50a378,_0x1acffc){const _0x39f036=await fetch(API_BASE+'/tasks/'+_0x4c2185+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50a378,'groupIndex':_0x1acffc})});if(!_0x39f036['ok']){const _0x67ea95=await _0x39f036['json']();throw new Error(_0x67ea95['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x39f036['json']();},async 'removeTaskFromGroup'(_0x56b515){return this['updateTaskGroup'](_0x56b515,null,null);},async 'deleteTaskGroup'(_0x4d0b39,_0x254c1c=![]){const _0x488f29=_0x254c1c?'?deleteTasks=true':'',_0x1a1e50=await fetch(API_BASE+'/tasks/groups/'+_0x4d0b39+_0x488f29,{'method':'DELETE'});if(!_0x1a1e50['ok']){const _0x38d4eb=await _0x1a1e50['json']();throw new Error(_0x38d4eb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5e3235,_0x5e2f34){const _0x57d277=await fetch(API_BASE+'/tasks/groups/'+_0x5e3235+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x5e2f34})});if(!_0x57d277['ok']){const _0x347737=await _0x57d277['json']();throw new Error(_0x347737['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x57d277['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3d3263){if(!_0x3d3263)throw new Error('Task\x20ID\x20is\x20required');const _0x1f35f7=await fetch(API_BASE+'/tasks/'+_0x3d3263+'/comments');if(!_0x1f35f7['ok']){const _0x3c9796=await _0x1f35f7['json']()['catch'](()=>({}));throw new Error(_0x3c9796['error']||'Failed\x20to\x20get\x20comments');}return await _0x1f35f7['json']();},async 'addComment'(_0x7fa547,_0x570378){if(!_0x7fa547)throw new Error('Task\x20ID\x20is\x20required');if(!_0x570378)throw new Error('Comment\x20content\x20is\x20required');const _0x594b30=await fetch(API_BASE+'/tasks/'+_0x7fa547+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x570378})});if(!_0x594b30['ok']){const _0x3f4974=await _0x594b30['json']()['catch'](()=>({}));throw new Error(_0x3f4974['error']||'Failed\x20to\x20add\x20comment');}return await _0x594b30['json']();},async 'updateComment'(_0x3ddc1c,_0x178fc6,_0x47ffa5){if(!_0x3ddc1c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x178fc6)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x47ffa5)throw new Error('Comment\x20content\x20is\x20required');const _0x283635=await fetch(API_BASE+'/tasks/'+_0x3ddc1c+'/comments/'+_0x178fc6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x47ffa5})});if(!_0x283635['ok']){const _0x2ebde8=await _0x283635['json']()['catch'](()=>({}));throw new Error(_0x2ebde8['error']||'Failed\x20to\x20update\x20comment');}return await _0x283635['json']();},async 'deleteComment'(_0xf2d106,_0x135a04){if(!_0xf2d106)throw new Error('Task\x20ID\x20is\x20required');if(!_0x135a04)throw new Error('Comment\x20ID\x20is\x20required');const _0x32cd03=await fetch(API_BASE+'/tasks/'+_0xf2d106+'/comments/'+_0x135a04,{'method':'DELETE'});if(!_0x32cd03['ok']){const _0x16d3da=await _0x32cd03['json']()['catch'](()=>({}));throw new Error(_0x16d3da['error']||'Failed\x20to\x20delete\x20comment');}return await _0x32cd03['json']();},async 'createObjective'(_0x1ab760){const _0x404b1e={'objective':!![],'name':_0x1ab760['name']||'','environment':_0x1ab760['environment']||null,'agents':_0x1ab760['agents']||[],'branches':_0x1ab760['branches']||{},'isPinned':_0x1ab760['isPinned']||![],'parentObjectiveId':_0x1ab760['parentObjectiveId']||null,'env_vars':_0x1ab760['envVars']||{},'parameters':{'instructions':_0x1ab760['instructions']||''},'files':_0x1ab760['files']||[],'jira':_0x1ab760['jira']||null};return this['createTask'](_0x404b1e);},async 'updateObjective'(_0x2061f0,_0x22c55e,_0x4ba400=[],_0x597f8a=[]){let _0x22a049,_0x10c417={};const _0x18b215={..._0x22c55e};_0x597f8a&&_0x597f8a['length']>0x0&&(_0x18b215['removeAttachments']=_0x597f8a);if(_0x4ba400&&_0x4ba400['length']>0x0){const _0x5e1d8a=new FormData();for(const [_0x328111,_0x2a99c1]of Object['entries'](_0x18b215)){if(_0x2a99c1==null)continue;typeof _0x2a99c1==='object'?_0x5e1d8a['append'](_0x328111,JSON['stringify'](_0x2a99c1)):_0x5e1d8a['append'](_0x328111,String(_0x2a99c1));}for(const _0x4b7f0b of _0x4ba400){_0x5e1d8a['append']('attachments',_0x4b7f0b);}_0x22a049=_0x5e1d8a;}else _0x10c417['Content-Type']='application/json',_0x22a049=JSON['stringify'](_0x18b215);const _0x200c0f=await fetch(API_BASE+'/tasks/'+_0x2061f0,{'method':'PATCH','headers':_0x10c417,'body':_0x22a049});if(!_0x200c0f['ok']){const _0x2be894=await _0x200c0f['json']();throw new Error(_0x2be894['error']||'Failed\x20to\x20update\x20objective');}return await _0x200c0f['json']();},async 'deleteObjective'(_0x57ea4e){return this['deleteTask'](_0x57ea4e);},async 'launchObjective'(_0x4fdd5e,_0x284747={}){const _0x2047a4=await fetch(API_BASE+'/tasks/'+_0x4fdd5e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x284747)});if(!_0x2047a4['ok']){const _0x3de7cd=await _0x2047a4['json']();throw new Error(_0x3de7cd['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2047a4['json']();},async 'getObjectiveAttachments'(_0x446963){return this['getTaskAttachments'](_0x446963);},async 'createJudgeTask'({environment:_0x184d1c,judgeAgent:_0x3e566f,groupId:_0x33bf99,taskIds:_0x3a7c2a,judgeCustomInstructions:_0x54939b,isPinned:_0x532648}){const _0x14f7ce=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x184d1c,'judgeAgent':_0x3e566f,'groupId':_0x33bf99,'taskIds':_0x3a7c2a,'judgeCustomInstructions':_0x54939b,'isPinned':_0x532648})});if(!_0x14f7ce['ok']){const _0xd94b8c=await _0x14f7ce['json']();throw new Error(_0xd94b8c['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x14f7ce['json']();},async 'getJudgeTasks'(_0x55146a){const _0x49516f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x55146a));if(!_0x49516f['ok']){const _0x4c7c23=await _0x49516f['json']();throw new Error(_0x4c7c23['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x49516f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x398472,_0xf66ca,_0x4157da=''){const _0x4dc2e4=await fetch(API_BASE+'/tasks/'+_0x398472+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0xf66ca,'customPreamble':_0x4157da})});if(!_0x4dc2e4['ok']){const _0x4995b9=await _0x4dc2e4['json']();throw new Error(_0x4995b9['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x4dc2e4['json']();},async 'getJiraConfig'(){const _0x570cca=await fetch(API_BASE+'/jira/config');if(!_0x570cca['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x570cca['json']();},async 'getJiraIssue'(_0x231c17){const _0x20984a=await fetch(API_BASE+'/jira/issues/'+_0x231c17);if(!_0x20984a['ok']){const _0xbc40e8=await _0x20984a['json']()['catch'](()=>({}));throw new Error(_0xbc40e8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x20984a['statusText']);}return await _0x20984a['json']();},async 'searchJiraIssues'(_0x3162fd,_0x125723=0x14){const _0x144401=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3162fd,'maxResults':_0x125723})});if(!_0x144401['ok']){const _0x19c993=await _0x144401['json']()['catch'](()=>({}));throw new Error(_0x19c993['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x144401['statusText']);}return await _0x144401['json']();},async 'postJiraComment'(_0x575e8f,_0x1f9d49){const _0x1c6b6c=await fetch(API_BASE+'/jira/issues/'+_0x575e8f+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x1f9d49})});if(!_0x1c6b6c['ok']){const _0x5b5e39=await _0x1c6b6c['json']()['catch'](()=>({}));throw new Error(_0x5b5e39['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1c6b6c['statusText']);}return await _0x1c6b6c['json']();},async 'getJiraComments'(_0x221dd0){const _0x33cd43=await fetch(API_BASE+'/jira/issues/'+_0x221dd0+'/comments');if(!_0x33cd43['ok']){const _0x2a53f4=await _0x33cd43['json']()['catch'](()=>({}));throw new Error(_0x2a53f4['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x33cd43['statusText']);}return await _0x33cd43['json']();},async 'promptParameter'({environment:_0x1a1099,command:_0x3255f7,parser:parser='json'}){const _0xff2304=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1a1099,'command':_0x3255f7,'parser':parser})});if(!_0xff2304['ok']){const _0x21e5e4=await _0xff2304['json']()['catch'](()=>({}));throw new Error(_0x21e5e4['message']||_0x21e5e4['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xff2304['statusText']);}return await _0xff2304['json']();},async 'promptParameterStream'(_0x76459b,_0xcf3380){const _0x46ca72=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x76459b)});if(!_0x46ca72['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x46ca72['statusText']);const _0x27b2cf=_0x46ca72['body']['getReader'](),_0x4756d3=new TextDecoder();let _0x1d3ba0='';return new Promise((_0x36fa19,_0x152e4d)=>{const _0x1ef25d=async()=>{try{const {done:_0x3db195,value:_0x1d6930}=await _0x27b2cf['read']();if(_0x3db195)return;_0x1d3ba0+=_0x4756d3['decode'](_0x1d6930,{'stream':!![]});const _0x367867=_0x1d3ba0['split']('\x0a\x0a');_0x1d3ba0=_0x367867['pop']()||'';for(const _0x433e5e of _0x367867){if(!_0x433e5e['trim']())continue;const _0x2da9d4=_0x433e5e['split']('\x0a');let _0x4f92c4='message',_0x2cd969='';for(const _0x428acc of _0x2da9d4){if(_0x428acc['startsWith']('event:'))_0x4f92c4=_0x428acc['substring'](0x6)['trim']();else _0x428acc['startsWith']('data:')&&(_0x2cd969=_0x428acc['substring'](0x5)['trim']());}if(!_0x2cd969)continue;try{const _0x619f5f=JSON['parse'](_0x2cd969);if(_0x4f92c4==='progress'&&_0xcf3380)_0xcf3380(_0x619f5f['stage'],_0x619f5f['message']);else{if(_0x4f92c4==='result'){_0x36fa19(_0x619f5f);return;}else{if(_0x4f92c4==='error'){let _0x420fde=_0x619f5f['message']||_0x619f5f['error']||'Prompt\x20command\x20failed';_0x619f5f['rawOutput']&&(_0x420fde+='\x0a\x0aRaw\x20output:\x0a'+_0x619f5f['rawOutput']);_0x152e4d(new Error(_0x420fde));return;}}}}catch(_0x47736d){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x47736d),console['error']('Event\x20type:',_0x4f92c4),console['error']('Event\x20data:',_0x2cd969),console['error']('First\x20200\x20chars:',_0x2cd969['substring'](0x0,0xc8)),_0x152e4d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x47736d['message']+'\x0a\x0aData:\x20'+_0x2cd969['substring'](0x0,0x1f4)));return;}}_0x1ef25d();}catch(_0x155b7b){_0x152e4d(_0x155b7b);}};_0x1ef25d();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5ef796){const _0x3ed61a=await fetch(''+API_BASE+_0x5ef796);if(!_0x3ed61a['ok']){const _0x376212=await _0x3ed61a['json']()['catch'](()=>({'error':_0x3ed61a['statusText']})),_0xb4b22e=new Error(_0x376212['error']||_0x376212['message']||_0x3ed61a['statusText']);if(_0x376212['detail']!==undefined)_0xb4b22e['detail']=_0x376212['detail'];throw _0xb4b22e;}return await _0x3ed61a['json']();},async 'post'(_0x348f44,_0x3afbe0){const _0x2a8f4c=await fetch(''+API_BASE+_0x348f44,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3afbe0)});if(!_0x2a8f4c['ok']){const _0x17e921=await _0x2a8f4c['json']()['catch'](()=>({'error':_0x2a8f4c['statusText']})),_0x34055e=new Error(_0x17e921['error']||_0x17e921['message']||_0x2a8f4c['statusText']);if(_0x17e921['detail']!==undefined)_0x34055e['detail']=_0x17e921['detail'];throw _0x34055e;}return await _0x2a8f4c['json']();},async 'put'(_0x262c8d,_0x41fd0a){const _0x56441c=await fetch(''+API_BASE+_0x262c8d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41fd0a)});if(!_0x56441c['ok']){const _0x3b6dc6=await _0x56441c['json']()['catch'](()=>({'error':_0x56441c['statusText']})),_0xb04368=new Error(_0x3b6dc6['error']||_0x3b6dc6['message']||_0x56441c['statusText']);if(_0x3b6dc6['detail']!==undefined)_0xb04368['detail']=_0x3b6dc6['detail'];throw _0xb04368;}return await _0x56441c['json']();},async 'delete'(_0x35774b,_0x23d840){const _0x1c24f4={'method':'DELETE'};_0x23d840&&(_0x1c24f4['headers']={'Content-Type':'application/json'},_0x1c24f4['body']=JSON['stringify'](_0x23d840));const _0x35b4be=await fetch(''+API_BASE+_0x35774b,_0x1c24f4);if(!_0x35b4be['ok']){const _0x543679=await _0x35b4be['json']()['catch'](()=>({'error':_0x35b4be['statusText']})),_0x374a96=new Error(_0x543679['error']||_0x543679['message']||_0x35b4be['statusText']);if(_0x543679['detail']!==undefined)_0x374a96['detail']=_0x543679['detail'];throw _0x374a96;}return await _0x35b4be['json']();},async 'getSkills'(){const _0x26770d=await fetch(API_BASE+'/skills');if(!_0x26770d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x26770d['statusText']);return await _0x26770d['json']();},async 'getSkill'(_0x269682){const _0x4ff9c9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x269682));if(!_0x4ff9c9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x4ff9c9['statusText']);return await _0x4ff9c9['json']();},async 'createSkill'(_0xb2e573){const _0x5ad6ba=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb2e573)});if(!_0x5ad6ba['ok']){const _0x5a5a1d=await _0x5ad6ba['json']()['catch'](()=>({'error':_0x5ad6ba['statusText']})),_0x5ef032=new Error(_0x5a5a1d['error']||_0x5a5a1d['message']||_0x5ad6ba['statusText']);if(_0x5a5a1d['detail']!==undefined)_0x5ef032['detail']=_0x5a5a1d['detail'];throw _0x5ef032;}return await _0x5ad6ba['json']();},async 'updateSkill'(_0x2a2a2b,_0x3e99bb){const _0x1df413=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2a2a2b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e99bb)});if(!_0x1df413['ok']){const _0x1fb145=await _0x1df413['json']()['catch'](()=>({'error':_0x1df413['statusText']})),_0x2cc43f=new Error(_0x1fb145['error']||_0x1fb145['message']||_0x1df413['statusText']);if(_0x1fb145['detail']!==undefined)_0x2cc43f['detail']=_0x1fb145['detail'];throw _0x2cc43f;}return await _0x1df413['json']();},async 'deleteSkill'(_0x4c2bee){const _0x47cd04=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c2bee),{'method':'DELETE'});if(!_0x47cd04['ok']){const _0x5528d0=await _0x47cd04['json']()['catch'](()=>({'error':_0x47cd04['statusText']})),_0x4161c8=new Error(_0x5528d0['error']||_0x5528d0['message']||_0x47cd04['statusText']);if(_0x5528d0['detail']!==undefined)_0x4161c8['detail']=_0x5528d0['detail'];throw _0x4161c8;}return await _0x47cd04['json']();},async 'getSkillFile'(_0x4d5644,_0x58c60b){const _0x3e2bf3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4d5644)+'/files/'+_0x58c60b);if(!_0x3e2bf3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3e2bf3['statusText']);return await _0x3e2bf3['json']();},async 'saveSkillFile'(_0x35f49f,_0x53e66e,_0x4b96c9){const _0x4b7f2d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35f49f)+'/files/'+_0x53e66e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b96c9})});if(!_0x4b7f2d['ok']){const _0x250a86=await _0x4b7f2d['json']()['catch'](()=>({'error':_0x4b7f2d['statusText']})),_0x403467=new Error(_0x250a86['error']||_0x250a86['message']||_0x4b7f2d['statusText']);if(_0x250a86['detail']!==undefined)_0x403467['detail']=_0x250a86['detail'];throw _0x403467;}return await _0x4b7f2d['json']();},async 'deleteSkillFile'(_0x4b59a6,_0x22c58e){const _0x2bd757=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b59a6)+'/files/'+_0x22c58e,{'method':'DELETE'});if(!_0x2bd757['ok']){const _0x294da7=await _0x2bd757['json']()['catch'](()=>({'error':_0x2bd757['statusText']})),_0x1d5870=new Error(_0x294da7['error']||_0x294da7['message']||_0x2bd757['statusText']);if(_0x294da7['detail']!==undefined)_0x1d5870['detail']=_0x294da7['detail'];throw _0x1d5870;}return await _0x2bd757['json']();},async 'pullSkills'(){const _0x18faf9=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x18faf9['ok']){const _0x199c18=await _0x18faf9['json']()['catch'](()=>({'error':_0x18faf9['statusText']})),_0x26d988=new Error(_0x199c18['error']||_0x199c18['message']||_0x18faf9['statusText']);if(_0x199c18['detail']!==undefined)_0x26d988['detail']=_0x199c18['detail'];throw _0x26d988;}return await _0x18faf9['json']();},async 'commitSkills'(_0x3d16b5,_0x311f12={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x311f12,_0x453a5d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x3d16b5,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x453a5d['ok']){const _0x162e70=await _0x453a5d['json']()['catch'](()=>({'error':_0x453a5d['statusText']})),_0x54c71e=new Error(_0x162e70['error']||_0x162e70['message']||_0x453a5d['statusText']);if(_0x162e70['detail']!==undefined)_0x54c71e['detail']=_0x162e70['detail'];throw _0x54c71e;}return await _0x453a5d['json']();},async 'discardSkillsChanges'(){const _0x516f05=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x516f05['ok']){const _0xfefe58=await _0x516f05['json']()['catch'](()=>({'error':_0x516f05['statusText']})),_0x52c9e4=new Error(_0xfefe58['error']||_0xfefe58['message']||_0x516f05['statusText']);if(_0xfefe58['detail']!==undefined)_0x52c9e4['detail']=_0xfefe58['detail'];throw _0x52c9e4;}return await _0x516f05['json']();},async 'getSkillCatalog'(){const _0x8bf773=await fetch(API_BASE+'/external-skills/catalog');if(!_0x8bf773['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x8bf773['statusText']);return await _0x8bf773['json']();},async 'getImportedSkillsRegistry'(){const _0x471dc6=await fetch(API_BASE+'/external-skills/registry');if(!_0x471dc6['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x471dc6['statusText']);return await _0x471dc6['json']();},async 'importCatalogSkill'(_0x2787c3){const _0x507dcc=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2787c3})});if(!_0x507dcc['ok']){const _0x26227b=await _0x507dcc['json']()['catch'](()=>({'error':_0x507dcc['statusText']})),_0x3be82e=new Error(_0x26227b['error']||_0x26227b['message']||_0x507dcc['statusText']);if(_0x26227b['detail']!==undefined)_0x3be82e['detail']=_0x26227b['detail'];throw _0x3be82e;}return await _0x507dcc['json']();},async 'importSkillFromGit'(_0x338ace,_0x53a3cb,_0x2830bd='main',_0x1d9443=null){const _0x23bf66=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x338ace,'skillPath':_0x53a3cb,'branch':_0x2830bd,'skillId':_0x1d9443})});if(!_0x23bf66['ok']){const _0x433c75=await _0x23bf66['json']()['catch'](()=>({'error':_0x23bf66['statusText']})),_0x531fd5=new Error(_0x433c75['error']||_0x433c75['message']||_0x23bf66['statusText']);if(_0x433c75['detail']!==undefined)_0x531fd5['detail']=_0x433c75['detail'];throw _0x531fd5;}return await _0x23bf66['json']();},async 'probeMarketplace'(_0x111359,_0x40e3e9='main'){const _0x44004c=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x111359,'branch':_0x40e3e9})});if(!_0x44004c['ok']){const _0x471a7f=await _0x44004c['json']()['catch'](()=>({'error':_0x44004c['statusText']})),_0x372b91=new Error(_0x471a7f['error']||_0x471a7f['message']||_0x44004c['statusText']);if(_0x471a7f['detail']!==undefined)_0x372b91['detail']=_0x471a7f['detail'];throw _0x372b91;}return await _0x44004c['json']();},async 'importMarketplaceBundle'(_0x41a8da,_0x5bb546,_0xac229c,_0x5c6f36=null){const _0x7773fe=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x41a8da,'branch':_0x5bb546,'bundleId':_0xac229c,'selectedSkills':_0x5c6f36})});if(!_0x7773fe['ok']){const _0x48808d=await _0x7773fe['json']()['catch'](()=>({'error':_0x7773fe['statusText']})),_0x18eb33=new Error(_0x48808d['error']||_0x48808d['message']||_0x7773fe['statusText']);if(_0x48808d['detail']!==undefined)_0x18eb33['detail']=_0x48808d['detail'];throw _0x18eb33;}return await _0x7773fe['json']();},async 'importSkillFromFolder'(_0x3d375a,_0x3e0ce4=null){const _0x3c7086=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3d375a,'skillId':_0x3e0ce4})});if(!_0x3c7086['ok']){const _0x1d87a5=await _0x3c7086['json']()['catch'](()=>({'error':_0x3c7086['statusText']})),_0x1df48b=new Error(_0x1d87a5['error']||_0x1d87a5['message']||_0x3c7086['statusText']);if(_0x1d87a5['detail']!==undefined)_0x1df48b['detail']=_0x1d87a5['detail'];throw _0x1df48b;}return await _0x3c7086['json']();},async 'importSkillFromNpm'(_0x5d4456,_0x41557f='latest',_0x55d058=null,_0x183466=null){const _0x3b7c8a=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x5d4456,'version':_0x41557f,'skillId':_0x55d058,'registry':_0x183466})});if(!_0x3b7c8a['ok']){const _0x402d29=await _0x3b7c8a['json']()['catch'](()=>({'error':_0x3b7c8a['statusText']})),_0x2fa036=new Error(_0x402d29['error']||_0x402d29['message']||_0x3b7c8a['statusText']);if(_0x402d29['detail']!==undefined)_0x2fa036['detail']=_0x402d29['detail'];throw _0x2fa036;}return await _0x3b7c8a['json']();},async 'checkSkillUpdates'(_0x3cb062){const _0x3be8ed=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cb062)+'/check-updates',{'method':'POST'});if(!_0x3be8ed['ok']){const _0x59f09a=await _0x3be8ed['json']()['catch'](()=>({'error':_0x3be8ed['statusText']})),_0x215d7d=new Error(_0x59f09a['error']||_0x59f09a['message']||_0x3be8ed['statusText']);if(_0x59f09a['detail']!==undefined)_0x215d7d['detail']=_0x59f09a['detail'];throw _0x215d7d;}return await _0x3be8ed['json']();},async 'updateExternalSkill'(_0x352d0a){const _0x2deefc=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x352d0a)+'/update',{'method':'POST'});if(!_0x2deefc['ok']){const _0x3956cf=await _0x2deefc['json']()['catch'](()=>({'error':_0x2deefc['statusText']})),_0x42fd54=new Error(_0x3956cf['error']||_0x3956cf['message']||_0x2deefc['statusText']);if(_0x3956cf['detail']!==undefined)_0x42fd54['detail']=_0x3956cf['detail'];throw _0x42fd54;}return await _0x2deefc['json']();},async 'updateSkillFlags'(_0x58a7ca,_0xdd6969){const _0x2a87a6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x58a7ca)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0xdd6969})});if(!_0x2a87a6['ok']){const _0x544d9a=await _0x2a87a6['json']()['catch'](()=>({'error':_0x2a87a6['statusText']})),_0xec24a2=new Error(_0x544d9a['error']||_0x544d9a['message']||_0x2a87a6['statusText']);if(_0x544d9a['detail']!==undefined)_0xec24a2['detail']=_0x544d9a['detail'];throw _0xec24a2;}return await _0x2a87a6['json']();},async 'removeFromImportedRegistry'(_0x4a346a){const _0x325440=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4a346a)+'/registry',{'method':'DELETE'});if(!_0x325440['ok']){const _0xf91bef=await _0x325440['json']()['catch'](()=>({'error':_0x325440['statusText']})),_0x248ead=new Error(_0xf91bef['error']||_0xf91bef['message']||_0x325440['statusText']);if(_0xf91bef['detail']!==undefined)_0x248ead['detail']=_0xf91bef['detail'];throw _0x248ead;}return await _0x325440['json']();},async 'getTeams'(){const _0x4e4d49=await fetch(API_BASE+'/teams');if(!_0x4e4d49['ok']){const _0x20e1c9=await _0x4e4d49['json']()['catch'](()=>({'message':_0x4e4d49['statusText']}));throw new Error(_0x20e1c9['message']||'Failed\x20to\x20get\x20teams');}return await _0x4e4d49['json']();},async 'getTeam'(_0x4352f6){const _0x1d70f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4352f6));if(!_0x1d70f1['ok']){const _0x4ba0ff=await _0x1d70f1['json']()['catch'](()=>({'message':_0x1d70f1['statusText']}));throw new Error(_0x4ba0ff['message']||'Failed\x20to\x20get\x20team');}return await _0x1d70f1['json']();},async 'createTeam'(_0x521490){const _0x4b30d9=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x521490)});if(!_0x4b30d9['ok']){const _0x571d87=await _0x4b30d9['json']()['catch'](()=>({'message':_0x4b30d9['statusText']}));throw new Error(_0x571d87['message']||'Failed\x20to\x20create\x20team');}return await _0x4b30d9['json']();},async 'updateTeam'(_0x45a2e6,_0x3a8628){const _0x309cf7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x45a2e6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a8628)});if(!_0x309cf7['ok']){const _0x4674f9=await _0x309cf7['json']()['catch'](()=>({'message':_0x309cf7['statusText']}));throw new Error(_0x4674f9['message']||'Failed\x20to\x20update\x20team');}return await _0x309cf7['json']();},async 'deleteTeam'(_0x399512){const _0x3657bf=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x399512),{'method':'DELETE'});if(!_0x3657bf['ok']){const _0x54625a=await _0x3657bf['json']()['catch'](()=>({'message':_0x3657bf['statusText']}));throw new Error(_0x54625a['message']||'Failed\x20to\x20delete\x20team');}return await _0x3657bf['json']();},async 'addTeamMember'(_0x2d8f14,_0x2837f6){const _0x58b283=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2d8f14)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2837f6})});if(!_0x58b283['ok']){const _0xee9220=await _0x58b283['json']()['catch'](()=>({'message':_0x58b283['statusText']}));throw new Error(_0xee9220['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x58b283['json']();},async 'removeTeamMember'(_0x4c298b,_0x3342fc){const _0x34b154=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4c298b)+'/members/'+encodeURIComponent(_0x3342fc),{'method':'DELETE'});if(!_0x34b154['ok']){const _0x34505e=await _0x34b154['json']()['catch'](()=>({'message':_0x34b154['statusText']}));throw new Error(_0x34505e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x34b154['json']();},async 'getBindings'(_0x4c81da={}){const _0x3a4c83=new URLSearchParams();if(_0x4c81da['resource_type'])_0x3a4c83['set']('resource_type',_0x4c81da['resource_type']);if(_0x4c81da['resource_id'])_0x3a4c83['set']('resource_id',_0x4c81da['resource_id']);if(_0x4c81da['subject_type'])_0x3a4c83['set']('subject_type',_0x4c81da['subject_type']);if(_0x4c81da['subject_id'])_0x3a4c83['set']('subject_id',_0x4c81da['subject_id']);const _0x27a2d0=_0x3a4c83['toString'](),_0x25fe49=await fetch(API_BASE+'/bindings'+(_0x27a2d0?'?'+_0x27a2d0:''));if(!_0x25fe49['ok']){const _0x197bc6=await _0x25fe49['json']()['catch'](()=>({'message':_0x25fe49['statusText']}));throw new Error(_0x197bc6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x25fe49['json']();},async 'createBinding'(_0x2d5a48){const _0x5ad55b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d5a48)});if(!_0x5ad55b['ok']){const _0x393ecc=await _0x5ad55b['json']()['catch'](()=>({'message':_0x5ad55b['statusText']}));throw new Error(_0x393ecc['message']||'Failed\x20to\x20create\x20binding');}return await _0x5ad55b['json']();},async 'updateBinding'(_0xf3dfc0,_0x162521){const _0x1d405f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xf3dfc0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x162521)});if(!_0x1d405f['ok']){const _0x56db67=await _0x1d405f['json']()['catch'](()=>({'message':_0x1d405f['statusText']}));throw new Error(_0x56db67['message']||'Failed\x20to\x20update\x20binding');}return await _0x1d405f['json']();},async 'deleteBinding'(_0xb25b6d){const _0x188d57=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xb25b6d),{'method':'DELETE'});if(!_0x188d57['ok']){const _0x472e1c=await _0x188d57['json']()['catch'](()=>({'message':_0x188d57['statusText']}));throw new Error(_0x472e1c['message']||'Failed\x20to\x20delete\x20binding');}return await _0x188d57['json']();},async 'getRoleDefinitions'(){const _0x54f551=await fetch(API_BASE+'/roles');if(!_0x54f551['ok']){const _0x403822=await _0x54f551['json']()['catch'](()=>({'message':_0x54f551['statusText']}));throw new Error(_0x403822['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x54f551['json']();},async 'getRoleDefinition'(_0x2e5f90){const _0x4ab75e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2e5f90));if(!_0x4ab75e['ok']){const _0x58cadc=await _0x4ab75e['json']()['catch'](()=>({'message':_0x4ab75e['statusText']}));throw new Error(_0x58cadc['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4ab75e['json']();},async 'createRoleDefinition'(_0x3a677a){const _0x33641d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a677a)});if(!_0x33641d['ok']){const _0x5b8c98=await _0x33641d['json']()['catch'](()=>({'message':_0x33641d['statusText']}));throw new Error(_0x5b8c98['message']||_0x5b8c98['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x33641d['json']();},async 'updateRoleDefinition'(_0x4fcce2,_0x1f71f1){const _0x49e968=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4fcce2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f71f1)});if(!_0x49e968['ok']){const _0x5ee456=await _0x49e968['json']()['catch'](()=>({'message':_0x49e968['statusText']}));throw new Error(_0x5ee456['message']||_0x5ee456['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x49e968['json']();},async 'deleteRoleDefinition'(_0x20afee){const _0x2ab735=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x20afee),{'method':'DELETE'});if(!_0x2ab735['ok']){const _0x444e15=await _0x2ab735['json']()['catch'](()=>({'message':_0x2ab735['statusText']}));throw new Error(_0x444e15['message']||_0x444e15['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2ab735['json']();},async 'getAvailablePermissions'(){const _0x575d12=await fetch(API_BASE+'/roles/available-permissions');if(!_0x575d12['ok']){const _0x52f3d2=await _0x575d12['json']()['catch'](()=>({'message':_0x575d12['statusText']}));throw new Error(_0x52f3d2['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x575d12['json']();},async 'getGitProviderAllowedTeams'(_0xae52fe){const _0x5072a6=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xae52fe)+'/allowed-teams');if(!_0x5072a6['ok']){const _0x52711a=await _0x5072a6['json']()['catch'](()=>({'message':_0x5072a6['statusText']}));throw new Error(_0x52711a['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5072a6['json']();},async 'setGitProviderAllowedTeams'(_0xf37664,_0x7e8b8f){const _0x3b5171=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xf37664)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x7e8b8f})});if(!_0x3b5171['ok']){const _0x35d2ae=await _0x3b5171['json']()['catch'](()=>({'message':_0x3b5171['statusText']}));throw new Error(_0x35d2ae['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3b5171['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 _0x3db679=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2c4985=>{_0x2c4985['el']['style']['bottom']=_0x3db679+'px';const _0x4b0b20=_0x2c4985['el']['offsetHeight']||toastState['defaultHeight'];_0x3db679+=_0x4b0b20+toastState['gap'];});});}function removeToastById(_0x2a1b4f){const _0x2d8d3b=toastState['toasts']['findIndex'](_0x4b634d=>_0x4b634d['id']===_0x2a1b4f);if(_0x2d8d3b===-0x1)return;const _0xcde4b7=toastState['toasts'][_0x2d8d3b];if(_0xcde4b7['timeoutId'])clearTimeout(_0xcde4b7['timeoutId']);_0xcde4b7['el']['classList']['remove']('show'),setTimeout(()=>_0xcde4b7['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2d8d3b,0x1),repositionAllToasts();}function registerToast(_0xaf70c0){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0xaf70c0),repositionAllToasts(),_0xaf70c0['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(_0x1bc448){if(_0x1bc448===null||_0x1bc448===undefined)return'';return String(_0x1bc448)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0xc74e2e,_0x49bb76){if(_0xc74e2e&&typeof _0xc74e2e==='object'&&!Array['isArray'](_0xc74e2e))return{'code':typeof _0xc74e2e['text']==='string'?_0xc74e2e['text']:'','language':typeof _0xc74e2e['lang']==='string'?_0xc74e2e['lang']:''};return{'code':typeof _0xc74e2e==='string'?_0xc74e2e:'','language':typeof _0x49bb76==='string'?_0x49bb76:''};}function buildMermaidBlock(_0x1fb626){const _0x1ee222=String(_0x1fb626||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1ee222))+'\x22>'+escapeHtmlValue(_0x1ee222)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x4721b5=new marked['Renderer'](),_0x3f4631=_0x4721b5['code']['bind'](_0x4721b5);return _0x4721b5['code']=function(_0x1ef890,_0x27306e,..._0x1d8813){const {code:_0x130f1a,language:_0x401682}=getMarkdownCodeBlockPayload(_0x1ef890,_0x27306e),_0x2fda44=String(_0x401682||'')['trim']()['toLowerCase']();if(_0x2fda44==='mermaid')return buildMermaidBlock(_0x130f1a);const _0x52bf76=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x52bf76&&_0x2fda44)try{const _0x2a7846=_0x52bf76['getLanguage'](_0x2fda44)?_0x2fda44:'plaintext',_0x4331a6=_0x52bf76['highlight'](_0x130f1a,{'language':_0x2a7846})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2fda44)+'\x22>'+_0x4331a6+'</code></pre>';}catch(_0x1b403a){console['error']('Syntax\x20highlighting\x20error:',_0x1b403a);}return _0x3f4631(_0x1ef890,_0x27306e,..._0x1d8813);},sharedMarkedRenderer=_0x4721b5,_0x4721b5;}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 _0x4ea727=window['mermaid'];if(!_0x4ea727||typeof _0x4ea727['initialize']!=='function')return _0x4ea727||null;return _0x4ea727['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4ea727;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x53627b,_0x28f2c1)=>{const _0x16109c=()=>_0x53627b(configureMermaidInstance()),_0x437fec=()=>{mermaidLoadPromise=null,_0x28f2c1(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x7f945b=document['getElementById'](MERMAID_SCRIPT_ID);!_0x7f945b&&(_0x7f945b=document['createElement']('script'),_0x7f945b['id']=MERMAID_SCRIPT_ID,_0x7f945b['src']=MERMAID_SCRIPT_SRC,_0x7f945b['async']=!![],document['head']['appendChild'](_0x7f945b));if(window['mermaid']){_0x16109c();return;}_0x7f945b['addEventListener']('load',_0x16109c,{'once':!![]}),_0x7f945b['addEventListener']('error',_0x437fec,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x58e966){const _0x3fb82c=_0x58e966['getAttribute']('data-mermaid-source');if(!_0x3fb82c)return null;let _0x109df2=_0x3fb82c;try{_0x109df2=decodeURIComponent(_0x3fb82c);}catch{}return _0x58e966['textContent']=_0x109df2,_0x58e966['removeAttribute']('data-processed'),_0x58e966['removeAttribute']('aria-roledescription'),_0x58e966['removeAttribute']('role'),_0x58e966['removeAttribute']('aria-label'),_0x109df2;}function collectMermaidNodes(_0x2ae4e9,_0xa864d6){if(!(_0x2ae4e9 instanceof Element))return;_0x2ae4e9['matches']('.mermaid[data-mermaid-source]')&&_0xa864d6['add'](_0x2ae4e9),_0x2ae4e9['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27560f=>{_0xa864d6['add'](_0x27560f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x501b97=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x27972a=>setTimeout(_0x27972a,0x0);_0x501b97(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0xb26c66=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0xb26c66);});});}function queueMermaidRender(_0x29ccb8){const _0x17762b=new Set();_0x29ccb8 instanceof Document||_0x29ccb8 instanceof DocumentFragment?_0x29ccb8['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1cd59f=>_0x17762b['add'](_0x1cd59f)):collectMermaidNodes(_0x29ccb8,_0x17762b);if(_0x17762b['size']===0x0)return;_0x17762b['forEach'](_0x48aa55=>pendingMermaidNodes['add'](_0x48aa55)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x4c5ae5=Array['from'](pendingMermaidNodes)['filter'](_0xcdbd2=>_0xcdbd2['isConnected']);pendingMermaidNodes['clear']();if(_0x4c5ae5['length']===0x0)return;const _0x1943a4=await loadMermaid();if(!_0x1943a4)return;configureMermaidInstance();const _0x6a38a6=getMermaidTheme();for(const _0x59d61d of _0x4c5ae5){const _0xcbef0a=_0x59d61d['getAttribute']('data-mermaid-source');if(!_0xcbef0a)continue;const _0x113c14=_0x59d61d['getAttribute']('data-processed')==='true';if(_0x113c14&&_0x59d61d['dataset']['mermaidTheme']===_0x6a38a6)continue;restoreMermaidSource(_0x59d61d);try{if(typeof _0x1943a4['run']==='function')await _0x1943a4['run']({'nodes':[_0x59d61d]});else typeof _0x1943a4['init']==='function'&&_0x1943a4['init'](undefined,[_0x59d61d]);_0x59d61d['dataset']['mermaidTheme']=_0x6a38a6,delete _0x59d61d['dataset']['mermaidError'];}catch(_0x51ff2c){console['error']('Mermaid\x20render\x20failed:',_0x51ff2c),restoreMermaidSource(_0x59d61d),_0x59d61d['dataset']['mermaidError']='true',delete _0x59d61d['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x584bff=>{_0x584bff['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x584bff);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1fea35=>{_0x1fea35['forEach'](_0x5e8fc2=>{_0x5e8fc2['addedNodes']['forEach'](_0x422c9d=>{_0x422c9d['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x422c9d);});});}),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'(_0x486ae7){const _0x2587c9=new Date(_0x486ae7),_0x22807e=new Date(),_0x434560=_0x22807e-_0x2587c9,_0x1ca9e8=Math['floor'](_0x434560/0x3e8),_0x49a100=Math['floor'](_0x1ca9e8/0x3c),_0x1ca177=Math['floor'](_0x49a100/0x3c),_0x431b3c=Math['floor'](_0x1ca177/0x18);if(_0x1ca9e8<0x3c)return'now';if(_0x49a100<0x3c)return _0x49a100+'m\x20ago';if(_0x1ca177<0x18)return _0x1ca177+'h\x20ago';return _0x431b3c+'d\x20ago';},'getStatusIcon'(_0x56ad3d){switch(_0x56ad3d){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3bde86){switch(_0x3bde86){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'(_0x1c5cd5,_0x2b8202=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3b83c2={};_0x3b83c2['text/plain']=new Blob([_0x1c5cd5],{'type':'text/plain'});_0x2b8202&&(_0x3b83c2['text/html']=new Blob([_0x2b8202],{'type':'text/html'}));const _0x49a108=new ClipboardItem(_0x3b83c2);return await navigator['clipboard']['write']([_0x49a108]),!![];}catch(_0x6b4518){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x6b4518);}try{const _0x25ad0f=_0x5066bc=>{_0x5066bc['preventDefault'](),_0x5066bc['clipboardData']['setData']('text/plain',_0x1c5cd5),_0x2b8202&&_0x5066bc['clipboardData']['setData']('text/html',_0x2b8202);};document['addEventListener']('copy',_0x25ad0f);const _0xdddb85=document['execCommand']('copy');document['removeEventListener']('copy',_0x25ad0f);if(_0xdddb85)return!![];}catch(_0x1a7150){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1a7150);}try{const _0x2e0ded=document['createElement']('textarea');_0x2e0ded['value']=_0x1c5cd5,_0x2e0ded['style']['position']='fixed',_0x2e0ded['style']['opacity']='0',_0x2e0ded['style']['pointerEvents']='none',document['body']['appendChild'](_0x2e0ded),_0x2e0ded['select']();const _0x154107=document['execCommand']('copy');return document['body']['removeChild'](_0x2e0ded),_0x154107;}catch(_0x4590de){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4590de),![];}},'showToast'(_0x1f8876,_0x476083='info'){const _0x5fcd66=getNextToastId(),_0x59f400=document['createElement']('div');_0x59f400['className']='toast\x20toast-'+_0x476083,_0x59f400['textContent']=_0x1f8876,_0x59f400['dataset']['toastId']=_0x5fcd66,document['body']['appendChild'](_0x59f400);const _0x2d7e90=_0x476083==='error'?0x2710:0xbb8,_0x1ede5=setTimeout(()=>{removeToastById(_0x5fcd66);},_0x2d7e90),_0x10ac3b={'id':_0x5fcd66,'el':_0x59f400,'timeoutId':_0x1ede5};return registerToast(_0x10ac3b),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x59f400['classList']['add']('show');});}),_0x5fcd66;},'showError'(_0x27318b){console['error'](_0x27318b);const _0x597b81=typeof _0x27318b==='string'?_0x27318b:_0x27318b['message']||'An\x20error\x20occurred';this['showToast'](_0x597b81,'error');},'showSuccess'(_0x453dcc){this['showToast'](_0x453dcc,'success');},'capitalize'(_0x17dac1){if(!_0x17dac1)return'';return _0x17dac1['charAt'](0x0)['toUpperCase']()+_0x17dac1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0xfa8745){return escapeHtmlValue(_0xfa8745);},'ansiToHtml'(_0x30823d){if(_0x30823d===null||_0x30823d===undefined)return'';let _0x48bd65=this['escapeHtml'](_0x30823d);const _0x11d979={'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'},_0xbb5144={'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 _0x6e6c07=0x0;return _0x48bd65=_0x48bd65['replace'](/\x1b\[([0-9;]*)m/g,(_0x77ac3,_0x5dc68f)=>{if(!_0x5dc68f||_0x5dc68f==='0'){const _0xa61cd7='</span>'['repeat'](_0x6e6c07);return _0x6e6c07=0x0,_0xa61cd7;}const _0x507852=_0x5dc68f['split'](';'),_0x28b068=[];for(const _0x4d7274 of _0x507852){if(_0x4d7274==='1')_0x28b068['push']('font-weight:bold');else{if(_0x4d7274==='2')_0x28b068['push']('opacity:0.7');else{if(_0x4d7274==='3')_0x28b068['push']('font-style:italic');else{if(_0x4d7274==='4')_0x28b068['push']('text-decoration:underline');else{if(_0x4d7274==='9')_0x28b068['push']('text-decoration:line-through');else{if(_0x11d979[_0x4d7274])_0x28b068['push']('color:'+_0x11d979[_0x4d7274]);else{if(_0xbb5144[_0x4d7274])_0x28b068['push']('background-color:'+_0xbb5144[_0x4d7274]);}}}}}}}if(_0x28b068['length']>0x0)return _0x6e6c07++,'<span\x20style=\x22'+_0x28b068['join'](';')+'\x22>';return'';}),_0x48bd65+='</span>'['repeat'](_0x6e6c07),_0x48bd65=_0x48bd65['replace'](/\\u001b\[([0-9;]*)m/g,(_0x359644,_0x5ca348)=>{if(!_0x5ca348||_0x5ca348==='0')return'';const _0x446e7a=_0x5ca348['split'](';'),_0x5b9176=[];for(const _0x1dc714 of _0x446e7a){if(_0x1dc714==='1')_0x5b9176['push']('font-weight:bold');else{if(_0x11d979[_0x1dc714])_0x5b9176['push']('color:'+_0x11d979[_0x1dc714]);else{if(_0xbb5144[_0x1dc714])_0x5b9176['push']('background-color:'+_0xbb5144[_0x1dc714]);}}}if(_0x5b9176['length']>0x0)return'<span\x20style=\x22'+_0x5b9176['join'](';')+'\x22>';return'';}),_0x48bd65;},'showModal'({title:_0x4a1531,content:_0x1adcdd,buttons:buttons=[]}){const _0x40c953='\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'](_0x4a1531)+'</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'+_0x1adcdd+'\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']((_0x4a5d35,_0x5a55c9)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4a5d35['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5a55c9+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4a5d35['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',_0x19cb72=document['createElement']('div');_0x19cb72['id']='utils-modal',_0x19cb72['className']='modal',_0x19cb72['innerHTML']=_0x40c953,document['body']['appendChild'](_0x19cb72);const _0x406cb3=document['getElementById']('utils-modal-close');_0x406cb3&&_0x406cb3['addEventListener']('click',()=>this['hideModal']());const _0xfeb2=_0x19cb72['querySelectorAll']('[data-btn-index]');_0xfeb2['forEach'](_0x142380=>{const _0x309b02=parseInt(_0x142380['dataset']['btnIndex']);buttons[_0x309b02]?.['onClick']&&_0x142380['addEventListener']('click',buttons[_0x309b02]['onClick']);});const _0x33450a=document['getElementById']('utils-modal-overlay');_0x33450a&&_0x33450a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x4d67da=document['getElementById']('utils-modal');_0x4d67da&&_0x4d67da['remove']();},'parseKeyValuePairs'(_0x3734e4){const _0x80f27f={};if(!_0x3734e4)return _0x80f27f;return _0x3734e4['split'](/\r?\n/)['map'](_0x131541=>_0x131541['trim']())['filter'](Boolean)['forEach'](_0x2d118e=>{const _0x481f17=_0x2d118e['indexOf']('=');if(_0x481f17>0x0){const _0x2a11e1=_0x2d118e['slice'](0x0,_0x481f17)['trim'](),_0x2a68ae=_0x2d118e['slice'](_0x481f17+0x1)['trim']();if(_0x2a11e1)_0x80f27f[_0x2a11e1]=_0x2a68ae;}}),_0x80f27f;},'debounce'(_0x44041d,_0x700f0b=0xfa){let _0x194cdb=null;return(..._0x15afa7)=>{clearTimeout(_0x194cdb),_0x194cdb=setTimeout(()=>_0x44041d['apply'](this,_0x15afa7),_0x700f0b);};},'formatTimestamp'(_0x475a77){if(!_0x475a77)return'N/A';const _0x137872=new Date(_0x475a77);return _0x137872['toLocaleDateString']()+'\x20'+_0x137872['toLocaleTimeString']();},'getQueryParams'(){const _0x127ac4=new URLSearchParams(window['location']['search']),_0x11f484={};for(const [_0xbfc225,_0x2ba587]of _0x127ac4){_0x11f484[_0xbfc225]=_0x2ba587;}return _0x11f484;},'formatDuration'(_0xc9cd2d,_0x1cc6eb){if(!_0xc9cd2d)return'N/A';const _0x4b7248=new Date(_0xc9cd2d),_0x2ecbbd=_0x1cc6eb?new Date(_0x1cc6eb):new Date(),_0x452147=_0x2ecbbd-_0x4b7248;if(_0x452147<0x0)return'0s';const _0x11a9a9=Math['floor'](_0x452147/0x3e8),_0x2acb28=Math['floor'](_0x11a9a9/0x3c),_0x529846=Math['floor'](_0x2acb28/0x3c),_0x422d0a=Math['floor'](_0x529846/0x18);if(_0x11a9a9<0x3c)return _0x11a9a9+'s';if(_0x2acb28<0x3c)return _0x2acb28+'m\x20'+_0x11a9a9%0x3c+'s';if(_0x529846<0x18)return _0x529846+'h\x20'+_0x2acb28%0x3c+'m\x20'+_0x11a9a9%0x3c+'s';return _0x422d0a+'d\x20'+_0x529846%0x18+'h\x20'+_0x2acb28%0x3c+'m';},'renderMarkdown'(_0x137374,_0x849220={}){if(!_0x137374)return'';_0x137374=this['rewriteAttachmentLinks'](_0x137374,_0x849220),_0x137374=this['rewriteColorSyntax'](_0x137374);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x137374,_0x849220);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x137374);}catch(_0x3e8108){return console['error']('Markdown\x20parsing\x20error:',_0x3e8108),this['renderMarkdownFallback'](_0x137374,_0x849220);}},'rewriteAttachmentLinks'(_0x328576,_0x541ebd={}){const _0x56b8f6=typeof _0x541ebd['resolveAttachmentUrl']==='function'?_0x541ebd['resolveAttachmentUrl']:_0x541ebd['taskId']?_0x312106=>API_BASE+'/tasks/'+_0x541ebd['taskId']+'/attachments/'+encodeURIComponent(_0x312106):null;if(!_0x56b8f6)return _0x328576;return String(_0x328576)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x2eccd9,_0x1f6630)=>{const _0x24550b=String(_0x1f6630||'')['trim']();if(!_0x24550b)return _0x2eccd9;let _0x38ceee=_0x24550b;try{_0x38ceee=decodeURIComponent(_0x24550b);}catch{}const _0x1addb0=_0x56b8f6(_0x38ceee);if(!_0x1addb0)return _0x2eccd9;return']('+_0x1addb0+')';});},'rewriteColorSyntax'(_0x1dbcfa){if(!_0x1dbcfa)return _0x1dbcfa;return String(_0x1dbcfa)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x2d81ca,_0x5aea43,_0x8c245e)=>{const _0x58d586=this['rewriteColorSyntax'](_0x8c245e);return'<span\x20style=\x22color:\x20'+_0x5aea43+'\x22>'+_0x58d586+'</span>';});},'renderMarkdownFallback'(_0x313fe1,_0x47b43a={}){if(!_0x313fe1)return'';_0x313fe1=_0x313fe1['replace'](/\r\n/g,'\x0a'),_0x313fe1=_0x313fe1['replace'](/\r/g,'\x0a'),_0x313fe1=this['rewriteAttachmentLinks'](_0x313fe1,_0x47b43a);let _0x1004c2=this['escapeHtml'](_0x313fe1);return _0x1004c2=_0x1004c2['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x1004c2=_0x1004c2['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x1004c2=_0x1004c2['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x1004c2=_0x1004c2['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x1004c2=_0x1004c2['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x1004c2=_0x1004c2['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x1004c2=_0x1004c2['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x1004c2=_0x1004c2['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x1004c2=_0x1004c2['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x1004c2=_0x1004c2['replace'](/\n\n/g,'</p><p>'),_0x1004c2=_0x1004c2['replace'](/\n/g,'<br>'),'<p>'+_0x1004c2+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1e401b=new Uint8Array(0x10);crypto['getRandomValues'](_0x1e401b),_0x1e401b[0x6]=_0x1e401b[0x6]&0xf|0x40,_0x1e401b[0x8]=_0x1e401b[0x8]&0x3f|0x80;const _0x261ccf=Array['from'](_0x1e401b,_0x4bd3b1=>_0x4bd3b1['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x261ccf['slice'](0x0,0x8)+'-'+_0x261ccf['slice'](0x8,0xc)+'-'+_0x261ccf['slice'](0xc,0x10)+'-'+_0x261ccf['slice'](0x10,0x14)+'-'+_0x261ccf['slice'](0x14);}};export class CustomSelect{constructor(_0x24a97e,_0x33ca37={}){this['nativeSelect']=_0x24a97e,this['options']=_0x33ca37,this['isOpen']=![],this['selectedValue']=_0x24a97e['value']||'',this['searchable']=_0x33ca37['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2ba448=document['createElement']('div');_0x2ba448['className']='custom-select';const _0x5120a2=document['createElement']('div');_0x5120a2['className']='custom-select-trigger',_0x5120a2['setAttribute']('tabindex','0'),_0x5120a2['setAttribute']('role','button'),_0x5120a2['setAttribute']('aria-haspopup','listbox');const _0x5bf7c0=document['createElement']('span');_0x5bf7c0['className']='custom-select-trigger-text';const _0x29c4f8=document['createElement']('span');_0x29c4f8['className']='custom-select-arrow',_0x29c4f8['textContent']='▼',_0x5120a2['appendChild'](_0x5bf7c0),_0x5120a2['appendChild'](_0x29c4f8);const _0x12a1ef=document['createElement']('div');_0x12a1ef['className']='custom-select-dropdown',_0x12a1ef['setAttribute']('role','listbox');if(this['searchable']){const _0x4c12b7=document['createElement']('div');_0x4c12b7['className']='custom-select-search';const _0x8a0b9f=document['createElement']('input');_0x8a0b9f['type']='text',_0x8a0b9f['className']='custom-select-search-input',_0x8a0b9f['placeholder']='Type\x20to\x20search...',_0x8a0b9f['setAttribute']('aria-label','Search\x20options'),_0x8a0b9f['addEventListener']('input',_0x234812=>{this['searchQuery']=_0x234812['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x8a0b9f['addEventListener']('keydown',_0x245d30=>{if(_0x245d30['key']==='Escape')_0x245d30['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x245d30['key']==='Enter'){_0x245d30['preventDefault'](),_0x245d30['stopPropagation']();const _0x2650e9=_0x12a1ef['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2650e9){const _0x98d189=_0x2650e9['getAttribute']('data-value');this['select'](_0x98d189);}}}}),_0x4c12b7['appendChild'](_0x8a0b9f),_0x12a1ef['appendChild'](_0x4c12b7),this['searchInput']=_0x8a0b9f;}const _0x2eae8b=document['createElement']('div');_0x2eae8b['className']='custom-select-options',_0x12a1ef['appendChild'](_0x2eae8b),_0x2ba448['appendChild'](_0x5120a2),_0x2ba448['appendChild'](_0x12a1ef),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2ba448,this['nativeSelect']),this['wrapper']=_0x2ba448,this['trigger']=_0x5120a2,this['triggerText']=_0x5bf7c0,this['dropdown']=_0x12a1ef,this['optionsContainer']=_0x2eae8b,_0x5120a2['addEventListener']('click',()=>this['toggle']()),_0x5120a2['addEventListener']('keydown',_0x31f325=>this['handleKeydown'](_0x31f325)),document['addEventListener']('click',_0x20ef1f=>{!_0x2ba448['contains'](_0x20ef1f['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x460b5e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x460b5e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x133b6f=new MutationObserver(()=>{this['updateDisabledState']();});_0x133b6f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x586be0=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x586be0['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x451913=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x451913),this['trigger']['setAttribute']('aria-disabled',_0x451913?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x451913?'-1':'0'),_0x451913&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x4d7959=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x728e7a=_0x4d7959['filter'](_0x4e3cc3=>!_0x4e3cc3['disabled']&&!_0x4e3cc3['hidden']);_0x4d7959['forEach']((_0x136c78,_0x27c843)=>{const _0xe55b9a=document['createElement']('div');_0xe55b9a['className']='custom-select-option',_0xe55b9a['textContent']=_0x136c78['textContent'],_0xe55b9a['setAttribute']('data-value',_0x136c78['value']),_0xe55b9a['setAttribute']('data-index',_0x27c843),_0xe55b9a['setAttribute']('role','option'),_0x136c78['disabled']?_0xe55b9a['classList']['add']('disabled'):_0xe55b9a['addEventListener']('click',()=>this['select'](_0x136c78['value'])),_0x136c78['value']===this['selectedValue']&&_0xe55b9a['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0xe55b9a),this['allOptions']['push']({'element':_0xe55b9a,'text':_0x136c78['textContent']['toLowerCase'](),'value':_0x136c78['value'],'disabled':_0x136c78['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4c6f23=this['searchInput']['parentElement'];_0x728e7a['length']>0x3?_0x4c6f23['style']['display']='':_0x4c6f23['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xa033da=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x36c4e7=>{if(!_0xa033da||_0x36c4e7['disabled'])_0x36c4e7['element']['style']['display']='';else{const _0x1ba597=_0x36c4e7['text']['includes'](_0xa033da);_0x36c4e7['element']['style']['display']=_0x1ba597?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3e3c74){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3e3c74,this['nativeSelect']['value']=_0x3e3c74;const _0x1c5fc5=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1c5fc5),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x5b51b2=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x5b51b2&&(this['triggerText']['textContent']=_0x5b51b2['textContent'],_0x5b51b2['disabled']||_0x5b51b2['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1ac149=>{_0x1ac149['getAttribute']('data-value')===this['selectedValue']?_0x1ac149['classList']['add']('selected'):_0x1ac149['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 _0x5330bf=window['getComputedStyle'](this['dropdown']);if(_0x5330bf['position']==='fixed'){const _0x25e049=this['trigger']['getBoundingClientRect'](),_0x56ab9a=parseInt(_0x5330bf['maxHeight'])||0xc8,_0x4c49d0=window['innerHeight'],_0x1d12cd=_0x4c49d0-_0x25e049['bottom'],_0x2619c1=_0x25e049['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x20e596;_0x1d12cd<_0x56ab9a&&_0x2619c1>_0x1d12cd?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4c49d0-_0x25e049['top']+'px',_0x20e596=Math['min'](_0x56ab9a,_0x2619c1-0xa),this['dropdown']['style']['maxHeight']=_0x20e596+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x25e049['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x20e596=Math['min'](_0x56ab9a,_0x1d12cd-0xa),this['dropdown']['style']['maxHeight']=_0x20e596+'px');if(this['optionsContainer']){let _0x51eeb8=_0x20e596;if(this['searchInput']){const _0x3bd832=this['searchInput']['parentElement'];_0x3bd832&&(_0x51eeb8-=_0x3bd832['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x51eeb8)+'px';}this['dropdown']['style']['left']=_0x25e049['left']+'px',this['dropdown']['style']['width']=_0x25e049['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xe89ef=this['searchInput']['parentElement'];_0xe89ef&&_0xe89ef['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'](_0x1aac63){if(this['nativeSelect']['disabled'])return;if(_0x1aac63['key']==='Enter'||_0x1aac63['key']==='\x20')_0x1aac63['preventDefault'](),this['toggle']();else _0x1aac63['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5efad7='\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',_0x5efad7),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5def83=document['getElementById']('confirm-dialog-close'),_0x59a542=document['getElementById']('confirm-dialog-cancel'),_0x4a9bb0=document['getElementById']('confirm-dialog-confirm'),_0x11fa52=this['_modal']['querySelector']('.modal-overlay');_0x5def83['addEventListener']('click',()=>this['_resolve'](![])),_0x59a542['addEventListener']('click',()=>this['_resolve'](![])),_0x4a9bb0['addEventListener']('click',()=>this['_resolve'](!![])),_0x11fa52['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x36740d=>{if(_0x36740d['key']==='Escape')_0x36740d['preventDefault'](),this['_resolve'](![]);else _0x36740d['key']==='Enter'&&(_0x36740d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x777247,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x5a204a=>{this['_resolvePromise']=_0x5a204a,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x777247;const _0x26285c=document['getElementById']('confirm-dialog-cancel'),_0x5637cc=document['getElementById']('confirm-dialog-confirm');_0x26285c['textContent']=cancelText,_0x5637cc['textContent']=confirmText,_0x5637cc['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5637cc['focus']();});},'_resolve'(_0x10233a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x10233a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4cc381,_0x5b88e2={}){this['container']=_0x4cc381,this['options']={'placeholder':_0x5b88e2['placeholder']||'Type\x20to\x20search...','maxItems':_0x5b88e2['maxItems']||0x64,'loadItems':_0x5b88e2['loadItems']||(async()=>[]),'renderItem':_0x5b88e2['renderItem']||(_0x470cf3=>({'primary':String(_0x470cf3),'secondary':''})),'onSelect':_0x5b88e2['onSelect']||(()=>{}),'filterItems':_0x5b88e2['filterItems']||null,'getItemValue':_0x5b88e2['getItemValue']||(_0x539acd=>_0x539acd),'sortItems':_0x5b88e2['sortItems']||null,'debounceMs':_0x5b88e2['debounceMs']||0xc8,'minCharsForSearch':_0x5b88e2['minCharsForSearch']||0x0,'emptyMessage':_0x5b88e2['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5b88e2['loadingMessage']||'Loading...','preload':_0x5b88e2['preload']!==![],'searchMode':_0x5b88e2['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',_0x34abfb=>this['onBlur'](_0x34abfb)),this['input']['addEventListener']('input',_0x326b97=>this['onInput'](_0x326b97)),this['input']['addEventListener']('keydown',_0x3ba759=>this['onKeydown'](_0x3ba759)),this['clearBtn']['addEventListener']('mousedown',_0x13724a=>{_0x13724a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x460a2a=>{_0x460a2a['preventDefault']();}),document['addEventListener']('click',_0x1e8c96=>{!this['wrapper']['contains'](_0x1e8c96['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(_0xb1d9ac){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0xb1d9ac);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2e370b){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x29c295){const _0x3c1cfa=_0x29c295['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3c1cfa);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3c1cfa):this['loadAndShow'](_0x3c1cfa);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x42b029){switch(_0x42b029['key']){case'ArrowDown':_0x42b029['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x42b029['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x42b029['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x42b029['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2292e4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x12234f=this['selectedIndex']+_0x2292e4;if(_0x12234f>=0x0&&_0x12234f<this['filteredItems']['length']){this['selectedIndex']=_0x12234f,this['updateSelectionHighlight']();const _0x486e44=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x486e44[this['selectedIndex']]&&_0x486e44[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x180ef9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x180ef9['forEach']((_0x1d6ed0,_0x1a9d0c)=>{_0x1d6ed0['classList']['toggle']('keyboard-selected',_0x1a9d0c===this['selectedIndex']);});}async['loadAndShow'](_0x20ae0f){this['showLoading']();try{const _0x403234=await this['options']['loadItems'](_0x20ae0f);if(this['options']['searchMode']==='server'){let _0x37df1e=_0x403234;this['options']['sortItems']&&(_0x37df1e=this['options']['sortItems']([..._0x403234]));this['filteredItems']=_0x37df1e;const _0x442503=this['filteredItems']['length']>=this['options']['maxItems'];_0x442503&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x442503),this['open']();}else this['allItems']=_0x403234,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x20ae0f);}catch(_0x519f94){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x519f94),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3cb7bf){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3cb7bf):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x387e14=this['filteredItems']['length']>=this['options']['maxItems'];_0x387e14&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x387e14),this['open']();}['renderItems'](_0x985869){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']((_0x1c47d2,_0x50666d)=>{const _0x591944=document['createElement']('div');_0x591944['className']='autocomplete-select-item',_0x591944['setAttribute']('role','option'),_0x591944['setAttribute']('data-index',_0x50666d);const _0x9645e2=this['options']['renderItem'](_0x1c47d2);let _0x5d7d69='';_0x9645e2['icon']&&(_0x5d7d69='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x9645e2['iconClass']||'')+'\x22>'+_0x9645e2['icon']+'</span>'),_0x591944['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5d7d69+'\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'](_0x9645e2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x9645e2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x9645e2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x591944['addEventListener']('click',()=>{this['selectItem'](_0x1c47d2);}),_0x591944['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x50666d,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x591944);}),_0x985869?(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'](_0x500a62){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x500a62)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1948fc){this['selectedItem']=_0x1948fc;const _0xed817e=this['options']['renderItem'](_0x1948fc);this['input']['value']=_0xed817e['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1948fc);}['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'](_0x38c9c4){if(_0x38c9c4){this['selectedItem']=_0x38c9c4;const _0x2ca3e8=this['options']['renderItem'](_0x38c9c4);this['input']['value']=_0x2ca3e8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0xfa62ae){this['allItems']=_0xfa62ae,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'](_0x5942b1){this['input']['placeholder']=_0x5942b1;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x438c0d=null){const _0xbef0d9=document['getElementById']('admin-menu-container'),_0x465250=document['getElementById']('admin-menu-btn'),_0x87b868=document['getElementById']('admin-menu');if(!_0xbef0d9||!_0x465250||!_0x87b868)return;try{!_0x438c0d&&(_0x438c0d=await API['getCurrentUser']());if(_0x438c0d){const _0x193f3a=window['Permissions'],_0x57ddc9=_0x193f3a['hasServerPermission'](_0x438c0d,'*')||_0x193f3a['hasEnvPermission'](_0x438c0d,'environments:manage')||_0x193f3a['hasServerPermission'](_0x438c0d,'users:create')||_0x193f3a['hasTeamPermission'](_0x438c0d,'teams:manage')||_0x193f3a['hasEnvPermission'](_0x438c0d,'environments:view_details');if(!_0x57ddc9)return;_0xbef0d9['hidden']=![];if(!_0x193f3a['hasServerPermission'](_0x438c0d,'*')){const _0x3e2092=_0x87b868['querySelectorAll']('.admin-menu-item');_0x3e2092['forEach'](_0xea906f=>{const _0x369ac9=_0xea906f['querySelector']('.option-text')?.['textContent']?.['trim']();_0x369ac9==='Users'&&!_0x193f3a['hasServerPermission'](_0x438c0d,'users:create')&&(_0xea906f['hidden']=!![]),_0x369ac9==='Skills'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Server\x20Settings'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Server\x20Health'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Git\x20History'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Roles'&&(_0xea906f['hidden']=!![]);});}_0x465250['addEventListener']('click',_0x10ae23=>{_0x10ae23['stopPropagation']();const _0x28731b=document['getElementById']('actions-menu');if(_0x28731b)_0x28731b['hidden']=!![];_0x87b868['hidden']=!_0x87b868['hidden'];}),document['addEventListener']('click',_0x52cc79=>{!_0x87b868['hidden']&&!_0x465250['contains'](_0x52cc79['target'])&&!_0x87b868['contains'](_0x52cc79['target'])&&(_0x87b868['hidden']=!![]);}),document['addEventListener']('keydown',_0x85dbb=>{_0x85dbb['key']==='Escape'&&!_0x87b868['hidden']&&(_0x87b868['hidden']=!![]);});const _0x1b7873=document['getElementById']('server-health-btn');_0x1b7873&&_0x1b7873['addEventListener']('click',async()=>{_0x87b868['hidden']=!![];const {openServerHealthModal:_0xa85064}=await import('./server-health.js');_0xa85064();});}}catch(_0x52af5a){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x52af5a['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};