@profoundlogic/coderflow-server 0.6.7 → 0.6.8

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 (172) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  62. package/dist/lib/model-fetcher.js +1 -1
  63. package/dist/lib/notifications.js +1 -1
  64. package/dist/lib/objective-context.js +1 -1
  65. package/dist/lib/oidc-auth.js +1 -1
  66. package/dist/lib/oidc-device-flow.js +1 -1
  67. package/dist/lib/passwordTokens.js +1 -1
  68. package/dist/lib/permission-resolver.js +1 -1
  69. package/dist/lib/pin-cascade.js +1 -1
  70. package/dist/lib/provider-accounts.js +1 -1
  71. package/dist/lib/provider-oauth.js +1 -1
  72. package/dist/lib/provider-profile.js +1 -1
  73. package/dist/lib/provider-token-refresh.js +1 -1
  74. package/dist/lib/rbac-user-state.js +1 -1
  75. package/dist/lib/request-url.js +1 -1
  76. package/dist/lib/rewind.js +1 -1
  77. package/dist/lib/role-definitions.js +1 -1
  78. package/dist/lib/roles.js +1 -1
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-aliases.js +1 -1
  84. package/dist/lib/task-name-format.js +1 -1
  85. package/dist/lib/task-name-generator.js +1 -1
  86. package/dist/lib/task-source-metadata.js +1 -1
  87. package/dist/lib/teams.js +1 -1
  88. package/dist/lib/user-git-oauth.js +1 -1
  89. package/dist/lib/user-git-tokens.js +1 -1
  90. package/dist/lib/users.js +1 -1
  91. package/dist/middleware/requireAuth.js +1 -1
  92. package/dist/middleware/requireInit.js +1 -1
  93. package/dist/middleware/requirePermission.js +1 -1
  94. package/dist/package.json +1 -1
  95. package/dist/playwright.config.js +1 -1
  96. package/dist/playwright.task-terminal.config.js +1 -1
  97. package/dist/routes/apiKeys.js +1 -1
  98. package/dist/routes/auth-oidc.js +1 -1
  99. package/dist/routes/auth.js +1 -1
  100. package/dist/routes/automations.js +1 -1
  101. package/dist/routes/bindings.js +1 -1
  102. package/dist/routes/build.js +1 -1
  103. package/dist/routes/containers.js +1 -1
  104. package/dist/routes/deploy-task.js +1 -1
  105. package/dist/routes/environment-management.js +1 -1
  106. package/dist/routes/environments.js +1 -1
  107. package/dist/routes/external-skills.js +1 -1
  108. package/dist/routes/git-credentials.js +1 -1
  109. package/dist/routes/git-oauth.js +1 -1
  110. package/dist/routes/git-provider-setup.js +1 -1
  111. package/dist/routes/health.js +1 -1
  112. package/dist/routes/jira.js +1 -1
  113. package/dist/routes/objective-management.js +1 -1
  114. package/dist/routes/password.js +1 -1
  115. package/dist/routes/prompt.js +1 -1
  116. package/dist/routes/provider-auth.js +1 -1
  117. package/dist/routes/qa.js +1 -1
  118. package/dist/routes/roles.js +1 -1
  119. package/dist/routes/settings.js +1 -1
  120. package/dist/routes/skill-management.js +1 -1
  121. package/dist/routes/skills.js +1 -1
  122. package/dist/routes/tasks.js +1 -1
  123. package/dist/routes/teams.js +1 -1
  124. package/dist/routes/templates.js +1 -1
  125. package/dist/routes/test-task.js +1 -1
  126. package/dist/routes/test.js +1 -1
  127. package/dist/routes/users.js +1 -1
  128. package/dist/routes/visualizations.js +1 -1
  129. package/dist/scripts/create-user.js +1 -1
  130. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  131. package/dist/start.js +1 -1
  132. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  133. package/dist/web-ui/public/activity-feed.js +1 -1
  134. package/dist/web-ui/public/activity-formatters.js +1 -1
  135. package/dist/web-ui/public/agent-event-parser.js +1 -1
  136. package/dist/web-ui/public/app.js +1 -1
  137. package/dist/web-ui/public/approve-dialog.js +1 -1
  138. package/dist/web-ui/public/automation-links.js +1 -1
  139. package/dist/web-ui/public/automation-schedule.js +1 -1
  140. package/dist/web-ui/public/comments-widget.js +1 -1
  141. package/dist/web-ui/public/diff-utils.js +1 -1
  142. package/dist/web-ui/public/environments.js +1 -1
  143. package/dist/web-ui/public/feedback-widget.js +1 -1
  144. package/dist/web-ui/public/file-selection-tree.js +1 -1
  145. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  146. package/dist/web-ui/public/git-history.js +1 -1
  147. package/dist/web-ui/public/git-status.js +1 -1
  148. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  149. package/dist/web-ui/public/index.js +1 -1
  150. package/dist/web-ui/public/login.js +1 -1
  151. package/dist/web-ui/public/markdown-editor.js +1 -1
  152. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  153. package/dist/web-ui/public/modal-maximize.js +1 -1
  154. package/dist/web-ui/public/notifications.js +1 -1
  155. package/dist/web-ui/public/permissions.js +1 -1
  156. package/dist/web-ui/public/pr-dialog.js +1 -1
  157. package/dist/web-ui/public/roles.js +1 -1
  158. package/dist/web-ui/public/server-health.js +1 -1
  159. package/dist/web-ui/public/settings.js +1 -1
  160. package/dist/web-ui/public/setup-password.js +1 -1
  161. package/dist/web-ui/public/skills.js +1 -1
  162. package/dist/web-ui/public/sse-client.js +1 -1
  163. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  164. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  165. package/dist/web-ui/public/task.js +1 -1
  166. package/dist/web-ui/public/teams.js +1 -1
  167. package/dist/web-ui/public/terminal.js +1 -1
  168. package/dist/web-ui/public/theme.js +1 -1
  169. package/dist/web-ui/public/users.js +1 -1
  170. package/dist/web-ui/public/variant-grouping.js +1 -1
  171. package/package.json +1 -1
  172. package/dist/start.js.bak +0 -1381
@@ -1 +1 @@
1
- function detectApiBase(){const _0x50b2f3=window['location']['pathname'],_0x40a93c=_0x50b2f3['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x40a93c)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x40a93c[0x1]),_0x40a93c[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1bc039={}){const _0x72803=new URLSearchParams();_0x1bc039['userId']&&_0x72803['set']('userId',String(_0x1bc039['userId']));_0x1bc039['automation']&&_0x72803['set']('automation',String(_0x1bc039['automation']));const _0x3d9517=API_BASE+'/tasks/stats'+(_0x72803['toString']()?'?'+_0x72803['toString']():''),_0x261cbf=await fetch(_0x3d9517);if(!_0x261cbf['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x261cbf['statusText']);return await _0x261cbf['json']();},async 'getTasks'(_0x41eb60={}){const _0x5caf26=new URLSearchParams();_0x41eb60['status']&&_0x5caf26['set']('status',String(_0x41eb60['status']));_0x41eb60['environment']&&_0x5caf26['set']('environment',String(_0x41eb60['environment']));_0x41eb60['automation']&&_0x5caf26['set']('automation',String(_0x41eb60['automation']));if(_0x41eb60['include']){const _0x4a9ab6=Array['isArray'](_0x41eb60['include'])?_0x41eb60['include']['join'](','):String(_0x41eb60['include']);_0x4a9ab6&&_0x5caf26['set']('include',_0x4a9ab6);}_0x41eb60['filter']&&_0x5caf26['set']('filter',String(_0x41eb60['filter']));_0x41eb60['page']&&_0x5caf26['set']('page',String(_0x41eb60['page']));_0x41eb60['limit']&&_0x5caf26['set']('limit',String(_0x41eb60['limit']));_0x41eb60['userId']&&_0x5caf26['set']('userId',String(_0x41eb60['userId']));_0x41eb60['search']&&_0x5caf26['set']('search',String(_0x41eb60['search']));_0x41eb60['includeChildTasks']&&_0x5caf26['set']('includeChildTasks','true');const _0x496563=API_BASE+'/tasks'+(_0x5caf26['toString']()?'?'+_0x5caf26['toString']():''),_0x3f3eab=await fetch(_0x496563);if(!_0x3f3eab['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x3f3eab['statusText']);return await _0x3f3eab['json']();},async 'getAutomations'(_0x372580={}){const _0x10b035=new URLSearchParams();_0x372580['environment']&&_0x10b035['set']('environment',String(_0x372580['environment']));const _0x5d904d=await fetch(API_BASE+'/api/automations'+(_0x10b035['toString']()?'?'+_0x10b035['toString']():''));if(!_0x5d904d['ok']){const _0x1e2294=await _0x5d904d['json']()['catch'](()=>({}));throw new Error(_0x1e2294['message']||_0x1e2294['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x5d904d['statusText']);}return await _0x5d904d['json']();},async 'getAutomation'(_0x7fa3aa){const _0x98e15d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x7fa3aa));if(!_0x98e15d['ok']){const _0x212d45=await _0x98e15d['json']()['catch'](()=>({}));throw new Error(_0x212d45['message']||_0x212d45['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x98e15d['statusText']);}return await _0x98e15d['json']();},async 'createAutomation'(_0x5977ae){const _0x3f6a49=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5977ae||{})});if(!_0x3f6a49['ok']){const _0x8469dd=await _0x3f6a49['json']()['catch'](()=>({}));throw new Error(_0x8469dd['message']||_0x8469dd['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x3f6a49['statusText']);}return await _0x3f6a49['json']();},async 'updateAutomation'(_0x2702e2,_0x4191ca){const _0x25a429=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2702e2),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4191ca||{})});if(!_0x25a429['ok']){const _0x1216cd=await _0x25a429['json']()['catch'](()=>({}));throw new Error(_0x1216cd['message']||_0x1216cd['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x25a429['statusText']);}return await _0x25a429['json']();},async 'deleteAutomation'(_0x216ea8){const _0x382a42=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x216ea8),{'method':'DELETE'});if(!_0x382a42['ok']){const _0x5e7983=await _0x382a42['json']()['catch'](()=>({}));throw new Error(_0x5e7983['message']||_0x5e7983['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x382a42['statusText']);}return await _0x382a42['json']();},async 'triggerAutomation'(_0x235b52){const _0x450a92=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x235b52)+'/trigger',{'method':'POST'});if(!_0x450a92['ok']){const _0x43abfb=await _0x450a92['json']()['catch'](()=>({}));throw new Error(_0x43abfb['message']||_0x43abfb['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x450a92['statusText']);}return await _0x450a92['json']();},async 'setAutomationEnabled'(_0x3c22c4,_0x28afa9){const _0x103112=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3c22c4)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x28afa9})});if(!_0x103112['ok']){const _0x5928e7=await _0x103112['json']()['catch'](()=>({}));throw new Error(_0x5928e7['message']||_0x5928e7['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x103112['statusText']);}return await _0x103112['json']();},async 'getAutomationHistory'(_0xa531ea,_0xfb3946=0x32){const _0x52ade5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xa531ea)+'/history?limit='+encodeURIComponent(String(_0xfb3946)));if(!_0x52ade5['ok']){const _0x5ea58f=await _0x52ade5['json']()['catch'](()=>({}));throw new Error(_0x5ea58f['message']||_0x5ea58f['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x52ade5['statusText']);}return await _0x52ade5['json']();},async 'getTask'(_0x53b392,_0x2b8972={}){const _0x4e9514=new URLSearchParams();if(_0x2b8972['include']){const _0x134775=Array['isArray'](_0x2b8972['include'])?_0x2b8972['include']['join'](','):String(_0x2b8972['include']);if(_0x134775)_0x4e9514['set']('include',_0x134775);}const _0x56f54b=await fetch(API_BASE+'/tasks/'+_0x53b392+(_0x4e9514['toString']()?'?'+_0x4e9514['toString']():''));if(!_0x56f54b['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x56f54b['statusText']);return await _0x56f54b['json']();},async 'getTaskResults'(_0x356e48){const _0x2b5b4f=await fetch(API_BASE+'/tasks/'+_0x356e48+'/results');if(!_0x2b5b4f['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2b5b4f['statusText']);return await _0x2b5b4f['json']();},async 'getTaskPatches'(_0x32af6c){const _0x456ac7=await fetch(API_BASE+'/tasks/'+_0x32af6c+'/patches');if(!_0x456ac7['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x456ac7['statusText']);return await _0x456ac7['json']();},async 'getTaskAttachments'(_0x13dba1){const _0x10bfc0=await fetch(API_BASE+'/tasks/'+_0x13dba1+'/attachments');if(!_0x10bfc0['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x10bfc0['statusText']);return await _0x10bfc0['json']();},async 'uploadAttachments'(_0x5187dc,_0x22d2f4){const _0x1101a6=new FormData();for(const _0x31bf4d of _0x22d2f4){_0x1101a6['append']('attachments',_0x31bf4d);}const _0x49b1c4=await fetch(API_BASE+'/tasks/'+_0x5187dc+'/attachments',{'method':'POST','body':_0x1101a6});if(!_0x49b1c4['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x49b1c4['statusText']);return await _0x49b1c4['json']();},async 'isAINameGenerationAvailable'(){try{const _0x44b8ed=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x44b8ed['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x44b8ed['json']();}catch(_0x525931){return{'available':![],'reason':_0x525931['message']};}},async 'generateTaskName'(_0x272412){try{const _0x647aa9=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x272412})});return await _0x647aa9['json']();}catch(_0x32f299){return{'success':![],'error':_0x32f299['message']};}},async 'createTask'(_0x214494){let _0x5da179,_0x3ca501={};if(_0x214494['files']&&_0x214494['files']['length']>0x0){const _0x4afed3=new FormData();for(const [_0xe06d0e,_0x216c3f]of Object['entries'](_0x214494)){if(_0xe06d0e!=='files'){if(_0x216c3f==null)continue;typeof _0x216c3f==='object'?_0x4afed3['append'](_0xe06d0e,JSON['stringify'](_0x216c3f)):_0x4afed3['append'](_0xe06d0e,String(_0x216c3f));}}for(const _0x581391 of _0x214494['files']){_0x4afed3['append']('attachments',_0x581391);}_0x5da179=_0x4afed3;}else _0x3ca501['Content-Type']='application/json',_0x5da179=JSON['stringify'](_0x214494);const _0x59eeae=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x3ca501,'body':_0x5da179});if(!_0x59eeae['ok']){const _0x135cbf=await _0x59eeae['json'](),_0xa74cb1=new Error(_0x135cbf['error']||'Failed\x20to\x20create\x20task:\x20'+_0x59eeae['statusText']),{message:_0x591f50,..._0x546019}=_0x135cbf;Object['assign'](_0xa74cb1,_0x546019);throw _0xa74cb1;}return await _0x59eeae['json']();},async 'createTestTask'(_0x195b07){const _0x161c74=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x195b07)});if(!_0x161c74['ok']){const _0x4fcc26=await _0x161c74['json']();throw new Error(_0x4fcc26['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x161c74['statusText']);}return await _0x161c74['json']();},async 'createEphemeralTest'(_0x478a2f){const _0x2121fa=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x478a2f)});if(!_0x2121fa['ok']){const _0x18c47a=await _0x2121fa['json']();throw new Error(_0x18c47a['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2121fa['statusText']);}return await _0x2121fa['json']();},async 'createDeployTask'(_0x327893){const _0x5db0d4=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x327893)});if(!_0x5db0d4['ok']){const _0x5a8c0d=await _0x5db0d4['json']();throw new Error(_0x5a8c0d['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5db0d4['statusText']);}return await _0x5db0d4['json']();},async 'getEnvironments'(){const _0x2ff4e=await fetch(API_BASE+'/environments');if(!_0x2ff4e['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2ff4e['statusText']);return await _0x2ff4e['json']();},async 'getEnvironment'(_0x340781){const _0x5f186b=await fetch(API_BASE+'/environments/'+_0x340781);if(!_0x5f186b['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x5f186b['statusText']);return await _0x5f186b['json']();},async 'getEnvironmentRepoHistory'(_0x343309,_0xb1e8a4,_0x47dc6d={}){if(!_0x343309||!_0xb1e8a4)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xd0058e=new URLSearchParams();if(_0x47dc6d['limit'])_0xd0058e['set']('limit',String(_0x47dc6d['limit']));if(_0x47dc6d['offset'])_0xd0058e['set']('offset',String(_0x47dc6d['offset']));if(_0x47dc6d['search'])_0xd0058e['set']('search',String(_0x47dc6d['search']));if(_0x47dc6d['branch'])_0xd0058e['set']('branch',String(_0x47dc6d['branch']));const _0x7c7d4b=API_BASE+'/environments/'+encodeURIComponent(_0x343309)+'/repos/'+encodeURIComponent(_0xb1e8a4)+'/git/history',_0x5a2fcf=await fetch(''+_0x7c7d4b+(_0xd0058e['toString']()?'?'+_0xd0058e['toString']():''));if(!_0x5a2fcf['ok']){const _0xcd0337=await _0x5a2fcf['json']()['catch'](()=>({}));throw new Error(_0xcd0337['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x5a2fcf['statusText']);}return await _0x5a2fcf['json']();},async 'getEnvironmentRepoCommit'(_0x48df4e,_0x29a65f,_0x167f1d){if(!_0x48df4e||!_0x29a65f||!_0x167f1d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x22fefc=API_BASE+'/environments/'+encodeURIComponent(_0x48df4e)+'/repos/'+encodeURIComponent(_0x29a65f)+'/git/commits/'+encodeURIComponent(_0x167f1d),_0x11e2fa=await fetch(_0x22fefc);if(!_0x11e2fa['ok']){const _0x461bd8=await _0x11e2fa['json']()['catch'](()=>({}));throw new Error(_0x461bd8['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x11e2fa['statusText']);}return await _0x11e2fa['json']();},async 'getEnvironmentRepoBranches'(_0x531379,_0x259049){if(!_0x531379||!_0x259049)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x115530=API_BASE+'/environments/'+encodeURIComponent(_0x531379)+'/repos/'+encodeURIComponent(_0x259049)+'/git/branches',_0xc18ebb=await fetch(_0x115530);if(!_0xc18ebb['ok']){const _0x4d4744=await _0xc18ebb['json']()['catch'](()=>({}));throw new Error(_0x4d4744['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xc18ebb['statusText']);}return await _0xc18ebb['json']();},async 'revertEnvironmentRepoCommit'(_0x373e39,_0x12e1f1,_0x2eeb90,_0x15843e={}){if(!_0x373e39||!_0x12e1f1||!_0x2eeb90)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x5e1422=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x373e39)+'/repos/'+encodeURIComponent(_0x12e1f1)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2eeb90,..._0x15843e})});if(!_0x5e1422['ok']){const _0x4fa808=await _0x5e1422['json']()['catch'](()=>({}));throw new Error(_0x4fa808['message']||_0x4fa808['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x5e1422['statusText']);}return await _0x5e1422['json']();},async 'getTemplates'(_0x833a56={}){const _0x4b3b84=new URLSearchParams();if(_0x833a56['include']){const _0x1a874b=Array['isArray'](_0x833a56['include'])?_0x833a56['include']['join'](','):String(_0x833a56['include']);if(_0x1a874b)_0x4b3b84['set']('include',_0x1a874b);}const _0x177096=await fetch(API_BASE+'/templates'+(_0x4b3b84['toString']()?'?'+_0x4b3b84['toString']():''));if(!_0x177096['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x177096['statusText']);return await _0x177096['json']();},async 'getTemplatesForEnvironment'(_0x45b535,_0x47a455={}){if(!_0x45b535)throw new Error('Environment\x20name\x20is\x20required');const _0x65cfec=new URLSearchParams();if(_0x47a455['include']){const _0xde3ff=Array['isArray'](_0x47a455['include'])?_0x47a455['include']['join'](','):String(_0x47a455['include']);if(_0xde3ff)_0x65cfec['set']('include',_0xde3ff);}const _0x2b1aa6=await fetch(API_BASE+'/templates/'+_0x45b535+(_0x65cfec['toString']()?'?'+_0x65cfec['toString']():''));if(!_0x2b1aa6['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x45b535+':\x20'+_0x2b1aa6['statusText']);return await _0x2b1aa6['json']();},async 'getTemplate'(_0xc6b0e0,_0x369d58,_0x3c1c40={}){if(!_0xc6b0e0||!_0x369d58)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x4b352c=new URLSearchParams();if(_0x3c1c40['include']){const _0x30e80b=Array['isArray'](_0x3c1c40['include'])?_0x3c1c40['include']['join'](','):String(_0x3c1c40['include']);if(_0x30e80b)_0x4b352c['set']('include',_0x30e80b);}const _0x2f3f2f=await fetch(API_BASE+'/templates/'+_0xc6b0e0+'/'+_0x369d58+(_0x4b352c['toString']()?'?'+_0x4b352c['toString']():''));if(!_0x2f3f2f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x2f3f2f['statusText']);return await _0x2f3f2f['json']();},async 'getTaskLogs'(_0x335fd,_0x2e48a4={}){if(!_0x335fd)throw new Error('Task\x20ID\x20is\x20required');const _0x46f64f=new URLSearchParams();_0x2e48a4['tail']&&_0x46f64f['set']('tail',String(_0x2e48a4['tail']));const _0x496472=await fetch(API_BASE+'/tasks/'+_0x335fd+'/logs'+(_0x46f64f['toString']()?'?'+_0x46f64f['toString']():''));if(!_0x496472['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x496472['statusText']);return await _0x496472['text']();},async 'getContainers'(){const _0x57b311=await fetch(API_BASE+'/containers');if(!_0x57b311['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x57b311['statusText']);return await _0x57b311['json']();},async 'getContainer'(_0x34a05d){const _0x2bae5e=await fetch(API_BASE+'/containers/'+_0x34a05d);if(!_0x2bae5e['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x2bae5e['statusText']);return await _0x2bae5e['json']();},async 'startInteractiveContainer'(_0x5551b8){const _0x4bf7c2=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5551b8)});if(!_0x4bf7c2['ok']){const _0x39bcf1=await _0x4bf7c2['json']()['catch'](()=>({}));throw new Error(_0x39bcf1['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4bf7c2['statusText']);}return await _0x4bf7c2['json']();},async 'stopContainer'(_0x3feedc){const _0x72fd0d=await fetch(API_BASE+'/containers/'+_0x3feedc,{'method':'DELETE'});if(!_0x72fd0d['ok']){const _0x318a5a=await _0x72fd0d['json']()['catch'](()=>({}));throw new Error(_0x318a5a['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x72fd0d['statusText']);}return await _0x72fd0d['json']();},async 'stopTask'(_0x5d1cd7){if(!_0x5d1cd7)throw new Error('Task\x20ID\x20is\x20required');const _0x2dbbf7=await fetch(API_BASE+'/tasks/'+_0x5d1cd7+'/stop',{'method':'POST'});if(!_0x2dbbf7['ok']){const _0x5e7e56=await _0x2dbbf7['json']()['catch'](()=>({}));throw new Error(_0x5e7e56['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x2dbbf7['statusText']);}return await _0x2dbbf7['json']();},async 'interruptTask'(_0x2f8875){if(!_0x2f8875)throw new Error('Task\x20ID\x20is\x20required');const _0x51268c=await fetch(API_BASE+'/tasks/'+_0x2f8875+'/interrupt',{'method':'POST'});if(!_0x51268c['ok']){const _0x4d103e=await _0x51268c['json']()['catch'](()=>({}));throw new Error(_0x4d103e['error']||_0x4d103e['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x51268c['statusText']);}return await _0x51268c['json']();},async 'startTask'(_0x3d7b3c){if(!_0x3d7b3c)throw new Error('Task\x20ID\x20is\x20required');const _0x5b8e75=await fetch(API_BASE+'/tasks/'+_0x3d7b3c+'/start',{'method':'POST'});if(!_0x5b8e75['ok']){const _0x423f8d=await _0x5b8e75['json']()['catch'](()=>({}));throw new Error(_0x423f8d['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5b8e75['statusText']);}return await _0x5b8e75['json']();},async 'deleteTask'(_0x482f2e){if(!_0x482f2e)throw new Error('Task\x20ID\x20is\x20required');const _0x399289=await fetch(API_BASE+'/tasks/'+_0x482f2e,{'method':'DELETE'});if(!_0x399289['ok']){const _0x42ad4a=await _0x399289['json']()['catch'](()=>({}));throw new Error(_0x42ad4a['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x399289['statusText']);}return await _0x399289['json']();},async 'refreshTasksFromDisk'(){const _0x4b7a28=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x4b7a28['ok']){const _0x4cb783=await _0x4b7a28['json']()['catch'](()=>({}));throw new Error(_0x4cb783['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x4b7a28['statusText']);}return await _0x4b7a28['json']();},async 'approveTask'(_0x313b27,_0x2ee8d7={}){if(!_0x313b27)throw new Error('Task\x20ID\x20is\x20required');const _0x482c0d={'commit_message':_0x2ee8d7['commit_message']||'','pull':_0x2ee8d7['pull']??![],'push':_0x2ee8d7['push']??![]};_0x2ee8d7['new_branch']&&(_0x482c0d['new_branch']=_0x2ee8d7['new_branch']);const _0x3610c3=await fetch(API_BASE+'/tasks/'+_0x313b27+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x482c0d)});if(!_0x3610c3['ok']){const _0x57b0c5=await _0x3610c3['json']()['catch'](()=>({}));let _0xb2de32=_0x57b0c5['error']||_0x57b0c5['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3610c3['statusText'];if(_0x57b0c5['results']&&Array['isArray'](_0x57b0c5['results'])){const _0x2e0414=_0x57b0c5['results']['filter'](_0x460008=>!_0x460008['success']&&_0x460008['error']);_0x2e0414['length']>0x0&&(_0xb2de32=_0x2e0414[0x0]['error']);}throw new Error(_0xb2de32);}return await _0x3610c3['json']();},async 'getPullRequestInfo'(_0x5eeba6){if(!_0x5eeba6)throw new Error('Task\x20ID\x20is\x20required');const _0x418828=await fetch(API_BASE+'/tasks/'+_0x5eeba6+'/pull-request-info');if(!_0x418828['ok']){const _0x54ba6c=await _0x418828['json']()['catch'](()=>({}));throw new Error(_0x54ba6c['error']||_0x54ba6c['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x418828['statusText']);}return await _0x418828['json']();},async 'createPullRequests'(_0x14a700,_0x249c92){if(!_0x14a700)throw new Error('Task\x20ID\x20is\x20required');if(!_0x249c92||!Array['isArray'](_0x249c92))throw new Error('repos\x20array\x20is\x20required');const _0x252884=await fetch(API_BASE+'/tasks/'+_0x14a700+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x249c92})});if(!_0x252884['ok']){const _0x4a4f38=await _0x252884['json']()['catch'](()=>({}));let _0x4c1eb9=_0x4a4f38['error']||_0x4a4f38['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x252884['statusText'];if(_0x4a4f38['results']&&Array['isArray'](_0x4a4f38['results'])){const _0x3acf59=_0x4a4f38['results']['filter'](_0x4f1fa3=>!_0x4f1fa3['success']&&_0x4f1fa3['error']);_0x3acf59['length']>0x0&&(_0x4c1eb9=_0x3acf59[0x0]['error']);}throw new Error(_0x4c1eb9);}return await _0x252884['json']();},async 'syncRepos'(_0x3af19a){if(!_0x3af19a)throw new Error('Task\x20ID\x20is\x20required');const _0x1a9431=await fetch(API_BASE+'/tasks/'+_0x3af19a+'/sync-repos',{'method':'POST'});if(!_0x1a9431['ok']){const _0x5f1121=await _0x1a9431['json']()['catch'](()=>({}));throw new Error(_0x5f1121['error']||_0x5f1121['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x1a9431['statusText']);}return await _0x1a9431['json']();},async 'getIbmiSyncInfo'(_0x54d475){if(!_0x54d475)throw new Error('Task\x20ID\x20is\x20required');const _0x579571=await fetch(API_BASE+'/tasks/'+_0x54d475+'/ibmi-sync-info');if(!_0x579571['ok']){const _0x3ed5e8=await _0x579571['json']()['catch'](()=>({}));throw new Error(_0x3ed5e8['error']||_0x3ed5e8['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x579571['json']();},async 'getSyncFiles'(_0x3e5b24){if(!_0x3e5b24)throw new Error('Task\x20ID\x20is\x20required');const _0x41249f=await fetch(API_BASE+'/tasks/'+_0x3e5b24+'/sync-to-ibmi/files');if(!_0x41249f['ok']){const _0x431017=await _0x41249f['json']()['catch'](()=>({}));throw new Error(_0x431017['error']||_0x431017['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x41249f['json']();},async 'syncToIbmi'(_0x3195e8,_0x31eb53,_0x226cca=null,_0x14fee1=null,_0xf5f4c6=null){if(!_0x3195e8)throw new Error('Task\x20ID\x20is\x20required');const _0x493ff6={'library':_0x31eb53};if(_0x226cca)_0x493ff6['user']=_0x226cca;if(_0x14fee1)_0x493ff6['password']=_0x14fee1;if(_0xf5f4c6)_0x493ff6['files']=_0xf5f4c6;const _0x2a1da3=await fetch(API_BASE+'/tasks/'+_0x3195e8+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x493ff6)});if(!_0x2a1da3['ok']){const _0x56604c=await _0x2a1da3['json']()['catch'](()=>({}));throw new Error(_0x56604c['error']||_0x56604c['message']||'Sync\x20failed');}return await _0x2a1da3['json']();},async 'getIbmiSyncLog'(_0x4d5cef){if(!_0x4d5cef)throw new Error('Task\x20ID\x20is\x20required');const _0x3f7239=await fetch(API_BASE+'/tasks/'+_0x4d5cef+'/ibmi-sync-log');if(!_0x3f7239['ok']){const _0x1478f4=await _0x3f7239['json']()['catch'](()=>({}));throw new Error(_0x1478f4['error']||_0x1478f4['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x3f7239['json']();},async 'pullChanges'(_0x5ab069){if(!_0x5ab069)throw new Error('Task\x20ID\x20is\x20required');const _0x591df4=await fetch(API_BASE+'/tasks/'+_0x5ab069+'/pull-changes',{'method':'POST'});if(!_0x591df4['ok']){const _0x5e3177=await _0x591df4['json']()['catch'](()=>({}));throw new Error(_0x5e3177['error']||_0x5e3177['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x591df4['statusText']);}return await _0x591df4['json']();},async 'readFile'(_0x2e9962,_0x140c8f){if(!_0x2e9962)throw new Error('Task\x20ID\x20is\x20required');if(!_0x140c8f)throw new Error('File\x20path\x20is\x20required');const _0xaee0aa=await fetch(API_BASE+'/tasks/'+_0x2e9962+'/files?path='+encodeURIComponent(_0x140c8f));if(!_0xaee0aa['ok']){const _0x1eeaf8=await _0xaee0aa['json']()['catch'](()=>({}));throw new Error(_0x1eeaf8['error']||_0x1eeaf8['message']||'Failed\x20to\x20read\x20file:\x20'+_0xaee0aa['statusText']);}return await _0xaee0aa['json']();},'getTaskFileDownloadUrl'(_0x15b785,_0xa6b7df){if(!_0x15b785)throw new Error('Task\x20ID\x20is\x20required');if(!_0xa6b7df)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x15b785+'/files/download?path='+encodeURIComponent(_0xa6b7df);},async 'writeFile'(_0x1d4811,_0x3a6d57,_0x2b8c8a){if(!_0x1d4811)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a6d57)throw new Error('File\x20path\x20is\x20required');if(_0x2b8c8a===undefined)throw new Error('Content\x20is\x20required');const _0x1e7ce9=await fetch(API_BASE+'/tasks/'+_0x1d4811+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a6d57,'content':_0x2b8c8a})});if(!_0x1e7ce9['ok']){const _0x47d463=await _0x1e7ce9['json']()['catch'](()=>({}));throw new Error(_0x47d463['error']||_0x47d463['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1e7ce9['statusText']);}return await _0x1e7ce9['json']();},async 'uploadTaskFiles'(_0x5a2d13,_0x269f5e,_0x595b9f){if(!_0x5a2d13)throw new Error('Task\x20ID\x20is\x20required');if(!_0x269f5e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x595b9f||_0x595b9f['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x3d490c=new FormData();_0x3d490c['append']('targetDir',_0x269f5e);for(const _0x1a84e9 of _0x595b9f){_0x3d490c['append']('files',_0x1a84e9,_0x1a84e9['name']);}const _0x1eae1b=await fetch(API_BASE+'/tasks/'+_0x5a2d13+'/files/upload',{'method':'POST','body':_0x3d490c});if(!_0x1eae1b['ok']){const _0x32d81d=await _0x1eae1b['json']()['catch'](()=>({}));throw new Error(_0x32d81d['error']||_0x32d81d['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1eae1b['statusText']);}return await _0x1eae1b['json']();},async 'deleteFile'(_0xc9ce1f,_0x21c4c5){if(!_0xc9ce1f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x21c4c5)throw new Error('File\x20path\x20is\x20required');const _0x4aaf7f=await fetch(API_BASE+'/tasks/'+_0xc9ce1f+'/files?path='+encodeURIComponent(_0x21c4c5),{'method':'DELETE'});if(!_0x4aaf7f['ok']){const _0x51353b=await _0x4aaf7f['json']()['catch'](()=>({}));throw new Error(_0x51353b['error']||_0x51353b['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4aaf7f['statusText']);}return await _0x4aaf7f['json']();},async 'discardFile'(_0x2902c2,_0x2ac733,_0x46a693){if(!_0x2902c2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2ac733)throw new Error('File\x20path\x20is\x20required');if(!_0x46a693)throw new Error('Repository\x20path\x20is\x20required');const _0x14b83c=await fetch(API_BASE+'/tasks/'+_0x2902c2+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2ac733,'repoPath':_0x46a693})});if(!_0x14b83c['ok']){const _0x2e88d0=await _0x14b83c['json']()['catch'](()=>({}));throw new Error(_0x2e88d0['error']||_0x2e88d0['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x14b83c['statusText']);}return await _0x14b83c['json']();},async 'followUpTask'(_0x3e5740,_0xb3047a={}){if(!_0x3e5740)throw new Error('Task\x20ID\x20is\x20required');if(!_0xb3047a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x5d0d4b,_0x2b426c={};if(_0xb3047a['files']&&_0xb3047a['files']['length']>0x0){const _0x2d8f6f=new FormData();_0x2d8f6f['append']('instructions',_0xb3047a['instructions']);for(const _0x46b74b of _0xb3047a['files']){_0x2d8f6f['append']('attachments',_0x46b74b);}_0x5d0d4b=_0x2d8f6f;}else _0x2b426c['Content-Type']='application/json',_0x5d0d4b=JSON['stringify']({'instructions':_0xb3047a['instructions']});const _0x21b158=await fetch(API_BASE+'/tasks/'+_0x3e5740+'/follow-up',{'method':'POST','headers':_0x2b426c,'body':_0x5d0d4b});if(!_0x21b158['ok']){const _0x486206=await _0x21b158['json']()['catch'](()=>({}));throw new Error(_0x486206['error']||_0x486206['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x21b158['statusText']);}return await _0x21b158['json']();},async 'getTaskRewindPoints'(_0x5539ec){if(!_0x5539ec)throw new Error('Task\x20ID\x20is\x20required');const _0xd08221=await fetch(API_BASE+'/tasks/'+_0x5539ec+'/rewind-points');if(!_0xd08221['ok']){const _0x34aecb=await _0xd08221['json']()['catch'](()=>({}));throw new Error(_0x34aecb['error']||_0x34aecb['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0xd08221['statusText']);}return await _0xd08221['json']();},async 'rewindTask'(_0x466493,_0x3339b4={}){if(!_0x466493)throw new Error('Task\x20ID\x20is\x20required');const _0x326ba3=Number['isInteger'](_0x3339b4['targetFollowUpCount'])?_0x3339b4['targetFollowUpCount']:0x0,_0x3d1184={'targetFollowUpCount':_0x326ba3};typeof _0x3339b4['instructions']==='string'&&_0x3339b4['instructions']['trim']()&&(_0x3d1184['instructions']=_0x3339b4['instructions']['trim']());typeof _0x3339b4['rewindFiles']==='boolean'&&(_0x3d1184['rewindFiles']=_0x3339b4['rewindFiles']);const _0x275045=await fetch(API_BASE+'/tasks/'+_0x466493+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d1184)});if(!_0x275045['ok']){const _0x15c6c2=await _0x275045['json']()['catch'](()=>({}));throw new Error(_0x15c6c2['error']||_0x15c6c2['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x275045['statusText']);}return await _0x275045['json']();},async 'login'(_0x31f8e8,_0x3002b4){const _0xb27d98=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x31f8e8,'password':_0x3002b4})});if(!_0xb27d98['ok']){const _0x16262a=await _0xb27d98['json']();throw new Error(_0x16262a['message']||'Login\x20failed');}return await _0xb27d98['json']();},async 'logout'(){const _0x276f6f=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x276f6f['ok']){const _0x5f3252=await _0x276f6f['json']();throw new Error(_0x5f3252['message']||'Logout\x20failed');}return await _0x276f6f['json']();},async 'getCurrentUser'(){const _0x52027e=await fetch(API_BASE+'/auth/me');if(!_0x52027e['ok'])throw new Error('Not\x20authenticated');const _0x250f4c=await _0x52027e['json']();return _0x250f4c['user'];},async 'getRolesInfo'(){const _0x2dc927=await fetch(API_BASE+'/users/roles');if(!_0x2dc927['ok']){const _0x334e30=await _0x2dc927['json']();throw new Error(_0x334e30['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2dc927['json']();},async 'getUsers'(){const _0x447b25=await fetch(API_BASE+'/users');if(!_0x447b25['ok']){const _0x228e28=await _0x447b25['json']();throw new Error(_0x228e28['message']||'Failed\x20to\x20get\x20users');}return await _0x447b25['json']();},async 'getUser'(_0x1efa7b){const _0x592812=await fetch(API_BASE+'/users/'+_0x1efa7b);if(!_0x592812['ok']){const _0x22090b=await _0x592812['json']();throw new Error(_0x22090b['message']||'Failed\x20to\x20get\x20user');}return await _0x592812['json']();},async 'createUser'(_0x3eef7f){const _0xcd94b0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3eef7f)});if(!_0xcd94b0['ok']){const _0x1a9ec1=await _0xcd94b0['json']();throw new Error(_0x1a9ec1['message']||'Failed\x20to\x20create\x20user');}return await _0xcd94b0['json']();},async 'updateUser'(_0x33607b,_0x42ddd0){const _0x1a4d6c=await fetch(API_BASE+'/users/'+_0x33607b,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42ddd0)});if(!_0x1a4d6c['ok']){const _0x22a5c3=await _0x1a4d6c['json']();throw new Error(_0x22a5c3['message']||'Failed\x20to\x20update\x20user');}return await _0x1a4d6c['json']();},async 'deleteUser'(_0x487040){const _0x49e296=await fetch(API_BASE+'/users/'+_0x487040,{'method':'DELETE'});if(!_0x49e296['ok']){const _0x3c976d=await _0x49e296['json']();throw new Error(_0x3c976d['message']||'Failed\x20to\x20delete\x20user');}return await _0x49e296['json']();},async 'stopAllContainers'(){const _0x5c0ea7=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0xfd1cf1=await _0x5c0ea7['json']()['catch'](()=>({}));if(!_0x5c0ea7['ok'])throw new Error(_0xfd1cf1['message']||_0xfd1cf1['error']||'Failed\x20to\x20stop\x20containers');return _0xfd1cf1;},async 'removeStoppedContainers'(){const _0x3f5b73=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5b78bc=await _0x3f5b73['json']()['catch'](()=>({}));if(!_0x3f5b73['ok'])throw new Error(_0x5b78bc['message']||_0x5b78bc['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5b78bc;},async 'pruneDockerResources'(){const _0x5e7633=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x509712=await _0x5e7633['json']()['catch'](()=>({}));if(!_0x5e7633['ok'])throw new Error(_0x509712['message']||_0x509712['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x509712;},async 'createPasswordToken'(_0xba54d,_0x447103='setup',_0x6944b=![]){const _0x17be97=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0xba54d,'type':_0x447103,'sendEmail':_0x6944b})});if(!_0x17be97['ok']){const _0x7eb970=await _0x17be97['json']();throw new Error(_0x7eb970['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x17be97['json']();},async 'getEmailConfig'(){const _0x5a4c19=await fetch(API_BASE+'/password/email-config');if(!_0x5a4c19['ok']){const _0x20f9f4=await _0x5a4c19['json']();throw new Error(_0x20f9f4['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5a4c19['json']();},async 'updateTaskName'(_0x3365de,_0x429cd7){const _0x9f5401=await fetch(API_BASE+'/tasks/'+_0x3365de,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x429cd7})});if(!_0x9f5401['ok']){const _0xa453e7=await _0x9f5401['json']();throw new Error(_0xa453e7['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x9f5401['json']();},async 'pinTask'(_0x425b76,_0x4721fc,_0xdc3aa2=null){if(!_0x425b76)throw new Error('Task\x20ID\x20is\x20required');const _0xd44710={'pinned':_0x4721fc};_0xdc3aa2&&_0xdc3aa2['length']>0x0&&(_0xd44710['additionalTaskIds']=_0xdc3aa2);const _0x1f52c6=await fetch(API_BASE+'/tasks/'+_0x425b76+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd44710)});if(!_0x1f52c6['ok']){const _0x6bbaa7=await _0x1f52c6['json']();throw new Error(_0x6bbaa7['error']||'Failed\x20to\x20pin\x20task');}return await _0x1f52c6['json']();},async 'setTaskWinner'(_0x39e2d6,_0xfa33e2,_0x5de333=[]){if(!_0x39e2d6)throw new Error('Task\x20ID\x20is\x20required');const _0x38c557=await fetch(API_BASE+'/tasks/'+_0x39e2d6+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0xfa33e2,'siblings':_0x5de333})});if(!_0x38c557['ok']){const _0x381000=await _0x38c557['json']();throw new Error(_0x381000['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x38c557['json']();},async 'setTaskLoser'(_0x1e7f88,_0x2f242d){if(!_0x1e7f88)throw new Error('Task\x20ID\x20is\x20required');const _0x54050c=await fetch(API_BASE+'/tasks/'+_0x1e7f88+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2f242d})});if(!_0x54050c['ok']){const _0x421817=await _0x54050c['json']();throw new Error(_0x421817['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x54050c['json']();},async 'createTaskGroup'(_0x484682){const _0x869b30=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x484682)});if(!_0x869b30['ok']){const _0x1feb91=await _0x869b30['json']();throw new Error(_0x1feb91['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x869b30['json']();},async 'getTaskGroups'(_0x106d31={}){const _0x2f1556=new URLSearchParams();if(_0x106d31['userId'])_0x2f1556['set']('userId',String(_0x106d31['userId']));if(_0x106d31['status'])_0x2f1556['set']('status',String(_0x106d31['status']));if(_0x106d31['limit'])_0x2f1556['set']('limit',String(_0x106d31['limit']));const _0x231ee8=API_BASE+'/tasks/groups'+(_0x2f1556['toString']()?'?'+_0x2f1556['toString']():''),_0x3c7f3b=await fetch(_0x231ee8);if(!_0x3c7f3b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3c7f3b['json']();},async 'getTaskGroup'(_0x27cf30){const _0x53deff=await fetch(API_BASE+'/tasks/groups/'+_0x27cf30);if(!_0x53deff['ok']){const _0x583487=await _0x53deff['json']();throw new Error(_0x583487['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x53deff['json']();},async 'updateTaskGroup'(_0x28d3dd,_0x4d8ba4,_0x130dd3){const _0x484b8c=await fetch(API_BASE+'/tasks/'+_0x28d3dd+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x4d8ba4,'groupIndex':_0x130dd3})});if(!_0x484b8c['ok']){const _0x4931b5=await _0x484b8c['json']();throw new Error(_0x4931b5['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x484b8c['json']();},async 'removeTaskFromGroup'(_0x35bf6d){return this['updateTaskGroup'](_0x35bf6d,null,null);},async 'deleteTaskGroup'(_0x48dabc,_0x155113=![]){const _0x3dc3ed=_0x155113?'?deleteTasks=true':'',_0x167e83=await fetch(API_BASE+'/tasks/groups/'+_0x48dabc+_0x3dc3ed,{'method':'DELETE'});if(!_0x167e83['ok']){const _0x43dcdd=await _0x167e83['json']();throw new Error(_0x43dcdd['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x32e8c1,_0x581fa1){const _0x3c4300=await fetch(API_BASE+'/tasks/groups/'+_0x32e8c1+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x581fa1})});if(!_0x3c4300['ok']){const _0x476d6c=await _0x3c4300['json']();throw new Error(_0x476d6c['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x3c4300['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0xaad829){if(!_0xaad829)throw new Error('Task\x20ID\x20is\x20required');const _0x1fe6ec=await fetch(API_BASE+'/tasks/'+_0xaad829+'/comments');if(!_0x1fe6ec['ok']){const _0x122e90=await _0x1fe6ec['json']()['catch'](()=>({}));throw new Error(_0x122e90['error']||'Failed\x20to\x20get\x20comments');}return await _0x1fe6ec['json']();},async 'addComment'(_0x3d5f3e,_0x477547){if(!_0x3d5f3e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x477547)throw new Error('Comment\x20content\x20is\x20required');const _0x4a84a8=await fetch(API_BASE+'/tasks/'+_0x3d5f3e+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x477547})});if(!_0x4a84a8['ok']){const _0x27f489=await _0x4a84a8['json']()['catch'](()=>({}));throw new Error(_0x27f489['error']||'Failed\x20to\x20add\x20comment');}return await _0x4a84a8['json']();},async 'updateComment'(_0x5d684a,_0x40ec18,_0xc7eb3){if(!_0x5d684a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x40ec18)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xc7eb3)throw new Error('Comment\x20content\x20is\x20required');const _0xa9dfef=await fetch(API_BASE+'/tasks/'+_0x5d684a+'/comments/'+_0x40ec18,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xc7eb3})});if(!_0xa9dfef['ok']){const _0x504f15=await _0xa9dfef['json']()['catch'](()=>({}));throw new Error(_0x504f15['error']||'Failed\x20to\x20update\x20comment');}return await _0xa9dfef['json']();},async 'deleteComment'(_0x4f7044,_0x47dcb1){if(!_0x4f7044)throw new Error('Task\x20ID\x20is\x20required');if(!_0x47dcb1)throw new Error('Comment\x20ID\x20is\x20required');const _0x4aba16=await fetch(API_BASE+'/tasks/'+_0x4f7044+'/comments/'+_0x47dcb1,{'method':'DELETE'});if(!_0x4aba16['ok']){const _0xc0b74f=await _0x4aba16['json']()['catch'](()=>({}));throw new Error(_0xc0b74f['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4aba16['json']();},async 'createObjective'(_0x517e33){const _0x4dc78e={'objective':!![],'name':_0x517e33['name']||'','environment':_0x517e33['environment']||null,'agents':_0x517e33['agents']||[],'branches':_0x517e33['branches']||{},'isPinned':_0x517e33['isPinned']||![],'parentObjectiveId':_0x517e33['parentObjectiveId']||null,'env_vars':_0x517e33['envVars']||{},'parameters':{'instructions':_0x517e33['instructions']||''},'files':_0x517e33['files']||[],'jira':_0x517e33['jira']||null};return this['createTask'](_0x4dc78e);},async 'updateObjective'(_0x103a4b,_0x3d107b,_0x59c92b=[],_0x264377=[]){let _0x47934f,_0x3d3c21={};const _0xd1de9d={..._0x3d107b};_0x264377&&_0x264377['length']>0x0&&(_0xd1de9d['removeAttachments']=_0x264377);if(_0x59c92b&&_0x59c92b['length']>0x0){const _0x457d22=new FormData();for(const [_0x253cb1,_0x579286]of Object['entries'](_0xd1de9d)){if(_0x579286==null)continue;typeof _0x579286==='object'?_0x457d22['append'](_0x253cb1,JSON['stringify'](_0x579286)):_0x457d22['append'](_0x253cb1,String(_0x579286));}for(const _0x440116 of _0x59c92b){_0x457d22['append']('attachments',_0x440116);}_0x47934f=_0x457d22;}else _0x3d3c21['Content-Type']='application/json',_0x47934f=JSON['stringify'](_0xd1de9d);const _0x489dd7=await fetch(API_BASE+'/tasks/'+_0x103a4b,{'method':'PATCH','headers':_0x3d3c21,'body':_0x47934f});if(!_0x489dd7['ok']){const _0x3457f8=await _0x489dd7['json']();throw new Error(_0x3457f8['error']||'Failed\x20to\x20update\x20objective');}return await _0x489dd7['json']();},async 'deleteObjective'(_0x416c57){return this['deleteTask'](_0x416c57);},async 'launchObjective'(_0x20c36e,_0x48807e={}){const _0x504dc3=await fetch(API_BASE+'/tasks/'+_0x20c36e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48807e)});if(!_0x504dc3['ok']){const _0x487756=await _0x504dc3['json']();throw new Error(_0x487756['error']||'Failed\x20to\x20launch\x20objective');}return await _0x504dc3['json']();},async 'getObjectiveAttachments'(_0x302903){return this['getTaskAttachments'](_0x302903);},async 'createJudgeTask'({environment:_0x4bb041,judgeAgent:_0x573596,groupId:_0x4a834c,taskIds:_0x3cc56c,judgeCustomInstructions:_0xb0d9a2,isPinned:_0x4fd9fb}){const _0x828c95=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4bb041,'judgeAgent':_0x573596,'groupId':_0x4a834c,'taskIds':_0x3cc56c,'judgeCustomInstructions':_0xb0d9a2,'isPinned':_0x4fd9fb})});if(!_0x828c95['ok']){const _0x4ce816=await _0x828c95['json']();throw new Error(_0x4ce816['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x828c95['json']();},async 'getJudgeTasks'(_0x468838){const _0xf6844e=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x468838));if(!_0xf6844e['ok']){const _0x268874=await _0xf6844e['json']();throw new Error(_0x268874['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0xf6844e['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x587c76,_0x1dacf9,_0x544d88=''){const _0x1a7799=await fetch(API_BASE+'/tasks/'+_0x587c76+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x1dacf9,'customPreamble':_0x544d88})});if(!_0x1a7799['ok']){const _0x5b16a2=await _0x1a7799['json']();throw new Error(_0x5b16a2['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1a7799['json']();},async 'getJiraConfig'(){const _0x4c4a17=await fetch(API_BASE+'/jira/config');if(!_0x4c4a17['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x4c4a17['json']();},async 'getJiraIssue'(_0x50c386){const _0x2be8e5=await fetch(API_BASE+'/jira/issues/'+_0x50c386);if(!_0x2be8e5['ok']){const _0x141606=await _0x2be8e5['json']()['catch'](()=>({}));throw new Error(_0x141606['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x2be8e5['statusText']);}return await _0x2be8e5['json']();},async 'searchJiraIssues'(_0x445ddb,_0x39155b=0x14){const _0xa7a591=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x445ddb,'maxResults':_0x39155b})});if(!_0xa7a591['ok']){const _0x4c0fe0=await _0xa7a591['json']()['catch'](()=>({}));throw new Error(_0x4c0fe0['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xa7a591['statusText']);}return await _0xa7a591['json']();},async 'postJiraComment'(_0x59a68d,_0x6fef2f){const _0x1bdfe9=await fetch(API_BASE+'/jira/issues/'+_0x59a68d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x6fef2f})});if(!_0x1bdfe9['ok']){const _0x209969=await _0x1bdfe9['json']()['catch'](()=>({}));throw new Error(_0x209969['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1bdfe9['statusText']);}return await _0x1bdfe9['json']();},async 'getJiraComments'(_0x2fc7de){const _0x2ae76b=await fetch(API_BASE+'/jira/issues/'+_0x2fc7de+'/comments');if(!_0x2ae76b['ok']){const _0x5150c8=await _0x2ae76b['json']()['catch'](()=>({}));throw new Error(_0x5150c8['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x2ae76b['statusText']);}return await _0x2ae76b['json']();},async 'promptParameter'({environment:_0x2bd44a,command:_0x737610,parser:parser='json'}){const _0xb1e4d3=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x2bd44a,'command':_0x737610,'parser':parser})});if(!_0xb1e4d3['ok']){const _0x50973b=await _0xb1e4d3['json']()['catch'](()=>({}));throw new Error(_0x50973b['message']||_0x50973b['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xb1e4d3['statusText']);}return await _0xb1e4d3['json']();},async 'promptParameterStream'(_0xd06eeb,_0x45731a){const _0x2ec1ba=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd06eeb)});if(!_0x2ec1ba['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x2ec1ba['statusText']);const _0x4bc463=_0x2ec1ba['body']['getReader'](),_0x5ba90f=new TextDecoder();let _0x337e38='';return new Promise((_0x5ca753,_0x409b3d)=>{const _0x143d15=async()=>{try{const {done:_0x2aa525,value:_0x423447}=await _0x4bc463['read']();if(_0x2aa525)return;_0x337e38+=_0x5ba90f['decode'](_0x423447,{'stream':!![]});const _0x22b12c=_0x337e38['split']('\x0a\x0a');_0x337e38=_0x22b12c['pop']()||'';for(const _0x465135 of _0x22b12c){if(!_0x465135['trim']())continue;const _0x1a1214=_0x465135['split']('\x0a');let _0xf498e9='message',_0x3f4df7='';for(const _0x2862b7 of _0x1a1214){if(_0x2862b7['startsWith']('event:'))_0xf498e9=_0x2862b7['substring'](0x6)['trim']();else _0x2862b7['startsWith']('data:')&&(_0x3f4df7=_0x2862b7['substring'](0x5)['trim']());}if(!_0x3f4df7)continue;try{const _0x22b239=JSON['parse'](_0x3f4df7);if(_0xf498e9==='progress'&&_0x45731a)_0x45731a(_0x22b239['stage'],_0x22b239['message']);else{if(_0xf498e9==='result'){_0x5ca753(_0x22b239);return;}else{if(_0xf498e9==='error'){let _0x34b2aa=_0x22b239['message']||_0x22b239['error']||'Prompt\x20command\x20failed';_0x22b239['rawOutput']&&(_0x34b2aa+='\x0a\x0aRaw\x20output:\x0a'+_0x22b239['rawOutput']);_0x409b3d(new Error(_0x34b2aa));return;}}}}catch(_0x423d64){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x423d64),console['error']('Event\x20type:',_0xf498e9),console['error']('Event\x20data:',_0x3f4df7),console['error']('First\x20200\x20chars:',_0x3f4df7['substring'](0x0,0xc8)),_0x409b3d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x423d64['message']+'\x0a\x0aData:\x20'+_0x3f4df7['substring'](0x0,0x1f4)));return;}}_0x143d15();}catch(_0x1ef6bd){_0x409b3d(_0x1ef6bd);}};_0x143d15();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3c1ff3){const _0x129e92=await fetch(''+API_BASE+_0x3c1ff3);if(!_0x129e92['ok']){const _0x828a86=await _0x129e92['json']()['catch'](()=>({'error':_0x129e92['statusText']})),_0x4921ce=new Error(_0x828a86['error']||_0x828a86['message']||_0x129e92['statusText']);if(_0x828a86['detail']!==undefined)_0x4921ce['detail']=_0x828a86['detail'];throw _0x4921ce;}return await _0x129e92['json']();},async 'post'(_0x50d93c,_0x1a9a19){const _0x5757d6=await fetch(''+API_BASE+_0x50d93c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a9a19)});if(!_0x5757d6['ok']){const _0x52fefd=await _0x5757d6['json']()['catch'](()=>({'error':_0x5757d6['statusText']})),_0x575bf1=new Error(_0x52fefd['error']||_0x52fefd['message']||_0x5757d6['statusText']);if(_0x52fefd['detail']!==undefined)_0x575bf1['detail']=_0x52fefd['detail'];throw _0x575bf1;}return await _0x5757d6['json']();},async 'put'(_0x33da44,_0x44c6f2){const _0x1031f3=await fetch(''+API_BASE+_0x33da44,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x44c6f2)});if(!_0x1031f3['ok']){const _0x1ea500=await _0x1031f3['json']()['catch'](()=>({'error':_0x1031f3['statusText']})),_0x347cfc=new Error(_0x1ea500['error']||_0x1ea500['message']||_0x1031f3['statusText']);if(_0x1ea500['detail']!==undefined)_0x347cfc['detail']=_0x1ea500['detail'];throw _0x347cfc;}return await _0x1031f3['json']();},async 'delete'(_0x230207,_0x1dbdfb){const _0x562f9b={'method':'DELETE'};_0x1dbdfb&&(_0x562f9b['headers']={'Content-Type':'application/json'},_0x562f9b['body']=JSON['stringify'](_0x1dbdfb));const _0x220da4=await fetch(''+API_BASE+_0x230207,_0x562f9b);if(!_0x220da4['ok']){const _0x1e2df4=await _0x220da4['json']()['catch'](()=>({'error':_0x220da4['statusText']})),_0x3bdeda=new Error(_0x1e2df4['error']||_0x1e2df4['message']||_0x220da4['statusText']);if(_0x1e2df4['detail']!==undefined)_0x3bdeda['detail']=_0x1e2df4['detail'];throw _0x3bdeda;}return await _0x220da4['json']();},async 'getSkills'(){const _0x381428=await fetch(API_BASE+'/skills');if(!_0x381428['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x381428['statusText']);return await _0x381428['json']();},async 'getSkill'(_0x4561e0){const _0x148980=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4561e0));if(!_0x148980['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x148980['statusText']);return await _0x148980['json']();},async 'createSkill'(_0x2e63e9){const _0x1d84cf=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e63e9)});if(!_0x1d84cf['ok']){const _0x42d6a9=await _0x1d84cf['json']()['catch'](()=>({'error':_0x1d84cf['statusText']})),_0x44735e=new Error(_0x42d6a9['error']||_0x42d6a9['message']||_0x1d84cf['statusText']);if(_0x42d6a9['detail']!==undefined)_0x44735e['detail']=_0x42d6a9['detail'];throw _0x44735e;}return await _0x1d84cf['json']();},async 'updateSkill'(_0x1b0559,_0x113463){const _0x5b676f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b0559),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x113463)});if(!_0x5b676f['ok']){const _0xbed103=await _0x5b676f['json']()['catch'](()=>({'error':_0x5b676f['statusText']})),_0x3711d0=new Error(_0xbed103['error']||_0xbed103['message']||_0x5b676f['statusText']);if(_0xbed103['detail']!==undefined)_0x3711d0['detail']=_0xbed103['detail'];throw _0x3711d0;}return await _0x5b676f['json']();},async 'deleteSkill'(_0x1d3db6){const _0x3e80db=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1d3db6),{'method':'DELETE'});if(!_0x3e80db['ok']){const _0x22ccf7=await _0x3e80db['json']()['catch'](()=>({'error':_0x3e80db['statusText']})),_0x42ff3f=new Error(_0x22ccf7['error']||_0x22ccf7['message']||_0x3e80db['statusText']);if(_0x22ccf7['detail']!==undefined)_0x42ff3f['detail']=_0x22ccf7['detail'];throw _0x42ff3f;}return await _0x3e80db['json']();},async 'getSkillFile'(_0x522174,_0x105d53){const _0x429475=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x522174)+'/files/'+_0x105d53);if(!_0x429475['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x429475['statusText']);return await _0x429475['json']();},async 'saveSkillFile'(_0x421f79,_0x2e1434,_0x36628e){const _0x4c86d9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x421f79)+'/files/'+_0x2e1434,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x36628e})});if(!_0x4c86d9['ok']){const _0x9b92b2=await _0x4c86d9['json']()['catch'](()=>({'error':_0x4c86d9['statusText']})),_0x4e1433=new Error(_0x9b92b2['error']||_0x9b92b2['message']||_0x4c86d9['statusText']);if(_0x9b92b2['detail']!==undefined)_0x4e1433['detail']=_0x9b92b2['detail'];throw _0x4e1433;}return await _0x4c86d9['json']();},async 'deleteSkillFile'(_0x716e51,_0x1e2c66){const _0x4c2323=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x716e51)+'/files/'+_0x1e2c66,{'method':'DELETE'});if(!_0x4c2323['ok']){const _0x1ac4f2=await _0x4c2323['json']()['catch'](()=>({'error':_0x4c2323['statusText']})),_0x3c356d=new Error(_0x1ac4f2['error']||_0x1ac4f2['message']||_0x4c2323['statusText']);if(_0x1ac4f2['detail']!==undefined)_0x3c356d['detail']=_0x1ac4f2['detail'];throw _0x3c356d;}return await _0x4c2323['json']();},async 'pullSkills'(){const _0x29c70d=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x29c70d['ok']){const _0x2a3fcc=await _0x29c70d['json']()['catch'](()=>({'error':_0x29c70d['statusText']})),_0x264c1a=new Error(_0x2a3fcc['error']||_0x2a3fcc['message']||_0x29c70d['statusText']);if(_0x2a3fcc['detail']!==undefined)_0x264c1a['detail']=_0x2a3fcc['detail'];throw _0x264c1a;}return await _0x29c70d['json']();},async 'commitSkills'(_0x1eea7c,_0x21640a={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x21640a,_0x3ddf1c=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x1eea7c,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x3ddf1c['ok']){const _0x210b1a=await _0x3ddf1c['json']()['catch'](()=>({'error':_0x3ddf1c['statusText']})),_0x13e9f1=new Error(_0x210b1a['error']||_0x210b1a['message']||_0x3ddf1c['statusText']);if(_0x210b1a['detail']!==undefined)_0x13e9f1['detail']=_0x210b1a['detail'];throw _0x13e9f1;}return await _0x3ddf1c['json']();},async 'discardSkillsChanges'(){const _0x26de02=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x26de02['ok']){const _0x4b5f04=await _0x26de02['json']()['catch'](()=>({'error':_0x26de02['statusText']})),_0x3a5045=new Error(_0x4b5f04['error']||_0x4b5f04['message']||_0x26de02['statusText']);if(_0x4b5f04['detail']!==undefined)_0x3a5045['detail']=_0x4b5f04['detail'];throw _0x3a5045;}return await _0x26de02['json']();},async 'getSkillCatalog'(){const _0x347dd3=await fetch(API_BASE+'/external-skills/catalog');if(!_0x347dd3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x347dd3['statusText']);return await _0x347dd3['json']();},async 'getImportedSkillsRegistry'(){const _0x408740=await fetch(API_BASE+'/external-skills/registry');if(!_0x408740['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x408740['statusText']);return await _0x408740['json']();},async 'importCatalogSkill'(_0x278a90){const _0x4f92e9=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x278a90})});if(!_0x4f92e9['ok']){const _0x4d651d=await _0x4f92e9['json']()['catch'](()=>({'error':_0x4f92e9['statusText']})),_0x135470=new Error(_0x4d651d['error']||_0x4d651d['message']||_0x4f92e9['statusText']);if(_0x4d651d['detail']!==undefined)_0x135470['detail']=_0x4d651d['detail'];throw _0x135470;}return await _0x4f92e9['json']();},async 'importSkillFromGit'(_0x52523d,_0x357ed4,_0x39abab='main',_0x3028a6=null){const _0x1503f0=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x52523d,'skillPath':_0x357ed4,'branch':_0x39abab,'skillId':_0x3028a6})});if(!_0x1503f0['ok']){const _0x13742f=await _0x1503f0['json']()['catch'](()=>({'error':_0x1503f0['statusText']})),_0x1db842=new Error(_0x13742f['error']||_0x13742f['message']||_0x1503f0['statusText']);if(_0x13742f['detail']!==undefined)_0x1db842['detail']=_0x13742f['detail'];throw _0x1db842;}return await _0x1503f0['json']();},async 'probeMarketplace'(_0x17e4cf,_0xbe4c3d='main'){const _0x2b6dd9=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x17e4cf,'branch':_0xbe4c3d})});if(!_0x2b6dd9['ok']){const _0x1aca12=await _0x2b6dd9['json']()['catch'](()=>({'error':_0x2b6dd9['statusText']})),_0x3f75ae=new Error(_0x1aca12['error']||_0x1aca12['message']||_0x2b6dd9['statusText']);if(_0x1aca12['detail']!==undefined)_0x3f75ae['detail']=_0x1aca12['detail'];throw _0x3f75ae;}return await _0x2b6dd9['json']();},async 'importMarketplaceBundle'(_0xf5ad2d,_0x1a902d,_0x123118,_0x16a855=null){const _0x54d86f=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xf5ad2d,'branch':_0x1a902d,'bundleId':_0x123118,'selectedSkills':_0x16a855})});if(!_0x54d86f['ok']){const _0x28fb48=await _0x54d86f['json']()['catch'](()=>({'error':_0x54d86f['statusText']})),_0x2ccc57=new Error(_0x28fb48['error']||_0x28fb48['message']||_0x54d86f['statusText']);if(_0x28fb48['detail']!==undefined)_0x2ccc57['detail']=_0x28fb48['detail'];throw _0x2ccc57;}return await _0x54d86f['json']();},async 'importSkillFromFolder'(_0x44f02c,_0x4f4703=null){const _0x27233c=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x44f02c,'skillId':_0x4f4703})});if(!_0x27233c['ok']){const _0x3e6670=await _0x27233c['json']()['catch'](()=>({'error':_0x27233c['statusText']})),_0x1500a6=new Error(_0x3e6670['error']||_0x3e6670['message']||_0x27233c['statusText']);if(_0x3e6670['detail']!==undefined)_0x1500a6['detail']=_0x3e6670['detail'];throw _0x1500a6;}return await _0x27233c['json']();},async 'importSkillFromNpm'(_0x32b281,_0x213333='latest',_0x2c9904=null,_0x3867e4=null){const _0x119e13=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x32b281,'version':_0x213333,'skillId':_0x2c9904,'registry':_0x3867e4})});if(!_0x119e13['ok']){const _0x4ec8be=await _0x119e13['json']()['catch'](()=>({'error':_0x119e13['statusText']})),_0x222af3=new Error(_0x4ec8be['error']||_0x4ec8be['message']||_0x119e13['statusText']);if(_0x4ec8be['detail']!==undefined)_0x222af3['detail']=_0x4ec8be['detail'];throw _0x222af3;}return await _0x119e13['json']();},async 'checkSkillUpdates'(_0x5a5689){const _0x474093=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5a5689)+'/check-updates',{'method':'POST'});if(!_0x474093['ok']){const _0x2e0855=await _0x474093['json']()['catch'](()=>({'error':_0x474093['statusText']})),_0x1e46ac=new Error(_0x2e0855['error']||_0x2e0855['message']||_0x474093['statusText']);if(_0x2e0855['detail']!==undefined)_0x1e46ac['detail']=_0x2e0855['detail'];throw _0x1e46ac;}return await _0x474093['json']();},async 'updateExternalSkill'(_0x2067fd){const _0x329aa7=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2067fd)+'/update',{'method':'POST'});if(!_0x329aa7['ok']){const _0x353afc=await _0x329aa7['json']()['catch'](()=>({'error':_0x329aa7['statusText']})),_0x2c3896=new Error(_0x353afc['error']||_0x353afc['message']||_0x329aa7['statusText']);if(_0x353afc['detail']!==undefined)_0x2c3896['detail']=_0x353afc['detail'];throw _0x2c3896;}return await _0x329aa7['json']();},async 'updateSkillFlags'(_0x5f3a74,_0x405861){const _0x3a89aa=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5f3a74)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x405861})});if(!_0x3a89aa['ok']){const _0x7ea689=await _0x3a89aa['json']()['catch'](()=>({'error':_0x3a89aa['statusText']})),_0x144000=new Error(_0x7ea689['error']||_0x7ea689['message']||_0x3a89aa['statusText']);if(_0x7ea689['detail']!==undefined)_0x144000['detail']=_0x7ea689['detail'];throw _0x144000;}return await _0x3a89aa['json']();},async 'removeFromImportedRegistry'(_0x40957b){const _0x491275=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x40957b)+'/registry',{'method':'DELETE'});if(!_0x491275['ok']){const _0x36a40b=await _0x491275['json']()['catch'](()=>({'error':_0x491275['statusText']})),_0x1e95e2=new Error(_0x36a40b['error']||_0x36a40b['message']||_0x491275['statusText']);if(_0x36a40b['detail']!==undefined)_0x1e95e2['detail']=_0x36a40b['detail'];throw _0x1e95e2;}return await _0x491275['json']();},async 'getTeams'(){const _0x19587d=await fetch(API_BASE+'/teams');if(!_0x19587d['ok']){const _0x389376=await _0x19587d['json']()['catch'](()=>({'message':_0x19587d['statusText']}));throw new Error(_0x389376['message']||'Failed\x20to\x20get\x20teams');}return await _0x19587d['json']();},async 'getTeam'(_0x5cbf98){const _0x1abe12=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5cbf98));if(!_0x1abe12['ok']){const _0x57d0a7=await _0x1abe12['json']()['catch'](()=>({'message':_0x1abe12['statusText']}));throw new Error(_0x57d0a7['message']||'Failed\x20to\x20get\x20team');}return await _0x1abe12['json']();},async 'createTeam'(_0x3a13d5){const _0x6bf09f=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a13d5)});if(!_0x6bf09f['ok']){const _0x41d5a2=await _0x6bf09f['json']()['catch'](()=>({'message':_0x6bf09f['statusText']}));throw new Error(_0x41d5a2['message']||'Failed\x20to\x20create\x20team');}return await _0x6bf09f['json']();},async 'updateTeam'(_0x2b5c36,_0x2d1cc7){const _0x4628a2=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2b5c36),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d1cc7)});if(!_0x4628a2['ok']){const _0x2aeddb=await _0x4628a2['json']()['catch'](()=>({'message':_0x4628a2['statusText']}));throw new Error(_0x2aeddb['message']||'Failed\x20to\x20update\x20team');}return await _0x4628a2['json']();},async 'deleteTeam'(_0x44c701){const _0x1a4009=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x44c701),{'method':'DELETE'});if(!_0x1a4009['ok']){const _0x591f38=await _0x1a4009['json']()['catch'](()=>({'message':_0x1a4009['statusText']}));throw new Error(_0x591f38['message']||'Failed\x20to\x20delete\x20team');}return await _0x1a4009['json']();},async 'addTeamMember'(_0x3700e7,_0x2b849c){const _0x329213=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3700e7)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2b849c})});if(!_0x329213['ok']){const _0x2f8fa3=await _0x329213['json']()['catch'](()=>({'message':_0x329213['statusText']}));throw new Error(_0x2f8fa3['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x329213['json']();},async 'removeTeamMember'(_0x41de8c,_0x7bb887){const _0x4a5971=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x41de8c)+'/members/'+encodeURIComponent(_0x7bb887),{'method':'DELETE'});if(!_0x4a5971['ok']){const _0x306eca=await _0x4a5971['json']()['catch'](()=>({'message':_0x4a5971['statusText']}));throw new Error(_0x306eca['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x4a5971['json']();},async 'getBindings'(_0x54f9b6={}){const _0x5db84f=new URLSearchParams();if(_0x54f9b6['resource_type'])_0x5db84f['set']('resource_type',_0x54f9b6['resource_type']);if(_0x54f9b6['resource_id'])_0x5db84f['set']('resource_id',_0x54f9b6['resource_id']);if(_0x54f9b6['subject_type'])_0x5db84f['set']('subject_type',_0x54f9b6['subject_type']);if(_0x54f9b6['subject_id'])_0x5db84f['set']('subject_id',_0x54f9b6['subject_id']);const _0x4de104=_0x5db84f['toString'](),_0x499c2c=await fetch(API_BASE+'/bindings'+(_0x4de104?'?'+_0x4de104:''));if(!_0x499c2c['ok']){const _0x42142f=await _0x499c2c['json']()['catch'](()=>({'message':_0x499c2c['statusText']}));throw new Error(_0x42142f['message']||'Failed\x20to\x20get\x20bindings');}return await _0x499c2c['json']();},async 'createBinding'(_0x3072d0){const _0x33d64b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3072d0)});if(!_0x33d64b['ok']){const _0x34cd35=await _0x33d64b['json']()['catch'](()=>({'message':_0x33d64b['statusText']}));throw new Error(_0x34cd35['message']||'Failed\x20to\x20create\x20binding');}return await _0x33d64b['json']();},async 'updateBinding'(_0x548e01,_0x43f7ce){const _0x47f39b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x548e01),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x43f7ce)});if(!_0x47f39b['ok']){const _0x40e75d=await _0x47f39b['json']()['catch'](()=>({'message':_0x47f39b['statusText']}));throw new Error(_0x40e75d['message']||'Failed\x20to\x20update\x20binding');}return await _0x47f39b['json']();},async 'deleteBinding'(_0x122143){const _0x275e57=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x122143),{'method':'DELETE'});if(!_0x275e57['ok']){const _0x432566=await _0x275e57['json']()['catch'](()=>({'message':_0x275e57['statusText']}));throw new Error(_0x432566['message']||'Failed\x20to\x20delete\x20binding');}return await _0x275e57['json']();},async 'getRoleDefinitions'(){const _0xbda060=await fetch(API_BASE+'/roles');if(!_0xbda060['ok']){const _0x477e72=await _0xbda060['json']()['catch'](()=>({'message':_0xbda060['statusText']}));throw new Error(_0x477e72['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xbda060['json']();},async 'getRoleDefinition'(_0x16a7a5){const _0x56d69e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x16a7a5));if(!_0x56d69e['ok']){const _0x5ee600=await _0x56d69e['json']()['catch'](()=>({'message':_0x56d69e['statusText']}));throw new Error(_0x5ee600['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x56d69e['json']();},async 'createRoleDefinition'(_0xd221f3){const _0x404ec5=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd221f3)});if(!_0x404ec5['ok']){const _0x13217e=await _0x404ec5['json']()['catch'](()=>({'message':_0x404ec5['statusText']}));throw new Error(_0x13217e['message']||_0x13217e['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x404ec5['json']();},async 'updateRoleDefinition'(_0x358ff4,_0x26f110){const _0x327957=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x358ff4),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26f110)});if(!_0x327957['ok']){const _0x4a5af5=await _0x327957['json']()['catch'](()=>({'message':_0x327957['statusText']}));throw new Error(_0x4a5af5['message']||_0x4a5af5['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x327957['json']();},async 'deleteRoleDefinition'(_0x2f0d57){const _0x5e0383=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2f0d57),{'method':'DELETE'});if(!_0x5e0383['ok']){const _0xb2f665=await _0x5e0383['json']()['catch'](()=>({'message':_0x5e0383['statusText']}));throw new Error(_0xb2f665['message']||_0xb2f665['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x5e0383['json']();},async 'getAvailablePermissions'(){const _0x533d81=await fetch(API_BASE+'/roles/available-permissions');if(!_0x533d81['ok']){const _0x208b40=await _0x533d81['json']()['catch'](()=>({'message':_0x533d81['statusText']}));throw new Error(_0x208b40['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x533d81['json']();},async 'getGitProviderAllowedTeams'(_0x51982c){const _0x5f0b50=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x51982c)+'/allowed-teams');if(!_0x5f0b50['ok']){const _0xe98061=await _0x5f0b50['json']()['catch'](()=>({'message':_0x5f0b50['statusText']}));throw new Error(_0xe98061['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5f0b50['json']();},async 'setGitProviderAllowedTeams'(_0x24ffc9,_0x324a80){const _0x46771f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x24ffc9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x324a80})});if(!_0x46771f['ok']){const _0xd28db4=await _0x46771f['json']()['catch'](()=>({'message':_0x46771f['statusText']}));throw new Error(_0xd28db4['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x46771f['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 _0x344900=toastState['baseBottom'];toastState['toasts']['forEach'](_0x435af2=>{_0x435af2['el']['style']['bottom']=_0x344900+'px';const _0xff551=_0x435af2['el']['offsetHeight']||toastState['defaultHeight'];_0x344900+=_0xff551+toastState['gap'];});});}function removeToastById(_0x3e00cf){const _0x2ef120=toastState['toasts']['findIndex'](_0x28a26e=>_0x28a26e['id']===_0x3e00cf);if(_0x2ef120===-0x1)return;const _0x342d71=toastState['toasts'][_0x2ef120];if(_0x342d71['timeoutId'])clearTimeout(_0x342d71['timeoutId']);_0x342d71['el']['classList']['remove']('show'),setTimeout(()=>_0x342d71['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2ef120,0x1),repositionAllToasts();}function registerToast(_0x39d585){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x39d585),repositionAllToasts(),_0x39d585['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(_0x4947fa){if(_0x4947fa===null||_0x4947fa===undefined)return'';return String(_0x4947fa)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x32a4b6,_0x312aeb){if(_0x32a4b6&&typeof _0x32a4b6==='object'&&!Array['isArray'](_0x32a4b6))return{'code':typeof _0x32a4b6['text']==='string'?_0x32a4b6['text']:'','language':typeof _0x32a4b6['lang']==='string'?_0x32a4b6['lang']:''};return{'code':typeof _0x32a4b6==='string'?_0x32a4b6:'','language':typeof _0x312aeb==='string'?_0x312aeb:''};}function buildMermaidBlock(_0x9a1762){const _0x11f14e=String(_0x9a1762||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x11f14e))+'\x22>'+escapeHtmlValue(_0x11f14e)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x392c34=new marked['Renderer'](),_0x2bc123=_0x392c34['code']['bind'](_0x392c34);return _0x392c34['code']=function(_0x3122a0,_0x492ffe,..._0x2a3c67){const {code:_0x4e62d4,language:_0xb11a33}=getMarkdownCodeBlockPayload(_0x3122a0,_0x492ffe),_0x1b713b=String(_0xb11a33||'')['trim']()['toLowerCase']();if(_0x1b713b==='mermaid')return buildMermaidBlock(_0x4e62d4);const _0x1e4add=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x1e4add&&_0x1b713b)try{const _0x11882f=_0x1e4add['getLanguage'](_0x1b713b)?_0x1b713b:'plaintext',_0x1e11b4=_0x1e4add['highlight'](_0x4e62d4,{'language':_0x11882f})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1b713b)+'\x22>'+_0x1e11b4+'</code></pre>';}catch(_0x1105af){console['error']('Syntax\x20highlighting\x20error:',_0x1105af);}return _0x2bc123(_0x3122a0,_0x492ffe,..._0x2a3c67);},sharedMarkedRenderer=_0x392c34,_0x392c34;}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 _0x41a11a=window['mermaid'];if(!_0x41a11a||typeof _0x41a11a['initialize']!=='function')return _0x41a11a||null;return _0x41a11a['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x41a11a;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x3a3505,_0x2df75b)=>{const _0x11e16e=()=>_0x3a3505(configureMermaidInstance()),_0x176721=()=>{mermaidLoadPromise=null,_0x2df75b(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x531134=document['getElementById'](MERMAID_SCRIPT_ID);!_0x531134&&(_0x531134=document['createElement']('script'),_0x531134['id']=MERMAID_SCRIPT_ID,_0x531134['src']=MERMAID_SCRIPT_SRC,_0x531134['async']=!![],document['head']['appendChild'](_0x531134));if(window['mermaid']){_0x11e16e();return;}_0x531134['addEventListener']('load',_0x11e16e,{'once':!![]}),_0x531134['addEventListener']('error',_0x176721,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4c4d62){const _0x3e2789=_0x4c4d62['getAttribute']('data-mermaid-source');if(!_0x3e2789)return null;let _0x1d6b6a=_0x3e2789;try{_0x1d6b6a=decodeURIComponent(_0x3e2789);}catch{}return _0x4c4d62['textContent']=_0x1d6b6a,_0x4c4d62['removeAttribute']('data-processed'),_0x4c4d62['removeAttribute']('aria-roledescription'),_0x4c4d62['removeAttribute']('role'),_0x4c4d62['removeAttribute']('aria-label'),_0x1d6b6a;}function collectMermaidNodes(_0x23a0c0,_0x50f099){if(!(_0x23a0c0 instanceof Element))return;_0x23a0c0['matches']('.mermaid[data-mermaid-source]')&&_0x50f099['add'](_0x23a0c0),_0x23a0c0['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3ff5d6=>{_0x50f099['add'](_0x3ff5d6);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x1d5580=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xd934c2=>setTimeout(_0xd934c2,0x0);_0x1d5580(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x3dfaf7=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x3dfaf7);});});}function queueMermaidRender(_0x5d853e){const _0x337187=new Set();_0x5d853e instanceof Document||_0x5d853e instanceof DocumentFragment?_0x5d853e['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5da542=>_0x337187['add'](_0x5da542)):collectMermaidNodes(_0x5d853e,_0x337187);if(_0x337187['size']===0x0)return;_0x337187['forEach'](_0x526be8=>pendingMermaidNodes['add'](_0x526be8)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x106ac7=Array['from'](pendingMermaidNodes)['filter'](_0x38d3b7=>_0x38d3b7['isConnected']);pendingMermaidNodes['clear']();if(_0x106ac7['length']===0x0)return;const _0x1b449f=await loadMermaid();if(!_0x1b449f)return;configureMermaidInstance();const _0x322123=getMermaidTheme();for(const _0xad8470 of _0x106ac7){const _0x862247=_0xad8470['getAttribute']('data-mermaid-source');if(!_0x862247)continue;const _0x5a9384=_0xad8470['getAttribute']('data-processed')==='true';if(_0x5a9384&&_0xad8470['dataset']['mermaidTheme']===_0x322123)continue;restoreMermaidSource(_0xad8470);try{if(typeof _0x1b449f['run']==='function')await _0x1b449f['run']({'nodes':[_0xad8470]});else typeof _0x1b449f['init']==='function'&&_0x1b449f['init'](undefined,[_0xad8470]);_0xad8470['dataset']['mermaidTheme']=_0x322123,delete _0xad8470['dataset']['mermaidError'];}catch(_0x1cf238){console['error']('Mermaid\x20render\x20failed:',_0x1cf238),restoreMermaidSource(_0xad8470),_0xad8470['dataset']['mermaidError']='true',delete _0xad8470['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0xac5186=>{_0xac5186['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0xac5186);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x12ea9d=>{_0x12ea9d['forEach'](_0x353b10=>{_0x353b10['addedNodes']['forEach'](_0x169b33=>{_0x169b33['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x169b33);});});}),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'(_0x9efbbe){const _0x1693a6=new Date(_0x9efbbe),_0x4fe98b=new Date(),_0xe179d=_0x4fe98b-_0x1693a6,_0x4f4925=Math['floor'](_0xe179d/0x3e8),_0x56b7fe=Math['floor'](_0x4f4925/0x3c),_0x572de9=Math['floor'](_0x56b7fe/0x3c),_0x1c39c3=Math['floor'](_0x572de9/0x18);if(_0x4f4925<0x3c)return'now';if(_0x56b7fe<0x3c)return _0x56b7fe+'m\x20ago';if(_0x572de9<0x18)return _0x572de9+'h\x20ago';return _0x1c39c3+'d\x20ago';},'getStatusIcon'(_0x389617){switch(_0x389617){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3fbe71){switch(_0x3fbe71){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'(_0x46585d,_0x352c7e=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x1ba749={};_0x1ba749['text/plain']=new Blob([_0x46585d],{'type':'text/plain'});_0x352c7e&&(_0x1ba749['text/html']=new Blob([_0x352c7e],{'type':'text/html'}));const _0x5ea660=new ClipboardItem(_0x1ba749);return await navigator['clipboard']['write']([_0x5ea660]),!![];}catch(_0xc80507){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0xc80507);}try{const _0xcc013f=_0x2a3032=>{_0x2a3032['preventDefault'](),_0x2a3032['clipboardData']['setData']('text/plain',_0x46585d),_0x352c7e&&_0x2a3032['clipboardData']['setData']('text/html',_0x352c7e);};document['addEventListener']('copy',_0xcc013f);const _0x26726f=document['execCommand']('copy');document['removeEventListener']('copy',_0xcc013f);if(_0x26726f)return!![];}catch(_0x56c056){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x56c056);}try{const _0x50de16=document['createElement']('textarea');_0x50de16['value']=_0x46585d,_0x50de16['style']['position']='fixed',_0x50de16['style']['opacity']='0',_0x50de16['style']['pointerEvents']='none',document['body']['appendChild'](_0x50de16),_0x50de16['select']();const _0xcdf81f=document['execCommand']('copy');return document['body']['removeChild'](_0x50de16),_0xcdf81f;}catch(_0x372baf){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x372baf),![];}},'showToast'(_0x3750f5,_0x26177c='info'){const _0x51a9be=getNextToastId(),_0x5d8d73=document['createElement']('div');_0x5d8d73['className']='toast\x20toast-'+_0x26177c,_0x5d8d73['textContent']=_0x3750f5,_0x5d8d73['dataset']['toastId']=_0x51a9be,document['body']['appendChild'](_0x5d8d73);const _0x4026ed=_0x26177c==='error'?0x2710:0xbb8,_0x17ce37=setTimeout(()=>{removeToastById(_0x51a9be);},_0x4026ed),_0x3970f0={'id':_0x51a9be,'el':_0x5d8d73,'timeoutId':_0x17ce37};return registerToast(_0x3970f0),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x5d8d73['classList']['add']('show');});}),_0x51a9be;},'showError'(_0x291f79){console['error'](_0x291f79);const _0x412c04=typeof _0x291f79==='string'?_0x291f79:_0x291f79['message']||'An\x20error\x20occurred';this['showToast'](_0x412c04,'error');},'showSuccess'(_0x45888a){this['showToast'](_0x45888a,'success');},'capitalize'(_0xeab409){if(!_0xeab409)return'';return _0xeab409['charAt'](0x0)['toUpperCase']()+_0xeab409['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x40496d){return escapeHtmlValue(_0x40496d);},'ansiToHtml'(_0x2d3769){if(_0x2d3769===null||_0x2d3769===undefined)return'';let _0x198f71=this['escapeHtml'](_0x2d3769);const _0xf1dc52={'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'},_0x2da1c3={'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 _0x5d9ac9=0x0;return _0x198f71=_0x198f71['replace'](/\x1b\[([0-9;]*)m/g,(_0x3c020d,_0x3c91bd)=>{if(!_0x3c91bd||_0x3c91bd==='0'){const _0x476314='</span>'['repeat'](_0x5d9ac9);return _0x5d9ac9=0x0,_0x476314;}const _0x4afc18=_0x3c91bd['split'](';'),_0x38c830=[];for(const _0xe6b293 of _0x4afc18){if(_0xe6b293==='1')_0x38c830['push']('font-weight:bold');else{if(_0xe6b293==='2')_0x38c830['push']('opacity:0.7');else{if(_0xe6b293==='3')_0x38c830['push']('font-style:italic');else{if(_0xe6b293==='4')_0x38c830['push']('text-decoration:underline');else{if(_0xe6b293==='9')_0x38c830['push']('text-decoration:line-through');else{if(_0xf1dc52[_0xe6b293])_0x38c830['push']('color:'+_0xf1dc52[_0xe6b293]);else{if(_0x2da1c3[_0xe6b293])_0x38c830['push']('background-color:'+_0x2da1c3[_0xe6b293]);}}}}}}}if(_0x38c830['length']>0x0)return _0x5d9ac9++,'<span\x20style=\x22'+_0x38c830['join'](';')+'\x22>';return'';}),_0x198f71+='</span>'['repeat'](_0x5d9ac9),_0x198f71=_0x198f71['replace'](/\\u001b\[([0-9;]*)m/g,(_0x13c475,_0x156547)=>{if(!_0x156547||_0x156547==='0')return'';const _0x35d051=_0x156547['split'](';'),_0x4c7566=[];for(const _0x1ec952 of _0x35d051){if(_0x1ec952==='1')_0x4c7566['push']('font-weight:bold');else{if(_0xf1dc52[_0x1ec952])_0x4c7566['push']('color:'+_0xf1dc52[_0x1ec952]);else{if(_0x2da1c3[_0x1ec952])_0x4c7566['push']('background-color:'+_0x2da1c3[_0x1ec952]);}}}if(_0x4c7566['length']>0x0)return'<span\x20style=\x22'+_0x4c7566['join'](';')+'\x22>';return'';}),_0x198f71;},'showModal'({title:_0x1cbafc,content:_0x42236d,buttons:buttons=[]}){const _0x5a5250='\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'](_0x1cbafc)+'</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'+_0x42236d+'\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']((_0x297e80,_0x58e90f)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x297e80['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x58e90f+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x297e80['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',_0x45b195=document['createElement']('div');_0x45b195['id']='utils-modal',_0x45b195['className']='modal',_0x45b195['innerHTML']=_0x5a5250,document['body']['appendChild'](_0x45b195);const _0x350202=document['getElementById']('utils-modal-close');_0x350202&&_0x350202['addEventListener']('click',()=>this['hideModal']());const _0x380eed=_0x45b195['querySelectorAll']('[data-btn-index]');_0x380eed['forEach'](_0x40396d=>{const _0x1a4181=parseInt(_0x40396d['dataset']['btnIndex']);buttons[_0x1a4181]?.['onClick']&&_0x40396d['addEventListener']('click',buttons[_0x1a4181]['onClick']);});const _0x524598=document['getElementById']('utils-modal-overlay');_0x524598&&_0x524598['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x512a4d=document['getElementById']('utils-modal');_0x512a4d&&_0x512a4d['remove']();},'parseKeyValuePairs'(_0x1a8d09){const _0x35a481={};if(!_0x1a8d09)return _0x35a481;return _0x1a8d09['split'](/\r?\n/)['map'](_0x5d515a=>_0x5d515a['trim']())['filter'](Boolean)['forEach'](_0x45c2a6=>{const _0x16e7bf=_0x45c2a6['indexOf']('=');if(_0x16e7bf>0x0){const _0x5cb69b=_0x45c2a6['slice'](0x0,_0x16e7bf)['trim'](),_0x4d0378=_0x45c2a6['slice'](_0x16e7bf+0x1)['trim']();if(_0x5cb69b)_0x35a481[_0x5cb69b]=_0x4d0378;}}),_0x35a481;},'debounce'(_0x3c7a1a,_0x4aaa7b=0xfa){let _0x2c6291=null;return(..._0x355a7c)=>{clearTimeout(_0x2c6291),_0x2c6291=setTimeout(()=>_0x3c7a1a['apply'](this,_0x355a7c),_0x4aaa7b);};},'formatTimestamp'(_0x51d0b6){if(!_0x51d0b6)return'N/A';const _0x329a86=new Date(_0x51d0b6);return _0x329a86['toLocaleDateString']()+'\x20'+_0x329a86['toLocaleTimeString']();},'getQueryParams'(){const _0x51942b=new URLSearchParams(window['location']['search']),_0x5338b1={};for(const [_0x4dfb1a,_0xdcb44a]of _0x51942b){_0x5338b1[_0x4dfb1a]=_0xdcb44a;}return _0x5338b1;},'formatDuration'(_0x3ff272,_0x21401b){if(!_0x3ff272)return'N/A';const _0x575a5f=new Date(_0x3ff272),_0x26ef1b=_0x21401b?new Date(_0x21401b):new Date(),_0x2fd6cc=_0x26ef1b-_0x575a5f;if(_0x2fd6cc<0x0)return'0s';const _0x285684=Math['floor'](_0x2fd6cc/0x3e8),_0x239c53=Math['floor'](_0x285684/0x3c),_0x120c91=Math['floor'](_0x239c53/0x3c),_0x12ea7f=Math['floor'](_0x120c91/0x18);if(_0x285684<0x3c)return _0x285684+'s';if(_0x239c53<0x3c)return _0x239c53+'m\x20'+_0x285684%0x3c+'s';if(_0x120c91<0x18)return _0x120c91+'h\x20'+_0x239c53%0x3c+'m\x20'+_0x285684%0x3c+'s';return _0x12ea7f+'d\x20'+_0x120c91%0x18+'h\x20'+_0x239c53%0x3c+'m';},'renderMarkdown'(_0x580345,_0x2a92ae={}){if(!_0x580345)return'';_0x580345=this['rewriteAttachmentLinks'](_0x580345,_0x2a92ae),_0x580345=this['rewriteColorSyntax'](_0x580345);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x580345,_0x2a92ae);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x580345);}catch(_0x3618c0){return console['error']('Markdown\x20parsing\x20error:',_0x3618c0),this['renderMarkdownFallback'](_0x580345,_0x2a92ae);}},'rewriteAttachmentLinks'(_0x37d6d8,_0x3937f4={}){const _0x12f12c=typeof _0x3937f4['resolveAttachmentUrl']==='function'?_0x3937f4['resolveAttachmentUrl']:_0x3937f4['taskId']?_0x103636=>API_BASE+'/tasks/'+_0x3937f4['taskId']+'/attachments/'+encodeURIComponent(_0x103636):null;if(!_0x12f12c)return _0x37d6d8;return String(_0x37d6d8)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x242280,_0x9dcf5e)=>{const _0x327920=String(_0x9dcf5e||'')['trim']();if(!_0x327920)return _0x242280;let _0x213611=_0x327920;try{_0x213611=decodeURIComponent(_0x327920);}catch{}const _0x4e357e=_0x12f12c(_0x213611);if(!_0x4e357e)return _0x242280;return']('+_0x4e357e+')';});},'rewriteColorSyntax'(_0x45c142){if(!_0x45c142)return _0x45c142;return String(_0x45c142)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x38716d,_0x23be16,_0x1fec9c)=>{const _0x323753=this['rewriteColorSyntax'](_0x1fec9c);return'<span\x20style=\x22color:\x20'+_0x23be16+'\x22>'+_0x323753+'</span>';});},'renderMarkdownFallback'(_0x2c0860,_0x47fc4c={}){if(!_0x2c0860)return'';_0x2c0860=_0x2c0860['replace'](/\r\n/g,'\x0a'),_0x2c0860=_0x2c0860['replace'](/\r/g,'\x0a'),_0x2c0860=this['rewriteAttachmentLinks'](_0x2c0860,_0x47fc4c);let _0x3bdcfb=this['escapeHtml'](_0x2c0860);return _0x3bdcfb=_0x3bdcfb['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3bdcfb=_0x3bdcfb['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3bdcfb=_0x3bdcfb['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3bdcfb=_0x3bdcfb['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3bdcfb=_0x3bdcfb['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3bdcfb=_0x3bdcfb['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3bdcfb=_0x3bdcfb['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3bdcfb=_0x3bdcfb['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3bdcfb=_0x3bdcfb['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3bdcfb=_0x3bdcfb['replace'](/\n\n/g,'</p><p>'),_0x3bdcfb=_0x3bdcfb['replace'](/\n/g,'<br>'),'<p>'+_0x3bdcfb+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x3512d4=new Uint8Array(0x10);crypto['getRandomValues'](_0x3512d4),_0x3512d4[0x6]=_0x3512d4[0x6]&0xf|0x40,_0x3512d4[0x8]=_0x3512d4[0x8]&0x3f|0x80;const _0x211beb=Array['from'](_0x3512d4,_0x3a610d=>_0x3a610d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x211beb['slice'](0x0,0x8)+'-'+_0x211beb['slice'](0x8,0xc)+'-'+_0x211beb['slice'](0xc,0x10)+'-'+_0x211beb['slice'](0x10,0x14)+'-'+_0x211beb['slice'](0x14);}};export class CustomSelect{constructor(_0x1ad0b4,_0x4297e8={}){this['nativeSelect']=_0x1ad0b4,this['options']=_0x4297e8,this['isOpen']=![],this['selectedValue']=_0x1ad0b4['value']||'',this['searchable']=_0x4297e8['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0xd9cee5=document['createElement']('div');_0xd9cee5['className']='custom-select';const _0x5152ad=document['createElement']('div');_0x5152ad['className']='custom-select-trigger',_0x5152ad['setAttribute']('tabindex','0'),_0x5152ad['setAttribute']('role','button'),_0x5152ad['setAttribute']('aria-haspopup','listbox');const _0x267518=document['createElement']('span');_0x267518['className']='custom-select-trigger-text';const _0x24bca4=document['createElement']('span');_0x24bca4['className']='custom-select-arrow',_0x24bca4['textContent']='▼',_0x5152ad['appendChild'](_0x267518),_0x5152ad['appendChild'](_0x24bca4);const _0x1ac0b4=document['createElement']('div');_0x1ac0b4['className']='custom-select-dropdown',_0x1ac0b4['setAttribute']('role','listbox');if(this['searchable']){const _0x7f1796=document['createElement']('div');_0x7f1796['className']='custom-select-search';const _0x24afa0=document['createElement']('input');_0x24afa0['type']='text',_0x24afa0['className']='custom-select-search-input',_0x24afa0['placeholder']='Type\x20to\x20search...',_0x24afa0['setAttribute']('aria-label','Search\x20options'),_0x24afa0['addEventListener']('input',_0x936666=>{this['searchQuery']=_0x936666['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x24afa0['addEventListener']('keydown',_0x242fb5=>{if(_0x242fb5['key']==='Escape')_0x242fb5['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x242fb5['key']==='Enter'){_0x242fb5['preventDefault'](),_0x242fb5['stopPropagation']();const _0x1da4ab=_0x1ac0b4['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1da4ab){const _0x3d054e=_0x1da4ab['getAttribute']('data-value');this['select'](_0x3d054e);}}}}),_0x7f1796['appendChild'](_0x24afa0),_0x1ac0b4['appendChild'](_0x7f1796),this['searchInput']=_0x24afa0;}const _0x28c34b=document['createElement']('div');_0x28c34b['className']='custom-select-options',_0x1ac0b4['appendChild'](_0x28c34b),_0xd9cee5['appendChild'](_0x5152ad),_0xd9cee5['appendChild'](_0x1ac0b4),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0xd9cee5,this['nativeSelect']),this['wrapper']=_0xd9cee5,this['trigger']=_0x5152ad,this['triggerText']=_0x267518,this['dropdown']=_0x1ac0b4,this['optionsContainer']=_0x28c34b,_0x5152ad['addEventListener']('click',()=>this['toggle']()),_0x5152ad['addEventListener']('keydown',_0xbfc325=>this['handleKeydown'](_0xbfc325)),document['addEventListener']('click',_0x358a54=>{!_0xd9cee5['contains'](_0x358a54['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x25f20d=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x25f20d['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x44b919=new MutationObserver(()=>{this['updateDisabledState']();});_0x44b919['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x42c82f=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x42c82f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3ed07c=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3ed07c),this['trigger']['setAttribute']('aria-disabled',_0x3ed07c?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3ed07c?'-1':'0'),_0x3ed07c&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2fffe6=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x8d71cf=_0x2fffe6['filter'](_0x5e36f0=>!_0x5e36f0['disabled']&&!_0x5e36f0['hidden']);_0x2fffe6['forEach']((_0x395043,_0x24341a)=>{const _0x2fd42d=document['createElement']('div');_0x2fd42d['className']='custom-select-option',_0x2fd42d['textContent']=_0x395043['textContent'],_0x2fd42d['setAttribute']('data-value',_0x395043['value']),_0x2fd42d['setAttribute']('data-index',_0x24341a),_0x2fd42d['setAttribute']('role','option'),_0x395043['disabled']?_0x2fd42d['classList']['add']('disabled'):_0x2fd42d['addEventListener']('click',()=>this['select'](_0x395043['value'])),_0x395043['value']===this['selectedValue']&&_0x2fd42d['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2fd42d),this['allOptions']['push']({'element':_0x2fd42d,'text':_0x395043['textContent']['toLowerCase'](),'value':_0x395043['value'],'disabled':_0x395043['disabled']});});if(this['searchable']&&this['searchInput']){const _0x54af67=this['searchInput']['parentElement'];_0x8d71cf['length']>0x3?_0x54af67['style']['display']='':_0x54af67['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x26b7d5=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x3c7204=>{if(!_0x26b7d5||_0x3c7204['disabled'])_0x3c7204['element']['style']['display']='';else{const _0x3ea67f=_0x3c7204['text']['includes'](_0x26b7d5);_0x3c7204['element']['style']['display']=_0x3ea67f?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x43f169){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x43f169,this['nativeSelect']['value']=_0x43f169;const _0x554a03=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x554a03),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x359b60=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x359b60&&(this['triggerText']['textContent']=_0x359b60['textContent'],_0x359b60['disabled']||_0x359b60['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x207989=>{_0x207989['getAttribute']('data-value')===this['selectedValue']?_0x207989['classList']['add']('selected'):_0x207989['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 _0x109a3d=window['getComputedStyle'](this['dropdown']);if(_0x109a3d['position']==='fixed'){const _0x130ab7=this['trigger']['getBoundingClientRect'](),_0xe7e0b3=parseInt(_0x109a3d['maxHeight'])||0xc8,_0x5368db=window['innerHeight'],_0x3e4df2=_0x5368db-_0x130ab7['bottom'],_0x105899=_0x130ab7['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x4e3c27;_0x3e4df2<_0xe7e0b3&&_0x105899>_0x3e4df2?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x5368db-_0x130ab7['top']+'px',_0x4e3c27=Math['min'](_0xe7e0b3,_0x105899-0xa),this['dropdown']['style']['maxHeight']=_0x4e3c27+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x130ab7['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x4e3c27=Math['min'](_0xe7e0b3,_0x3e4df2-0xa),this['dropdown']['style']['maxHeight']=_0x4e3c27+'px');if(this['optionsContainer']){let _0x5ea2e2=_0x4e3c27;if(this['searchInput']){const _0x528be5=this['searchInput']['parentElement'];_0x528be5&&(_0x5ea2e2-=_0x528be5['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5ea2e2)+'px';}this['dropdown']['style']['left']=_0x130ab7['left']+'px',this['dropdown']['style']['width']=_0x130ab7['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x23152a=this['searchInput']['parentElement'];_0x23152a&&_0x23152a['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'](_0x46eba2){if(this['nativeSelect']['disabled'])return;if(_0x46eba2['key']==='Enter'||_0x46eba2['key']==='\x20')_0x46eba2['preventDefault'](),this['toggle']();else _0x46eba2['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5b5b80='\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',_0x5b5b80),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0xf00283=document['getElementById']('confirm-dialog-close'),_0x3d6fae=document['getElementById']('confirm-dialog-cancel'),_0x44dc88=document['getElementById']('confirm-dialog-confirm'),_0x403f4e=this['_modal']['querySelector']('.modal-overlay');_0xf00283['addEventListener']('click',()=>this['_resolve'](![])),_0x3d6fae['addEventListener']('click',()=>this['_resolve'](![])),_0x44dc88['addEventListener']('click',()=>this['_resolve'](!![])),_0x403f4e['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x885363=>{if(_0x885363['key']==='Escape')_0x885363['preventDefault'](),this['_resolve'](![]);else _0x885363['key']==='Enter'&&(_0x885363['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x289e6b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x16df9a=>{this['_resolvePromise']=_0x16df9a,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x289e6b;const _0x30066c=document['getElementById']('confirm-dialog-cancel'),_0x53780f=document['getElementById']('confirm-dialog-confirm');_0x30066c['textContent']=cancelText,_0x53780f['textContent']=confirmText,_0x53780f['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x53780f['focus']();});},'_resolve'(_0x547c3d){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x547c3d),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1a3f87,_0x3b0aa3={}){this['container']=_0x1a3f87,this['options']={'placeholder':_0x3b0aa3['placeholder']||'Type\x20to\x20search...','maxItems':_0x3b0aa3['maxItems']||0x64,'loadItems':_0x3b0aa3['loadItems']||(async()=>[]),'renderItem':_0x3b0aa3['renderItem']||(_0x30beef=>({'primary':String(_0x30beef),'secondary':''})),'onSelect':_0x3b0aa3['onSelect']||(()=>{}),'filterItems':_0x3b0aa3['filterItems']||null,'getItemValue':_0x3b0aa3['getItemValue']||(_0x250957=>_0x250957),'sortItems':_0x3b0aa3['sortItems']||null,'debounceMs':_0x3b0aa3['debounceMs']||0xc8,'minCharsForSearch':_0x3b0aa3['minCharsForSearch']||0x0,'emptyMessage':_0x3b0aa3['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x3b0aa3['loadingMessage']||'Loading...','preload':_0x3b0aa3['preload']!==![],'searchMode':_0x3b0aa3['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',_0x17a6e8=>this['onBlur'](_0x17a6e8)),this['input']['addEventListener']('input',_0x214723=>this['onInput'](_0x214723)),this['input']['addEventListener']('keydown',_0x2e8cdd=>this['onKeydown'](_0x2e8cdd)),this['clearBtn']['addEventListener']('mousedown',_0x516f03=>{_0x516f03['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x25f750=>{_0x25f750['preventDefault']();}),document['addEventListener']('click',_0x487260=>{!this['wrapper']['contains'](_0x487260['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(_0x7964ab){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x7964ab);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x37c759){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x5cd13c){const _0x207a8b=_0x5cd13c['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x207a8b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x207a8b):this['loadAndShow'](_0x207a8b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x4cf526){switch(_0x4cf526['key']){case'ArrowDown':_0x4cf526['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x4cf526['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x4cf526['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x4cf526['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x37dc99){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x32dd83=this['selectedIndex']+_0x37dc99;if(_0x32dd83>=0x0&&_0x32dd83<this['filteredItems']['length']){this['selectedIndex']=_0x32dd83,this['updateSelectionHighlight']();const _0x1de69b=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x1de69b[this['selectedIndex']]&&_0x1de69b[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x2c684a=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2c684a['forEach']((_0x5aeaa5,_0x109dee)=>{_0x5aeaa5['classList']['toggle']('keyboard-selected',_0x109dee===this['selectedIndex']);});}async['loadAndShow'](_0x245ecb){this['showLoading']();try{const _0x38cb58=await this['options']['loadItems'](_0x245ecb);if(this['options']['searchMode']==='server'){let _0x28bba4=_0x38cb58;this['options']['sortItems']&&(_0x28bba4=this['options']['sortItems']([..._0x38cb58]));this['filteredItems']=_0x28bba4;const _0x32f56b=this['filteredItems']['length']>=this['options']['maxItems'];_0x32f56b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x32f56b),this['open']();}else this['allItems']=_0x38cb58,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x245ecb);}catch(_0x72ec37){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x72ec37),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x558629){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x558629):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x5f06df=this['filteredItems']['length']>=this['options']['maxItems'];_0x5f06df&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5f06df),this['open']();}['renderItems'](_0x5cb050){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']((_0x3607bb,_0x55cbc8)=>{const _0x4df8fd=document['createElement']('div');_0x4df8fd['className']='autocomplete-select-item',_0x4df8fd['setAttribute']('role','option'),_0x4df8fd['setAttribute']('data-index',_0x55cbc8);const _0x64c304=this['options']['renderItem'](_0x3607bb);let _0x3591b2='';_0x64c304['icon']&&(_0x3591b2='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x64c304['iconClass']||'')+'\x22>'+_0x64c304['icon']+'</span>'),_0x4df8fd['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3591b2+'\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'](_0x64c304['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x64c304['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x64c304['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x4df8fd['addEventListener']('click',()=>{this['selectItem'](_0x3607bb);}),_0x4df8fd['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x55cbc8,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x4df8fd);}),_0x5cb050?(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'](_0x5f11c8){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x5f11c8)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x3c240a){this['selectedItem']=_0x3c240a;const _0x8ed926=this['options']['renderItem'](_0x3c240a);this['input']['value']=_0x8ed926['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x3c240a);}['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'](_0xd08b82){if(_0xd08b82){this['selectedItem']=_0xd08b82;const _0x2e4645=this['options']['renderItem'](_0xd08b82);this['input']['value']=_0x2e4645['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x582cf8){this['allItems']=_0x582cf8,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'](_0x225dbf){this['input']['placeholder']=_0x225dbf;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0xeaba9e=null){const _0x4f5c0c=document['getElementById']('admin-menu-container'),_0x40b87a=document['getElementById']('admin-menu-btn'),_0x193114=document['getElementById']('admin-menu');if(!_0x4f5c0c||!_0x40b87a||!_0x193114)return;try{!_0xeaba9e&&(_0xeaba9e=await API['getCurrentUser']());if(_0xeaba9e){const _0x175197=window['Permissions'],_0x2d99d8=_0x175197['hasServerPermission'](_0xeaba9e,'*')||_0x175197['hasEnvPermission'](_0xeaba9e,'environments:manage')||_0x175197['hasServerPermission'](_0xeaba9e,'users:create')||_0x175197['hasTeamPermission'](_0xeaba9e,'teams:manage')||_0x175197['hasEnvPermission'](_0xeaba9e,'environments:view_details');if(!_0x2d99d8)return;_0x4f5c0c['hidden']=![];if(!_0x175197['hasServerPermission'](_0xeaba9e,'*')){const _0x1fa734=_0x193114['querySelectorAll']('.admin-menu-item');_0x1fa734['forEach'](_0x2f7e03=>{const _0x1c21d5=_0x2f7e03['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1c21d5==='Users'&&!_0x175197['hasServerPermission'](_0xeaba9e,'users:create')&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Skills'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Server\x20Settings'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Server\x20Health'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Git\x20History'&&(_0x2f7e03['hidden']=!![]),_0x1c21d5==='Roles'&&(_0x2f7e03['hidden']=!![]);});}_0x40b87a['addEventListener']('click',_0x2728ed=>{_0x2728ed['stopPropagation']();const _0x469deb=document['getElementById']('actions-menu');if(_0x469deb)_0x469deb['hidden']=!![];_0x193114['hidden']=!_0x193114['hidden'];}),document['addEventListener']('click',_0x242925=>{!_0x193114['hidden']&&!_0x40b87a['contains'](_0x242925['target'])&&!_0x193114['contains'](_0x242925['target'])&&(_0x193114['hidden']=!![]);}),document['addEventListener']('keydown',_0x186167=>{_0x186167['key']==='Escape'&&!_0x193114['hidden']&&(_0x193114['hidden']=!![]);});const _0x424684=document['getElementById']('server-health-btn');_0x424684&&_0x424684['addEventListener']('click',async()=>{_0x193114['hidden']=!![];const {openServerHealthModal:_0x3cface}=await import('./server-health.js');_0x3cface();});}}catch(_0x5834bb){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5834bb['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 _0x16a5bb=window['location']['pathname'],_0x1166bd=_0x16a5bb['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1166bd)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1166bd[0x1]),_0x1166bd[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0xdab3ea={}){const _0x57cd7f=new URLSearchParams();_0xdab3ea['userId']&&_0x57cd7f['set']('userId',String(_0xdab3ea['userId']));_0xdab3ea['automation']&&_0x57cd7f['set']('automation',String(_0xdab3ea['automation']));const _0x2b6e9b=API_BASE+'/tasks/stats'+(_0x57cd7f['toString']()?'?'+_0x57cd7f['toString']():''),_0x4a0fb3=await fetch(_0x2b6e9b);if(!_0x4a0fb3['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4a0fb3['statusText']);return await _0x4a0fb3['json']();},async 'getTasks'(_0x4ba6d4={}){const _0x10309b=new URLSearchParams();_0x4ba6d4['status']&&_0x10309b['set']('status',String(_0x4ba6d4['status']));_0x4ba6d4['environment']&&_0x10309b['set']('environment',String(_0x4ba6d4['environment']));_0x4ba6d4['automation']&&_0x10309b['set']('automation',String(_0x4ba6d4['automation']));if(_0x4ba6d4['include']){const _0x2487d4=Array['isArray'](_0x4ba6d4['include'])?_0x4ba6d4['include']['join'](','):String(_0x4ba6d4['include']);_0x2487d4&&_0x10309b['set']('include',_0x2487d4);}_0x4ba6d4['filter']&&_0x10309b['set']('filter',String(_0x4ba6d4['filter']));_0x4ba6d4['page']&&_0x10309b['set']('page',String(_0x4ba6d4['page']));_0x4ba6d4['limit']&&_0x10309b['set']('limit',String(_0x4ba6d4['limit']));_0x4ba6d4['userId']&&_0x10309b['set']('userId',String(_0x4ba6d4['userId']));_0x4ba6d4['search']&&_0x10309b['set']('search',String(_0x4ba6d4['search']));_0x4ba6d4['includeChildTasks']&&_0x10309b['set']('includeChildTasks','true');const _0x452868=API_BASE+'/tasks'+(_0x10309b['toString']()?'?'+_0x10309b['toString']():''),_0x4a1414=await fetch(_0x452868);if(!_0x4a1414['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4a1414['statusText']);return await _0x4a1414['json']();},async 'getAutomations'(_0x5b0899={}){const _0x582c33=new URLSearchParams();_0x5b0899['environment']&&_0x582c33['set']('environment',String(_0x5b0899['environment']));const _0x427adf=await fetch(API_BASE+'/api/automations'+(_0x582c33['toString']()?'?'+_0x582c33['toString']():''));if(!_0x427adf['ok']){const _0x4e17ac=await _0x427adf['json']()['catch'](()=>({}));throw new Error(_0x4e17ac['message']||_0x4e17ac['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x427adf['statusText']);}return await _0x427adf['json']();},async 'getAutomation'(_0x29324e){const _0x222d77=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x29324e));if(!_0x222d77['ok']){const _0x52209b=await _0x222d77['json']()['catch'](()=>({}));throw new Error(_0x52209b['message']||_0x52209b['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x222d77['statusText']);}return await _0x222d77['json']();},async 'createAutomation'(_0x3e7812){const _0x4e5ad9=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e7812||{})});if(!_0x4e5ad9['ok']){const _0x2dac86=await _0x4e5ad9['json']()['catch'](()=>({}));throw new Error(_0x2dac86['message']||_0x2dac86['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x4e5ad9['statusText']);}return await _0x4e5ad9['json']();},async 'updateAutomation'(_0x77de56,_0x1b743f){const _0x5e02c3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x77de56),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b743f||{})});if(!_0x5e02c3['ok']){const _0xa9a115=await _0x5e02c3['json']()['catch'](()=>({}));throw new Error(_0xa9a115['message']||_0xa9a115['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x5e02c3['statusText']);}return await _0x5e02c3['json']();},async 'deleteAutomation'(_0x4e6e1c){const _0x5f2596=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4e6e1c),{'method':'DELETE'});if(!_0x5f2596['ok']){const _0x564693=await _0x5f2596['json']()['catch'](()=>({}));throw new Error(_0x564693['message']||_0x564693['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5f2596['statusText']);}return await _0x5f2596['json']();},async 'triggerAutomation'(_0x14c910){const _0x4292fd=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x14c910)+'/trigger',{'method':'POST'});if(!_0x4292fd['ok']){const _0x3206fd=await _0x4292fd['json']()['catch'](()=>({}));throw new Error(_0x3206fd['message']||_0x3206fd['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4292fd['statusText']);}return await _0x4292fd['json']();},async 'setAutomationEnabled'(_0x37dede,_0x22e6aa){const _0x4571e7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x37dede)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x22e6aa})});if(!_0x4571e7['ok']){const _0x3b76ba=await _0x4571e7['json']()['catch'](()=>({}));throw new Error(_0x3b76ba['message']||_0x3b76ba['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x4571e7['statusText']);}return await _0x4571e7['json']();},async 'getAutomationHistory'(_0x1d5554,_0x2fe09=0x32){const _0x5c16a1=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1d5554)+'/history?limit='+encodeURIComponent(String(_0x2fe09)));if(!_0x5c16a1['ok']){const _0x44cf61=await _0x5c16a1['json']()['catch'](()=>({}));throw new Error(_0x44cf61['message']||_0x44cf61['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x5c16a1['statusText']);}return await _0x5c16a1['json']();},async 'getTask'(_0x34e931,_0x16a293={}){const _0x27a30e=new URLSearchParams();if(_0x16a293['include']){const _0x255f25=Array['isArray'](_0x16a293['include'])?_0x16a293['include']['join'](','):String(_0x16a293['include']);if(_0x255f25)_0x27a30e['set']('include',_0x255f25);}const _0x12afd6=await fetch(API_BASE+'/tasks/'+_0x34e931+(_0x27a30e['toString']()?'?'+_0x27a30e['toString']():''));if(!_0x12afd6['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x12afd6['statusText']);return await _0x12afd6['json']();},async 'getTaskResults'(_0x21ffb6){const _0x291738=await fetch(API_BASE+'/tasks/'+_0x21ffb6+'/results');if(!_0x291738['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x291738['statusText']);return await _0x291738['json']();},async 'getTaskPatches'(_0x4b9f66){const _0x5bea7e=await fetch(API_BASE+'/tasks/'+_0x4b9f66+'/patches');if(!_0x5bea7e['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x5bea7e['statusText']);return await _0x5bea7e['json']();},async 'getTaskAttachments'(_0x2228c0){const _0x522b74=await fetch(API_BASE+'/tasks/'+_0x2228c0+'/attachments');if(!_0x522b74['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x522b74['statusText']);return await _0x522b74['json']();},async 'uploadAttachments'(_0x37ed01,_0x3f005e){const _0x271fb5=new FormData();for(const _0x5f59df of _0x3f005e){_0x271fb5['append']('attachments',_0x5f59df);}const _0x2e8fec=await fetch(API_BASE+'/tasks/'+_0x37ed01+'/attachments',{'method':'POST','body':_0x271fb5});if(!_0x2e8fec['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2e8fec['statusText']);return await _0x2e8fec['json']();},async 'isAINameGenerationAvailable'(){try{const _0x52f359=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x52f359['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x52f359['json']();}catch(_0xa6d14d){return{'available':![],'reason':_0xa6d14d['message']};}},async 'generateTaskName'(_0xcc1eb7){try{const _0x7b28e4=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0xcc1eb7})});return await _0x7b28e4['json']();}catch(_0x50c24e){return{'success':![],'error':_0x50c24e['message']};}},async 'createTask'(_0x434094){let _0x46305c,_0x5957ce={};if(_0x434094['files']&&_0x434094['files']['length']>0x0){const _0x41dfdf=new FormData();for(const [_0x39113a,_0x65f3fb]of Object['entries'](_0x434094)){if(_0x39113a!=='files'){if(_0x65f3fb==null)continue;typeof _0x65f3fb==='object'?_0x41dfdf['append'](_0x39113a,JSON['stringify'](_0x65f3fb)):_0x41dfdf['append'](_0x39113a,String(_0x65f3fb));}}for(const _0x481ff9 of _0x434094['files']){_0x41dfdf['append']('attachments',_0x481ff9);}_0x46305c=_0x41dfdf;}else _0x5957ce['Content-Type']='application/json',_0x46305c=JSON['stringify'](_0x434094);const _0x6c5c19=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5957ce,'body':_0x46305c});if(!_0x6c5c19['ok']){const _0x17173a=await _0x6c5c19['json'](),_0x38bb29=new Error(_0x17173a['error']||'Failed\x20to\x20create\x20task:\x20'+_0x6c5c19['statusText']),{message:_0x1a171d,..._0x4e8ec4}=_0x17173a;Object['assign'](_0x38bb29,_0x4e8ec4);throw _0x38bb29;}return await _0x6c5c19['json']();},async 'createTestTask'(_0xd23af0){const _0x16636d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd23af0)});if(!_0x16636d['ok']){const _0x433907=await _0x16636d['json']();throw new Error(_0x433907['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x16636d['statusText']);}return await _0x16636d['json']();},async 'createEphemeralTest'(_0x307b54){const _0x4e5972=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x307b54)});if(!_0x4e5972['ok']){const _0x35f82a=await _0x4e5972['json']();throw new Error(_0x35f82a['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x4e5972['statusText']);}return await _0x4e5972['json']();},async 'createDeployTask'(_0x3b1b64){const _0x5dd642=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b1b64)});if(!_0x5dd642['ok']){const _0x276d40=await _0x5dd642['json']();throw new Error(_0x276d40['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x5dd642['statusText']);}return await _0x5dd642['json']();},async 'getEnvironments'(){const _0xf306bf=await fetch(API_BASE+'/environments');if(!_0xf306bf['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xf306bf['statusText']);return await _0xf306bf['json']();},async 'getEnvironment'(_0xbcf113){const _0x222acc=await fetch(API_BASE+'/environments/'+_0xbcf113);if(!_0x222acc['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x222acc['statusText']);return await _0x222acc['json']();},async 'getEnvironmentRepoHistory'(_0xc0a49f,_0x2b8605,_0x2fc718={}){if(!_0xc0a49f||!_0x2b8605)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x27153c=new URLSearchParams();if(_0x2fc718['limit'])_0x27153c['set']('limit',String(_0x2fc718['limit']));if(_0x2fc718['offset'])_0x27153c['set']('offset',String(_0x2fc718['offset']));if(_0x2fc718['search'])_0x27153c['set']('search',String(_0x2fc718['search']));if(_0x2fc718['branch'])_0x27153c['set']('branch',String(_0x2fc718['branch']));const _0x4c17c9=API_BASE+'/environments/'+encodeURIComponent(_0xc0a49f)+'/repos/'+encodeURIComponent(_0x2b8605)+'/git/history',_0x4b8c3c=await fetch(''+_0x4c17c9+(_0x27153c['toString']()?'?'+_0x27153c['toString']():''));if(!_0x4b8c3c['ok']){const _0x4de6a0=await _0x4b8c3c['json']()['catch'](()=>({}));throw new Error(_0x4de6a0['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4b8c3c['statusText']);}return await _0x4b8c3c['json']();},async 'getEnvironmentRepoCommit'(_0x3879ce,_0x258fbf,_0xbf0d41){if(!_0x3879ce||!_0x258fbf||!_0xbf0d41)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4bee1a=API_BASE+'/environments/'+encodeURIComponent(_0x3879ce)+'/repos/'+encodeURIComponent(_0x258fbf)+'/git/commits/'+encodeURIComponent(_0xbf0d41),_0xce2de2=await fetch(_0x4bee1a);if(!_0xce2de2['ok']){const _0x41e758=await _0xce2de2['json']()['catch'](()=>({}));throw new Error(_0x41e758['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0xce2de2['statusText']);}return await _0xce2de2['json']();},async 'getEnvironmentRepoBranches'(_0x2ddfcf,_0x31cc08){if(!_0x2ddfcf||!_0x31cc08)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x506b17=API_BASE+'/environments/'+encodeURIComponent(_0x2ddfcf)+'/repos/'+encodeURIComponent(_0x31cc08)+'/git/branches',_0x447b5d=await fetch(_0x506b17);if(!_0x447b5d['ok']){const _0x585ac5=await _0x447b5d['json']()['catch'](()=>({}));throw new Error(_0x585ac5['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x447b5d['statusText']);}return await _0x447b5d['json']();},async 'revertEnvironmentRepoCommit'(_0x137770,_0x3a26c7,_0x2ec324,_0x2b3fe4={}){if(!_0x137770||!_0x3a26c7||!_0x2ec324)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x2b1c62=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x137770)+'/repos/'+encodeURIComponent(_0x3a26c7)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2ec324,..._0x2b3fe4})});if(!_0x2b1c62['ok']){const _0x61a521=await _0x2b1c62['json']()['catch'](()=>({}));throw new Error(_0x61a521['message']||_0x61a521['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x2b1c62['statusText']);}return await _0x2b1c62['json']();},async 'getTemplates'(_0x14b136={}){const _0x4bc08c=new URLSearchParams();if(_0x14b136['include']){const _0x1d06d6=Array['isArray'](_0x14b136['include'])?_0x14b136['include']['join'](','):String(_0x14b136['include']);if(_0x1d06d6)_0x4bc08c['set']('include',_0x1d06d6);}const _0x2d319f=await fetch(API_BASE+'/templates'+(_0x4bc08c['toString']()?'?'+_0x4bc08c['toString']():''));if(!_0x2d319f['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x2d319f['statusText']);return await _0x2d319f['json']();},async 'getTemplatesForEnvironment'(_0x29c7e8,_0xc27596={}){if(!_0x29c7e8)throw new Error('Environment\x20name\x20is\x20required');const _0x22b6e2=new URLSearchParams();if(_0xc27596['include']){const _0x5af590=Array['isArray'](_0xc27596['include'])?_0xc27596['include']['join'](','):String(_0xc27596['include']);if(_0x5af590)_0x22b6e2['set']('include',_0x5af590);}const _0x2dc0a9=await fetch(API_BASE+'/templates/'+_0x29c7e8+(_0x22b6e2['toString']()?'?'+_0x22b6e2['toString']():''));if(!_0x2dc0a9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x29c7e8+':\x20'+_0x2dc0a9['statusText']);return await _0x2dc0a9['json']();},async 'getTemplate'(_0x3b4d56,_0x1ef3c2,_0x12ee8a={}){if(!_0x3b4d56||!_0x1ef3c2)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0xe1e7b5=new URLSearchParams();if(_0x12ee8a['include']){const _0x4db40f=Array['isArray'](_0x12ee8a['include'])?_0x12ee8a['include']['join'](','):String(_0x12ee8a['include']);if(_0x4db40f)_0xe1e7b5['set']('include',_0x4db40f);}const _0x453a12=await fetch(API_BASE+'/templates/'+_0x3b4d56+'/'+_0x1ef3c2+(_0xe1e7b5['toString']()?'?'+_0xe1e7b5['toString']():''));if(!_0x453a12['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x453a12['statusText']);return await _0x453a12['json']();},async 'getTaskLogs'(_0x165d3a,_0x57c0b8={}){if(!_0x165d3a)throw new Error('Task\x20ID\x20is\x20required');const _0x56060a=new URLSearchParams();_0x57c0b8['tail']&&_0x56060a['set']('tail',String(_0x57c0b8['tail']));const _0x42c386=await fetch(API_BASE+'/tasks/'+_0x165d3a+'/logs'+(_0x56060a['toString']()?'?'+_0x56060a['toString']():''));if(!_0x42c386['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x42c386['statusText']);return await _0x42c386['text']();},async 'getContainers'(){const _0x5e4d0f=await fetch(API_BASE+'/containers');if(!_0x5e4d0f['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5e4d0f['statusText']);return await _0x5e4d0f['json']();},async 'getContainer'(_0x577b3b){const _0x33e663=await fetch(API_BASE+'/containers/'+_0x577b3b);if(!_0x33e663['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33e663['statusText']);return await _0x33e663['json']();},async 'startInteractiveContainer'(_0x2dc9c3){const _0x312882=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2dc9c3)});if(!_0x312882['ok']){const _0x51b62c=await _0x312882['json']()['catch'](()=>({}));throw new Error(_0x51b62c['message']||'Failed\x20to\x20start\x20container:\x20'+_0x312882['statusText']);}return await _0x312882['json']();},async 'stopContainer'(_0x5e2053){const _0x4d1954=await fetch(API_BASE+'/containers/'+_0x5e2053,{'method':'DELETE'});if(!_0x4d1954['ok']){const _0x13f496=await _0x4d1954['json']()['catch'](()=>({}));throw new Error(_0x13f496['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x4d1954['statusText']);}return await _0x4d1954['json']();},async 'stopTask'(_0x29586f){if(!_0x29586f)throw new Error('Task\x20ID\x20is\x20required');const _0x385f1e=await fetch(API_BASE+'/tasks/'+_0x29586f+'/stop',{'method':'POST'});if(!_0x385f1e['ok']){const _0x186518=await _0x385f1e['json']()['catch'](()=>({}));throw new Error(_0x186518['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x385f1e['statusText']);}return await _0x385f1e['json']();},async 'interruptTask'(_0x347371){if(!_0x347371)throw new Error('Task\x20ID\x20is\x20required');const _0x1c4069=await fetch(API_BASE+'/tasks/'+_0x347371+'/interrupt',{'method':'POST'});if(!_0x1c4069['ok']){const _0x2408cb=await _0x1c4069['json']()['catch'](()=>({}));throw new Error(_0x2408cb['error']||_0x2408cb['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x1c4069['statusText']);}return await _0x1c4069['json']();},async 'startTask'(_0x165412){if(!_0x165412)throw new Error('Task\x20ID\x20is\x20required');const _0x5125cb=await fetch(API_BASE+'/tasks/'+_0x165412+'/start',{'method':'POST'});if(!_0x5125cb['ok']){const _0x2102a9=await _0x5125cb['json']()['catch'](()=>({}));throw new Error(_0x2102a9['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5125cb['statusText']);}return await _0x5125cb['json']();},async 'deleteTask'(_0x1d69ee){if(!_0x1d69ee)throw new Error('Task\x20ID\x20is\x20required');const _0x48a762=await fetch(API_BASE+'/tasks/'+_0x1d69ee,{'method':'DELETE'});if(!_0x48a762['ok']){const _0x21467a=await _0x48a762['json']()['catch'](()=>({}));throw new Error(_0x21467a['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x48a762['statusText']);}return await _0x48a762['json']();},async 'refreshTasksFromDisk'(){const _0x3678e3=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x3678e3['ok']){const _0x441e84=await _0x3678e3['json']()['catch'](()=>({}));throw new Error(_0x441e84['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x3678e3['statusText']);}return await _0x3678e3['json']();},async 'approveTask'(_0x3638b4,_0x458334={}){if(!_0x3638b4)throw new Error('Task\x20ID\x20is\x20required');const _0x52c48e={'commit_message':_0x458334['commit_message']||'','pull':_0x458334['pull']??![],'push':_0x458334['push']??![]};_0x458334['new_branch']&&(_0x52c48e['new_branch']=_0x458334['new_branch']);const _0x4a77c6=await fetch(API_BASE+'/tasks/'+_0x3638b4+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52c48e)});if(!_0x4a77c6['ok']){const _0x484f89=await _0x4a77c6['json']()['catch'](()=>({}));let _0x2de24e=_0x484f89['error']||_0x484f89['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x4a77c6['statusText'];if(_0x484f89['results']&&Array['isArray'](_0x484f89['results'])){const _0x233467=_0x484f89['results']['filter'](_0x8df383=>!_0x8df383['success']&&_0x8df383['error']);_0x233467['length']>0x0&&(_0x2de24e=_0x233467[0x0]['error']);}throw new Error(_0x2de24e);}return await _0x4a77c6['json']();},async 'getPullRequestInfo'(_0x44b10c){if(!_0x44b10c)throw new Error('Task\x20ID\x20is\x20required');const _0x31b055=await fetch(API_BASE+'/tasks/'+_0x44b10c+'/pull-request-info');if(!_0x31b055['ok']){const _0x20888b=await _0x31b055['json']()['catch'](()=>({}));throw new Error(_0x20888b['error']||_0x20888b['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x31b055['statusText']);}return await _0x31b055['json']();},async 'createPullRequests'(_0x1aeeb6,_0x28a4e2){if(!_0x1aeeb6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x28a4e2||!Array['isArray'](_0x28a4e2))throw new Error('repos\x20array\x20is\x20required');const _0x3683e7=await fetch(API_BASE+'/tasks/'+_0x1aeeb6+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x28a4e2})});if(!_0x3683e7['ok']){const _0x5a9670=await _0x3683e7['json']()['catch'](()=>({}));let _0x1d3a4c=_0x5a9670['error']||_0x5a9670['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x3683e7['statusText'];if(_0x5a9670['results']&&Array['isArray'](_0x5a9670['results'])){const _0x5e3614=_0x5a9670['results']['filter'](_0x1f30f4=>!_0x1f30f4['success']&&_0x1f30f4['error']);_0x5e3614['length']>0x0&&(_0x1d3a4c=_0x5e3614[0x0]['error']);}throw new Error(_0x1d3a4c);}return await _0x3683e7['json']();},async 'syncRepos'(_0x37b37e){if(!_0x37b37e)throw new Error('Task\x20ID\x20is\x20required');const _0x467486=await fetch(API_BASE+'/tasks/'+_0x37b37e+'/sync-repos',{'method':'POST'});if(!_0x467486['ok']){const _0x1a5a92=await _0x467486['json']()['catch'](()=>({}));throw new Error(_0x1a5a92['error']||_0x1a5a92['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x467486['statusText']);}return await _0x467486['json']();},async 'getIbmiSyncInfo'(_0x36ed93){if(!_0x36ed93)throw new Error('Task\x20ID\x20is\x20required');const _0x1594c4=await fetch(API_BASE+'/tasks/'+_0x36ed93+'/ibmi-sync-info');if(!_0x1594c4['ok']){const _0x555c84=await _0x1594c4['json']()['catch'](()=>({}));throw new Error(_0x555c84['error']||_0x555c84['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1594c4['json']();},async 'getSyncFiles'(_0xcf8bd8){if(!_0xcf8bd8)throw new Error('Task\x20ID\x20is\x20required');const _0x5d4c59=await fetch(API_BASE+'/tasks/'+_0xcf8bd8+'/sync-to-ibmi/files');if(!_0x5d4c59['ok']){const _0xccc1aa=await _0x5d4c59['json']()['catch'](()=>({}));throw new Error(_0xccc1aa['error']||_0xccc1aa['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x5d4c59['json']();},async 'syncToIbmi'(_0x54ae38,_0x550366,_0x3b7f5a=null,_0x573f8b=null,_0xefef92=null){if(!_0x54ae38)throw new Error('Task\x20ID\x20is\x20required');const _0x111789={'library':_0x550366};if(_0x3b7f5a)_0x111789['user']=_0x3b7f5a;if(_0x573f8b)_0x111789['password']=_0x573f8b;if(_0xefef92)_0x111789['files']=_0xefef92;const _0x42834f=await fetch(API_BASE+'/tasks/'+_0x54ae38+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x111789)});if(!_0x42834f['ok']){const _0x422c47=await _0x42834f['json']()['catch'](()=>({}));throw new Error(_0x422c47['error']||_0x422c47['message']||'Sync\x20failed');}return await _0x42834f['json']();},async 'getIbmiSyncLog'(_0x5b2c6e){if(!_0x5b2c6e)throw new Error('Task\x20ID\x20is\x20required');const _0x1706e3=await fetch(API_BASE+'/tasks/'+_0x5b2c6e+'/ibmi-sync-log');if(!_0x1706e3['ok']){const _0x4843c5=await _0x1706e3['json']()['catch'](()=>({}));throw new Error(_0x4843c5['error']||_0x4843c5['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1706e3['json']();},async 'pullChanges'(_0x5b50a1){if(!_0x5b50a1)throw new Error('Task\x20ID\x20is\x20required');const _0x10256b=await fetch(API_BASE+'/tasks/'+_0x5b50a1+'/pull-changes',{'method':'POST'});if(!_0x10256b['ok']){const _0x55a998=await _0x10256b['json']()['catch'](()=>({}));throw new Error(_0x55a998['error']||_0x55a998['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x10256b['statusText']);}return await _0x10256b['json']();},async 'readFile'(_0x49df15,_0x23ce0e){if(!_0x49df15)throw new Error('Task\x20ID\x20is\x20required');if(!_0x23ce0e)throw new Error('File\x20path\x20is\x20required');const _0x421c6b=await fetch(API_BASE+'/tasks/'+_0x49df15+'/files?path='+encodeURIComponent(_0x23ce0e));if(!_0x421c6b['ok']){const _0x40de73=await _0x421c6b['json']()['catch'](()=>({}));throw new Error(_0x40de73['error']||_0x40de73['message']||'Failed\x20to\x20read\x20file:\x20'+_0x421c6b['statusText']);}return await _0x421c6b['json']();},'getTaskFileDownloadUrl'(_0x12552f,_0x34ca2f){if(!_0x12552f)throw new Error('Task\x20ID\x20is\x20required');if(!_0x34ca2f)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x12552f+'/files/download?path='+encodeURIComponent(_0x34ca2f);},async 'writeFile'(_0x5a6d26,_0x49955b,_0x945752){if(!_0x5a6d26)throw new Error('Task\x20ID\x20is\x20required');if(!_0x49955b)throw new Error('File\x20path\x20is\x20required');if(_0x945752===undefined)throw new Error('Content\x20is\x20required');const _0x2f157b=await fetch(API_BASE+'/tasks/'+_0x5a6d26+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x49955b,'content':_0x945752})});if(!_0x2f157b['ok']){const _0x21dc3e=await _0x2f157b['json']()['catch'](()=>({}));throw new Error(_0x21dc3e['error']||_0x21dc3e['message']||'Failed\x20to\x20write\x20file:\x20'+_0x2f157b['statusText']);}return await _0x2f157b['json']();},async 'uploadTaskFiles'(_0x17682d,_0x12d1b8,_0x73092f){if(!_0x17682d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x12d1b8)throw new Error('Target\x20directory\x20is\x20required');if(!_0x73092f||_0x73092f['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x4b6a76=new FormData();_0x4b6a76['append']('targetDir',_0x12d1b8);for(const _0x54c681 of _0x73092f){_0x4b6a76['append']('files',_0x54c681,_0x54c681['name']);}const _0x279e07=await fetch(API_BASE+'/tasks/'+_0x17682d+'/files/upload',{'method':'POST','body':_0x4b6a76});if(!_0x279e07['ok']){const _0x2ed425=await _0x279e07['json']()['catch'](()=>({}));throw new Error(_0x2ed425['error']||_0x2ed425['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x279e07['statusText']);}return await _0x279e07['json']();},async 'deleteFile'(_0x4a2e47,_0x20211e){if(!_0x4a2e47)throw new Error('Task\x20ID\x20is\x20required');if(!_0x20211e)throw new Error('File\x20path\x20is\x20required');const _0x5e5aa0=await fetch(API_BASE+'/tasks/'+_0x4a2e47+'/files?path='+encodeURIComponent(_0x20211e),{'method':'DELETE'});if(!_0x5e5aa0['ok']){const _0x1c1834=await _0x5e5aa0['json']()['catch'](()=>({}));throw new Error(_0x1c1834['error']||_0x1c1834['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x5e5aa0['statusText']);}return await _0x5e5aa0['json']();},async 'discardFile'(_0x370a1a,_0x3f7fcb,_0x177409){if(!_0x370a1a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3f7fcb)throw new Error('File\x20path\x20is\x20required');if(!_0x177409)throw new Error('Repository\x20path\x20is\x20required');const _0x5813f6=await fetch(API_BASE+'/tasks/'+_0x370a1a+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3f7fcb,'repoPath':_0x177409})});if(!_0x5813f6['ok']){const _0x3fd3ee=await _0x5813f6['json']()['catch'](()=>({}));throw new Error(_0x3fd3ee['error']||_0x3fd3ee['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x5813f6['statusText']);}return await _0x5813f6['json']();},async 'followUpTask'(_0x20fad1,_0x276fae={}){if(!_0x20fad1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x276fae['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2bb725,_0x27d68e={};if(_0x276fae['files']&&_0x276fae['files']['length']>0x0){const _0x4b3c6f=new FormData();_0x4b3c6f['append']('instructions',_0x276fae['instructions']);for(const _0x1a406b of _0x276fae['files']){_0x4b3c6f['append']('attachments',_0x1a406b);}_0x2bb725=_0x4b3c6f;}else _0x27d68e['Content-Type']='application/json',_0x2bb725=JSON['stringify']({'instructions':_0x276fae['instructions']});const _0x49f8f4=await fetch(API_BASE+'/tasks/'+_0x20fad1+'/follow-up',{'method':'POST','headers':_0x27d68e,'body':_0x2bb725});if(!_0x49f8f4['ok']){const _0xaf1962=await _0x49f8f4['json']()['catch'](()=>({}));throw new Error(_0xaf1962['error']||_0xaf1962['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x49f8f4['statusText']);}return await _0x49f8f4['json']();},async 'getTaskRewindPoints'(_0x4ced13){if(!_0x4ced13)throw new Error('Task\x20ID\x20is\x20required');const _0x517f81=await fetch(API_BASE+'/tasks/'+_0x4ced13+'/rewind-points');if(!_0x517f81['ok']){const _0x45a595=await _0x517f81['json']()['catch'](()=>({}));throw new Error(_0x45a595['error']||_0x45a595['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x517f81['statusText']);}return await _0x517f81['json']();},async 'rewindTask'(_0x4c7a04,_0x2fb75f={}){if(!_0x4c7a04)throw new Error('Task\x20ID\x20is\x20required');const _0x2dd541=Number['isInteger'](_0x2fb75f['targetFollowUpCount'])?_0x2fb75f['targetFollowUpCount']:0x0,_0x45a5a9={'targetFollowUpCount':_0x2dd541};typeof _0x2fb75f['instructions']==='string'&&_0x2fb75f['instructions']['trim']()&&(_0x45a5a9['instructions']=_0x2fb75f['instructions']['trim']());typeof _0x2fb75f['rewindFiles']==='boolean'&&(_0x45a5a9['rewindFiles']=_0x2fb75f['rewindFiles']);const _0x3c43dc=await fetch(API_BASE+'/tasks/'+_0x4c7a04+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x45a5a9)});if(!_0x3c43dc['ok']){const _0x146cba=await _0x3c43dc['json']()['catch'](()=>({}));throw new Error(_0x146cba['error']||_0x146cba['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3c43dc['statusText']);}return await _0x3c43dc['json']();},async 'login'(_0x15766c,_0x2c7dd3){const _0x30aa0c=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x15766c,'password':_0x2c7dd3})});if(!_0x30aa0c['ok']){const _0x269f9d=await _0x30aa0c['json']();throw new Error(_0x269f9d['message']||'Login\x20failed');}return await _0x30aa0c['json']();},async 'logout'(){const _0x1b0dba=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1b0dba['ok']){const _0x47ddae=await _0x1b0dba['json']();throw new Error(_0x47ddae['message']||'Logout\x20failed');}return await _0x1b0dba['json']();},async 'getCurrentUser'(){const _0x1225dd=await fetch(API_BASE+'/auth/me');if(!_0x1225dd['ok'])throw new Error('Not\x20authenticated');const _0x296fbe=await _0x1225dd['json']();return _0x296fbe['user'];},async 'getRolesInfo'(){const _0x14bf93=await fetch(API_BASE+'/users/roles');if(!_0x14bf93['ok']){const _0x5d26f9=await _0x14bf93['json']();throw new Error(_0x5d26f9['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x14bf93['json']();},async 'getUsers'(){const _0x39f625=await fetch(API_BASE+'/users');if(!_0x39f625['ok']){const _0x527ee6=await _0x39f625['json']();throw new Error(_0x527ee6['message']||'Failed\x20to\x20get\x20users');}return await _0x39f625['json']();},async 'getUser'(_0x43f269){const _0x24ca2b=await fetch(API_BASE+'/users/'+_0x43f269);if(!_0x24ca2b['ok']){const _0x2c3cde=await _0x24ca2b['json']();throw new Error(_0x2c3cde['message']||'Failed\x20to\x20get\x20user');}return await _0x24ca2b['json']();},async 'createUser'(_0x4daa85){const _0x1165ce=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4daa85)});if(!_0x1165ce['ok']){const _0x27b9f3=await _0x1165ce['json']();throw new Error(_0x27b9f3['message']||'Failed\x20to\x20create\x20user');}return await _0x1165ce['json']();},async 'updateUser'(_0x3ceca6,_0x39d1c0){const _0x3166f3=await fetch(API_BASE+'/users/'+_0x3ceca6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39d1c0)});if(!_0x3166f3['ok']){const _0x44b6ba=await _0x3166f3['json']();throw new Error(_0x44b6ba['message']||'Failed\x20to\x20update\x20user');}return await _0x3166f3['json']();},async 'deleteUser'(_0x4a6013){const _0x23456b=await fetch(API_BASE+'/users/'+_0x4a6013,{'method':'DELETE'});if(!_0x23456b['ok']){const _0x28a75e=await _0x23456b['json']();throw new Error(_0x28a75e['message']||'Failed\x20to\x20delete\x20user');}return await _0x23456b['json']();},async 'stopAllContainers'(){const _0x11326a=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1dabeb=await _0x11326a['json']()['catch'](()=>({}));if(!_0x11326a['ok'])throw new Error(_0x1dabeb['message']||_0x1dabeb['error']||'Failed\x20to\x20stop\x20containers');return _0x1dabeb;},async 'removeStoppedContainers'(){const _0xb1fd42=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x15164c=await _0xb1fd42['json']()['catch'](()=>({}));if(!_0xb1fd42['ok'])throw new Error(_0x15164c['message']||_0x15164c['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x15164c;},async 'pruneDockerResources'(){const _0x4d8b22=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x47003c=await _0x4d8b22['json']()['catch'](()=>({}));if(!_0x4d8b22['ok'])throw new Error(_0x47003c['message']||_0x47003c['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x47003c;},async 'createPasswordToken'(_0x47269d,_0x476d15='setup',_0x1cbe0d=![]){const _0x533ec0=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x47269d,'type':_0x476d15,'sendEmail':_0x1cbe0d})});if(!_0x533ec0['ok']){const _0x5640c8=await _0x533ec0['json']();throw new Error(_0x5640c8['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x533ec0['json']();},async 'getEmailConfig'(){const _0x3e49a3=await fetch(API_BASE+'/password/email-config');if(!_0x3e49a3['ok']){const _0x327801=await _0x3e49a3['json']();throw new Error(_0x327801['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3e49a3['json']();},async 'updateTaskName'(_0x36e4a6,_0x26dae9){const _0x3456a3=await fetch(API_BASE+'/tasks/'+_0x36e4a6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x26dae9})});if(!_0x3456a3['ok']){const _0x545280=await _0x3456a3['json']();throw new Error(_0x545280['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x3456a3['json']();},async 'pinTask'(_0x1c7ec2,_0x4511cb,_0x1be4cd=null){if(!_0x1c7ec2)throw new Error('Task\x20ID\x20is\x20required');const _0x36894f={'pinned':_0x4511cb};_0x1be4cd&&_0x1be4cd['length']>0x0&&(_0x36894f['additionalTaskIds']=_0x1be4cd);const _0x1c2489=await fetch(API_BASE+'/tasks/'+_0x1c7ec2+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36894f)});if(!_0x1c2489['ok']){const _0x4d6914=await _0x1c2489['json']();throw new Error(_0x4d6914['error']||'Failed\x20to\x20pin\x20task');}return await _0x1c2489['json']();},async 'setTaskWinner'(_0x37ebf2,_0x43d372,_0x10182c=[]){if(!_0x37ebf2)throw new Error('Task\x20ID\x20is\x20required');const _0xfc475b=await fetch(API_BASE+'/tasks/'+_0x37ebf2+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x43d372,'siblings':_0x10182c})});if(!_0xfc475b['ok']){const _0x2006fb=await _0xfc475b['json']();throw new Error(_0x2006fb['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0xfc475b['json']();},async 'setTaskLoser'(_0x58ae58,_0x44157a){if(!_0x58ae58)throw new Error('Task\x20ID\x20is\x20required');const _0x2a3ec7=await fetch(API_BASE+'/tasks/'+_0x58ae58+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x44157a})});if(!_0x2a3ec7['ok']){const _0x93b631=await _0x2a3ec7['json']();throw new Error(_0x93b631['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x2a3ec7['json']();},async 'createTaskGroup'(_0x29e317){const _0x11415f=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29e317)});if(!_0x11415f['ok']){const _0x22f022=await _0x11415f['json']();throw new Error(_0x22f022['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x11415f['json']();},async 'getTaskGroups'(_0x3127c0={}){const _0x188901=new URLSearchParams();if(_0x3127c0['userId'])_0x188901['set']('userId',String(_0x3127c0['userId']));if(_0x3127c0['status'])_0x188901['set']('status',String(_0x3127c0['status']));if(_0x3127c0['limit'])_0x188901['set']('limit',String(_0x3127c0['limit']));const _0x1bd8e9=API_BASE+'/tasks/groups'+(_0x188901['toString']()?'?'+_0x188901['toString']():''),_0x5aad7b=await fetch(_0x1bd8e9);if(!_0x5aad7b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x5aad7b['json']();},async 'getTaskGroup'(_0x33e9a1){const _0x525107=await fetch(API_BASE+'/tasks/groups/'+_0x33e9a1);if(!_0x525107['ok']){const _0x5f2c83=await _0x525107['json']();throw new Error(_0x5f2c83['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x525107['json']();},async 'updateTaskGroup'(_0x501319,_0x59200b,_0x5166a9){const _0x237de0=await fetch(API_BASE+'/tasks/'+_0x501319+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x59200b,'groupIndex':_0x5166a9})});if(!_0x237de0['ok']){const _0x306bee=await _0x237de0['json']();throw new Error(_0x306bee['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x237de0['json']();},async 'removeTaskFromGroup'(_0x950e58){return this['updateTaskGroup'](_0x950e58,null,null);},async 'deleteTaskGroup'(_0x3e68b8,_0x1eadba=![]){const _0x6d33de=_0x1eadba?'?deleteTasks=true':'',_0x2910c0=await fetch(API_BASE+'/tasks/groups/'+_0x3e68b8+_0x6d33de,{'method':'DELETE'});if(!_0x2910c0['ok']){const _0x346d38=await _0x2910c0['json']();throw new Error(_0x346d38['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5f0e35,_0x101a44){const _0x165d17=await fetch(API_BASE+'/tasks/groups/'+_0x5f0e35+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x101a44})});if(!_0x165d17['ok']){const _0x49acc3=await _0x165d17['json']();throw new Error(_0x49acc3['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x165d17['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4ba4e5){if(!_0x4ba4e5)throw new Error('Task\x20ID\x20is\x20required');const _0x32ad6d=await fetch(API_BASE+'/tasks/'+_0x4ba4e5+'/comments');if(!_0x32ad6d['ok']){const _0x39b98d=await _0x32ad6d['json']()['catch'](()=>({}));throw new Error(_0x39b98d['error']||'Failed\x20to\x20get\x20comments');}return await _0x32ad6d['json']();},async 'addComment'(_0x4115d2,_0x46962a){if(!_0x4115d2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x46962a)throw new Error('Comment\x20content\x20is\x20required');const _0x4fbb94=await fetch(API_BASE+'/tasks/'+_0x4115d2+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x46962a})});if(!_0x4fbb94['ok']){const _0x5b7202=await _0x4fbb94['json']()['catch'](()=>({}));throw new Error(_0x5b7202['error']||'Failed\x20to\x20add\x20comment');}return await _0x4fbb94['json']();},async 'updateComment'(_0x201be8,_0xbe843a,_0x543c81){if(!_0x201be8)throw new Error('Task\x20ID\x20is\x20required');if(!_0xbe843a)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x543c81)throw new Error('Comment\x20content\x20is\x20required');const _0x49f589=await fetch(API_BASE+'/tasks/'+_0x201be8+'/comments/'+_0xbe843a,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x543c81})});if(!_0x49f589['ok']){const _0x2746bc=await _0x49f589['json']()['catch'](()=>({}));throw new Error(_0x2746bc['error']||'Failed\x20to\x20update\x20comment');}return await _0x49f589['json']();},async 'deleteComment'(_0x32cd1e,_0x284fe4){if(!_0x32cd1e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x284fe4)throw new Error('Comment\x20ID\x20is\x20required');const _0x46655c=await fetch(API_BASE+'/tasks/'+_0x32cd1e+'/comments/'+_0x284fe4,{'method':'DELETE'});if(!_0x46655c['ok']){const _0x3707fa=await _0x46655c['json']()['catch'](()=>({}));throw new Error(_0x3707fa['error']||'Failed\x20to\x20delete\x20comment');}return await _0x46655c['json']();},async 'createObjective'(_0x29eddf){const _0x500a80={'objective':!![],'name':_0x29eddf['name']||'','environment':_0x29eddf['environment']||null,'agents':_0x29eddf['agents']||[],'branches':_0x29eddf['branches']||{},'isPinned':_0x29eddf['isPinned']||![],'parentObjectiveId':_0x29eddf['parentObjectiveId']||null,'env_vars':_0x29eddf['envVars']||{},'parameters':{'instructions':_0x29eddf['instructions']||''},'files':_0x29eddf['files']||[],'jira':_0x29eddf['jira']||null};return this['createTask'](_0x500a80);},async 'updateObjective'(_0x15d0ad,_0x575fe5,_0x59beee=[],_0x2be62b=[]){let _0x592aaa,_0x261421={};const _0x5c986e={..._0x575fe5};_0x2be62b&&_0x2be62b['length']>0x0&&(_0x5c986e['removeAttachments']=_0x2be62b);if(_0x59beee&&_0x59beee['length']>0x0){const _0x27f57d=new FormData();for(const [_0x39345b,_0x2d61d9]of Object['entries'](_0x5c986e)){if(_0x2d61d9==null)continue;typeof _0x2d61d9==='object'?_0x27f57d['append'](_0x39345b,JSON['stringify'](_0x2d61d9)):_0x27f57d['append'](_0x39345b,String(_0x2d61d9));}for(const _0x36782b of _0x59beee){_0x27f57d['append']('attachments',_0x36782b);}_0x592aaa=_0x27f57d;}else _0x261421['Content-Type']='application/json',_0x592aaa=JSON['stringify'](_0x5c986e);const _0x1c6d1a=await fetch(API_BASE+'/tasks/'+_0x15d0ad,{'method':'PATCH','headers':_0x261421,'body':_0x592aaa});if(!_0x1c6d1a['ok']){const _0x5f486e=await _0x1c6d1a['json']();throw new Error(_0x5f486e['error']||'Failed\x20to\x20update\x20objective');}return await _0x1c6d1a['json']();},async 'deleteObjective'(_0x14ae77){return this['deleteTask'](_0x14ae77);},async 'launchObjective'(_0xc2d6a8,_0x3d62eb={}){const _0x5c871d=await fetch(API_BASE+'/tasks/'+_0xc2d6a8+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d62eb)});if(!_0x5c871d['ok']){const _0xf37aea=await _0x5c871d['json']();throw new Error(_0xf37aea['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5c871d['json']();},async 'getObjectiveAttachments'(_0x5af6d6){return this['getTaskAttachments'](_0x5af6d6);},async 'createJudgeTask'({environment:_0x3bbe96,judgeAgent:_0x35451a,groupId:_0x4a301c,taskIds:_0x148068,judgeCustomInstructions:_0x310ca5,isPinned:_0x200351}){const _0x2ab129=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3bbe96,'judgeAgent':_0x35451a,'groupId':_0x4a301c,'taskIds':_0x148068,'judgeCustomInstructions':_0x310ca5,'isPinned':_0x200351})});if(!_0x2ab129['ok']){const _0x2a398a=await _0x2ab129['json']();throw new Error(_0x2a398a['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2ab129['json']();},async 'getJudgeTasks'(_0x2aa7f1){const _0x8f4e80=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x2aa7f1));if(!_0x8f4e80['ok']){const _0x58131f=await _0x8f4e80['json']();throw new Error(_0x58131f['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x8f4e80['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x3688c0,_0x3389f7,_0x81d991=''){const _0x4d47e9=await fetch(API_BASE+'/tasks/'+_0x3688c0+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3389f7,'customPreamble':_0x81d991})});if(!_0x4d47e9['ok']){const _0x525550=await _0x4d47e9['json']();throw new Error(_0x525550['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x4d47e9['json']();},async 'getJiraConfig'(){const _0x2adc88=await fetch(API_BASE+'/jira/config');if(!_0x2adc88['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x2adc88['json']();},async 'getJiraIssue'(_0x144976){const _0x284da2=await fetch(API_BASE+'/jira/issues/'+_0x144976);if(!_0x284da2['ok']){const _0x46c181=await _0x284da2['json']()['catch'](()=>({}));throw new Error(_0x46c181['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x284da2['statusText']);}return await _0x284da2['json']();},async 'searchJiraIssues'(_0x5b0d15,_0x3f4a69=0x14){const _0x10fcbf=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5b0d15,'maxResults':_0x3f4a69})});if(!_0x10fcbf['ok']){const _0x166e3a=await _0x10fcbf['json']()['catch'](()=>({}));throw new Error(_0x166e3a['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x10fcbf['statusText']);}return await _0x10fcbf['json']();},async 'postJiraComment'(_0x10241d,_0x413bfc){const _0x5b788b=await fetch(API_BASE+'/jira/issues/'+_0x10241d+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x413bfc})});if(!_0x5b788b['ok']){const _0x59196d=await _0x5b788b['json']()['catch'](()=>({}));throw new Error(_0x59196d['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5b788b['statusText']);}return await _0x5b788b['json']();},async 'getJiraComments'(_0x387d5b){const _0x5664cf=await fetch(API_BASE+'/jira/issues/'+_0x387d5b+'/comments');if(!_0x5664cf['ok']){const _0x3bde7a=await _0x5664cf['json']()['catch'](()=>({}));throw new Error(_0x3bde7a['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x5664cf['statusText']);}return await _0x5664cf['json']();},async 'promptParameter'({environment:_0x4244af,command:_0x5b844d,parser:parser='json'}){const _0x2c6be2=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x4244af,'command':_0x5b844d,'parser':parser})});if(!_0x2c6be2['ok']){const _0x1c2db5=await _0x2c6be2['json']()['catch'](()=>({}));throw new Error(_0x1c2db5['message']||_0x1c2db5['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2c6be2['statusText']);}return await _0x2c6be2['json']();},async 'promptParameterStream'(_0x331e46,_0x1fdd21){const _0x190f01=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x331e46)});if(!_0x190f01['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x190f01['statusText']);const _0x3f766f=_0x190f01['body']['getReader'](),_0x1e13d4=new TextDecoder();let _0x22442a='';return new Promise((_0xc6885b,_0x123033)=>{const _0x2beff3=async()=>{try{const {done:_0xb56072,value:_0x36afb9}=await _0x3f766f['read']();if(_0xb56072)return;_0x22442a+=_0x1e13d4['decode'](_0x36afb9,{'stream':!![]});const _0x51292a=_0x22442a['split']('\x0a\x0a');_0x22442a=_0x51292a['pop']()||'';for(const _0x368c37 of _0x51292a){if(!_0x368c37['trim']())continue;const _0x93fad3=_0x368c37['split']('\x0a');let _0x411463='message',_0x175f2a='';for(const _0x18fa20 of _0x93fad3){if(_0x18fa20['startsWith']('event:'))_0x411463=_0x18fa20['substring'](0x6)['trim']();else _0x18fa20['startsWith']('data:')&&(_0x175f2a=_0x18fa20['substring'](0x5)['trim']());}if(!_0x175f2a)continue;try{const _0x2b87a1=JSON['parse'](_0x175f2a);if(_0x411463==='progress'&&_0x1fdd21)_0x1fdd21(_0x2b87a1['stage'],_0x2b87a1['message']);else{if(_0x411463==='result'){_0xc6885b(_0x2b87a1);return;}else{if(_0x411463==='error'){let _0x1f7040=_0x2b87a1['message']||_0x2b87a1['error']||'Prompt\x20command\x20failed';_0x2b87a1['rawOutput']&&(_0x1f7040+='\x0a\x0aRaw\x20output:\x0a'+_0x2b87a1['rawOutput']);_0x123033(new Error(_0x1f7040));return;}}}}catch(_0x179c03){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x179c03),console['error']('Event\x20type:',_0x411463),console['error']('Event\x20data:',_0x175f2a),console['error']('First\x20200\x20chars:',_0x175f2a['substring'](0x0,0xc8)),_0x123033(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x179c03['message']+'\x0a\x0aData:\x20'+_0x175f2a['substring'](0x0,0x1f4)));return;}}_0x2beff3();}catch(_0x4050a1){_0x123033(_0x4050a1);}};_0x2beff3();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0xac358d){const _0x55f5f1=await fetch(''+API_BASE+_0xac358d);if(!_0x55f5f1['ok']){const _0x1ae59f=await _0x55f5f1['json']()['catch'](()=>({'error':_0x55f5f1['statusText']})),_0x3d0e7d=new Error(_0x1ae59f['error']||_0x1ae59f['message']||_0x55f5f1['statusText']);if(_0x1ae59f['detail']!==undefined)_0x3d0e7d['detail']=_0x1ae59f['detail'];throw _0x3d0e7d;}return await _0x55f5f1['json']();},async 'post'(_0x39394a,_0x3c8f37){const _0x53501a=await fetch(''+API_BASE+_0x39394a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c8f37)});if(!_0x53501a['ok']){const _0x486fef=await _0x53501a['json']()['catch'](()=>({'error':_0x53501a['statusText']})),_0x35f7b3=new Error(_0x486fef['error']||_0x486fef['message']||_0x53501a['statusText']);if(_0x486fef['detail']!==undefined)_0x35f7b3['detail']=_0x486fef['detail'];throw _0x35f7b3;}return await _0x53501a['json']();},async 'put'(_0x3fc3b2,_0x11dd02){const _0xe18d14=await fetch(''+API_BASE+_0x3fc3b2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11dd02)});if(!_0xe18d14['ok']){const _0x1706cb=await _0xe18d14['json']()['catch'](()=>({'error':_0xe18d14['statusText']})),_0x179465=new Error(_0x1706cb['error']||_0x1706cb['message']||_0xe18d14['statusText']);if(_0x1706cb['detail']!==undefined)_0x179465['detail']=_0x1706cb['detail'];throw _0x179465;}return await _0xe18d14['json']();},async 'delete'(_0x5eaef7,_0x264372){const _0x305c9f={'method':'DELETE'};_0x264372&&(_0x305c9f['headers']={'Content-Type':'application/json'},_0x305c9f['body']=JSON['stringify'](_0x264372));const _0x16bf74=await fetch(''+API_BASE+_0x5eaef7,_0x305c9f);if(!_0x16bf74['ok']){const _0x2e3d03=await _0x16bf74['json']()['catch'](()=>({'error':_0x16bf74['statusText']})),_0x58ba81=new Error(_0x2e3d03['error']||_0x2e3d03['message']||_0x16bf74['statusText']);if(_0x2e3d03['detail']!==undefined)_0x58ba81['detail']=_0x2e3d03['detail'];throw _0x58ba81;}return await _0x16bf74['json']();},async 'getSkills'(){const _0x2491af=await fetch(API_BASE+'/skills');if(!_0x2491af['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2491af['statusText']);return await _0x2491af['json']();},async 'getSkill'(_0x13534a){const _0x103416=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x13534a));if(!_0x103416['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x103416['statusText']);return await _0x103416['json']();},async 'createSkill'(_0x2faff1){const _0x4f1b7a=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2faff1)});if(!_0x4f1b7a['ok']){const _0x1a1d96=await _0x4f1b7a['json']()['catch'](()=>({'error':_0x4f1b7a['statusText']})),_0x1170b2=new Error(_0x1a1d96['error']||_0x1a1d96['message']||_0x4f1b7a['statusText']);if(_0x1a1d96['detail']!==undefined)_0x1170b2['detail']=_0x1a1d96['detail'];throw _0x1170b2;}return await _0x4f1b7a['json']();},async 'updateSkill'(_0x4c4a9d,_0x1b7ac6){const _0x43af57=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c4a9d),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b7ac6)});if(!_0x43af57['ok']){const _0x380304=await _0x43af57['json']()['catch'](()=>({'error':_0x43af57['statusText']})),_0x58bc48=new Error(_0x380304['error']||_0x380304['message']||_0x43af57['statusText']);if(_0x380304['detail']!==undefined)_0x58bc48['detail']=_0x380304['detail'];throw _0x58bc48;}return await _0x43af57['json']();},async 'deleteSkill'(_0x1b5bcf){const _0x304678=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1b5bcf),{'method':'DELETE'});if(!_0x304678['ok']){const _0x34c4af=await _0x304678['json']()['catch'](()=>({'error':_0x304678['statusText']})),_0x286a4c=new Error(_0x34c4af['error']||_0x34c4af['message']||_0x304678['statusText']);if(_0x34c4af['detail']!==undefined)_0x286a4c['detail']=_0x34c4af['detail'];throw _0x286a4c;}return await _0x304678['json']();},async 'getSkillFile'(_0x237a34,_0x22497f){const _0x87b7a7=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x237a34)+'/files/'+_0x22497f);if(!_0x87b7a7['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x87b7a7['statusText']);return await _0x87b7a7['json']();},async 'saveSkillFile'(_0x48f82a,_0x8d6636,_0xe1521a){const _0x35245f=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x48f82a)+'/files/'+_0x8d6636,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xe1521a})});if(!_0x35245f['ok']){const _0x445f65=await _0x35245f['json']()['catch'](()=>({'error':_0x35245f['statusText']})),_0x1bae1e=new Error(_0x445f65['error']||_0x445f65['message']||_0x35245f['statusText']);if(_0x445f65['detail']!==undefined)_0x1bae1e['detail']=_0x445f65['detail'];throw _0x1bae1e;}return await _0x35245f['json']();},async 'deleteSkillFile'(_0x1ae384,_0x59b5a0){const _0x5a1b3c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1ae384)+'/files/'+_0x59b5a0,{'method':'DELETE'});if(!_0x5a1b3c['ok']){const _0x1a1028=await _0x5a1b3c['json']()['catch'](()=>({'error':_0x5a1b3c['statusText']})),_0x42b5e1=new Error(_0x1a1028['error']||_0x1a1028['message']||_0x5a1b3c['statusText']);if(_0x1a1028['detail']!==undefined)_0x42b5e1['detail']=_0x1a1028['detail'];throw _0x42b5e1;}return await _0x5a1b3c['json']();},async 'pullSkills'(){const _0x47dea8=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x47dea8['ok']){const _0x2faa87=await _0x47dea8['json']()['catch'](()=>({'error':_0x47dea8['statusText']})),_0x190a5b=new Error(_0x2faa87['error']||_0x2faa87['message']||_0x47dea8['statusText']);if(_0x2faa87['detail']!==undefined)_0x190a5b['detail']=_0x2faa87['detail'];throw _0x190a5b;}return await _0x47dea8['json']();},async 'commitSkills'(_0x54fae4,_0x1dcc2d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x1dcc2d,_0x40ba77=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x54fae4,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x40ba77['ok']){const _0x4bce4d=await _0x40ba77['json']()['catch'](()=>({'error':_0x40ba77['statusText']})),_0x5c7004=new Error(_0x4bce4d['error']||_0x4bce4d['message']||_0x40ba77['statusText']);if(_0x4bce4d['detail']!==undefined)_0x5c7004['detail']=_0x4bce4d['detail'];throw _0x5c7004;}return await _0x40ba77['json']();},async 'discardSkillsChanges'(){const _0x4b663d=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4b663d['ok']){const _0x55a82b=await _0x4b663d['json']()['catch'](()=>({'error':_0x4b663d['statusText']})),_0x293012=new Error(_0x55a82b['error']||_0x55a82b['message']||_0x4b663d['statusText']);if(_0x55a82b['detail']!==undefined)_0x293012['detail']=_0x55a82b['detail'];throw _0x293012;}return await _0x4b663d['json']();},async 'getSkillCatalog'(){const _0x2a3c76=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2a3c76['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2a3c76['statusText']);return await _0x2a3c76['json']();},async 'getImportedSkillsRegistry'(){const _0x470d29=await fetch(API_BASE+'/external-skills/registry');if(!_0x470d29['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x470d29['statusText']);return await _0x470d29['json']();},async 'importCatalogSkill'(_0x4faf84){const _0x4492f0=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x4faf84})});if(!_0x4492f0['ok']){const _0x58d37e=await _0x4492f0['json']()['catch'](()=>({'error':_0x4492f0['statusText']})),_0x10c7de=new Error(_0x58d37e['error']||_0x58d37e['message']||_0x4492f0['statusText']);if(_0x58d37e['detail']!==undefined)_0x10c7de['detail']=_0x58d37e['detail'];throw _0x10c7de;}return await _0x4492f0['json']();},async 'importSkillFromGit'(_0xbeb341,_0x3846bf,_0x554b4b='main',_0x1e7393=null){const _0x197308=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0xbeb341,'skillPath':_0x3846bf,'branch':_0x554b4b,'skillId':_0x1e7393})});if(!_0x197308['ok']){const _0x546cdb=await _0x197308['json']()['catch'](()=>({'error':_0x197308['statusText']})),_0x536b03=new Error(_0x546cdb['error']||_0x546cdb['message']||_0x197308['statusText']);if(_0x546cdb['detail']!==undefined)_0x536b03['detail']=_0x546cdb['detail'];throw _0x536b03;}return await _0x197308['json']();},async 'probeMarketplace'(_0x83c51b,_0x2b3e5a='main'){const _0x2a3afc=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x83c51b,'branch':_0x2b3e5a})});if(!_0x2a3afc['ok']){const _0x455cad=await _0x2a3afc['json']()['catch'](()=>({'error':_0x2a3afc['statusText']})),_0x3ba411=new Error(_0x455cad['error']||_0x455cad['message']||_0x2a3afc['statusText']);if(_0x455cad['detail']!==undefined)_0x3ba411['detail']=_0x455cad['detail'];throw _0x3ba411;}return await _0x2a3afc['json']();},async 'importMarketplaceBundle'(_0x49f218,_0x4430cc,_0x256344,_0x4ede12=null){const _0x6d251f=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x49f218,'branch':_0x4430cc,'bundleId':_0x256344,'selectedSkills':_0x4ede12})});if(!_0x6d251f['ok']){const _0x4a7da2=await _0x6d251f['json']()['catch'](()=>({'error':_0x6d251f['statusText']})),_0x10fd3b=new Error(_0x4a7da2['error']||_0x4a7da2['message']||_0x6d251f['statusText']);if(_0x4a7da2['detail']!==undefined)_0x10fd3b['detail']=_0x4a7da2['detail'];throw _0x10fd3b;}return await _0x6d251f['json']();},async 'importSkillFromFolder'(_0x4f2293,_0x7bce71=null){const _0xd586f8=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4f2293,'skillId':_0x7bce71})});if(!_0xd586f8['ok']){const _0x3504f5=await _0xd586f8['json']()['catch'](()=>({'error':_0xd586f8['statusText']})),_0x21e5ed=new Error(_0x3504f5['error']||_0x3504f5['message']||_0xd586f8['statusText']);if(_0x3504f5['detail']!==undefined)_0x21e5ed['detail']=_0x3504f5['detail'];throw _0x21e5ed;}return await _0xd586f8['json']();},async 'importSkillFromNpm'(_0x22980e,_0x2e3c68='latest',_0x93fe2=null,_0x18eb8e=null){const _0x1fa6c7=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x22980e,'version':_0x2e3c68,'skillId':_0x93fe2,'registry':_0x18eb8e})});if(!_0x1fa6c7['ok']){const _0x305daf=await _0x1fa6c7['json']()['catch'](()=>({'error':_0x1fa6c7['statusText']})),_0x12050c=new Error(_0x305daf['error']||_0x305daf['message']||_0x1fa6c7['statusText']);if(_0x305daf['detail']!==undefined)_0x12050c['detail']=_0x305daf['detail'];throw _0x12050c;}return await _0x1fa6c7['json']();},async 'checkSkillUpdates'(_0x26b47e){const _0x5c75f3=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26b47e)+'/check-updates',{'method':'POST'});if(!_0x5c75f3['ok']){const _0xa4c4e6=await _0x5c75f3['json']()['catch'](()=>({'error':_0x5c75f3['statusText']})),_0x4786be=new Error(_0xa4c4e6['error']||_0xa4c4e6['message']||_0x5c75f3['statusText']);if(_0xa4c4e6['detail']!==undefined)_0x4786be['detail']=_0xa4c4e6['detail'];throw _0x4786be;}return await _0x5c75f3['json']();},async 'updateExternalSkill'(_0x26fd08){const _0x506104=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26fd08)+'/update',{'method':'POST'});if(!_0x506104['ok']){const _0x5070cb=await _0x506104['json']()['catch'](()=>({'error':_0x506104['statusText']})),_0x3413ea=new Error(_0x5070cb['error']||_0x5070cb['message']||_0x506104['statusText']);if(_0x5070cb['detail']!==undefined)_0x3413ea['detail']=_0x5070cb['detail'];throw _0x3413ea;}return await _0x506104['json']();},async 'updateSkillFlags'(_0xe9b717,_0x308bc1){const _0x392e42=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0xe9b717)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x308bc1})});if(!_0x392e42['ok']){const _0x17a012=await _0x392e42['json']()['catch'](()=>({'error':_0x392e42['statusText']})),_0x431579=new Error(_0x17a012['error']||_0x17a012['message']||_0x392e42['statusText']);if(_0x17a012['detail']!==undefined)_0x431579['detail']=_0x17a012['detail'];throw _0x431579;}return await _0x392e42['json']();},async 'removeFromImportedRegistry'(_0x525b7c){const _0x48ee06=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x525b7c)+'/registry',{'method':'DELETE'});if(!_0x48ee06['ok']){const _0x41511b=await _0x48ee06['json']()['catch'](()=>({'error':_0x48ee06['statusText']})),_0x4e78dc=new Error(_0x41511b['error']||_0x41511b['message']||_0x48ee06['statusText']);if(_0x41511b['detail']!==undefined)_0x4e78dc['detail']=_0x41511b['detail'];throw _0x4e78dc;}return await _0x48ee06['json']();},async 'getTeams'(){const _0x310db5=await fetch(API_BASE+'/teams');if(!_0x310db5['ok']){const _0x43098b=await _0x310db5['json']()['catch'](()=>({'message':_0x310db5['statusText']}));throw new Error(_0x43098b['message']||'Failed\x20to\x20get\x20teams');}return await _0x310db5['json']();},async 'getTeam'(_0x488878){const _0x5c9012=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x488878));if(!_0x5c9012['ok']){const _0x14f3c4=await _0x5c9012['json']()['catch'](()=>({'message':_0x5c9012['statusText']}));throw new Error(_0x14f3c4['message']||'Failed\x20to\x20get\x20team');}return await _0x5c9012['json']();},async 'createTeam'(_0x5b1d23){const _0x15fd32=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b1d23)});if(!_0x15fd32['ok']){const _0x5edf0e=await _0x15fd32['json']()['catch'](()=>({'message':_0x15fd32['statusText']}));throw new Error(_0x5edf0e['message']||'Failed\x20to\x20create\x20team');}return await _0x15fd32['json']();},async 'updateTeam'(_0x23203a,_0x3837ae){const _0x4431d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x23203a),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3837ae)});if(!_0x4431d1['ok']){const _0x1733c4=await _0x4431d1['json']()['catch'](()=>({'message':_0x4431d1['statusText']}));throw new Error(_0x1733c4['message']||'Failed\x20to\x20update\x20team');}return await _0x4431d1['json']();},async 'deleteTeam'(_0x51105d){const _0x367fac=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x51105d),{'method':'DELETE'});if(!_0x367fac['ok']){const _0x327993=await _0x367fac['json']()['catch'](()=>({'message':_0x367fac['statusText']}));throw new Error(_0x327993['message']||'Failed\x20to\x20delete\x20team');}return await _0x367fac['json']();},async 'addTeamMember'(_0x443512,_0x59d3cc){const _0x11e4d1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x443512)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x59d3cc})});if(!_0x11e4d1['ok']){const _0x356175=await _0x11e4d1['json']()['catch'](()=>({'message':_0x11e4d1['statusText']}));throw new Error(_0x356175['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x11e4d1['json']();},async 'removeTeamMember'(_0x14edf8,_0x58b6f5){const _0x44c6e8=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x14edf8)+'/members/'+encodeURIComponent(_0x58b6f5),{'method':'DELETE'});if(!_0x44c6e8['ok']){const _0x2d2245=await _0x44c6e8['json']()['catch'](()=>({'message':_0x44c6e8['statusText']}));throw new Error(_0x2d2245['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x44c6e8['json']();},async 'getBindings'(_0x2ae079={}){const _0x535efb=new URLSearchParams();if(_0x2ae079['resource_type'])_0x535efb['set']('resource_type',_0x2ae079['resource_type']);if(_0x2ae079['resource_id'])_0x535efb['set']('resource_id',_0x2ae079['resource_id']);if(_0x2ae079['subject_type'])_0x535efb['set']('subject_type',_0x2ae079['subject_type']);if(_0x2ae079['subject_id'])_0x535efb['set']('subject_id',_0x2ae079['subject_id']);const _0x3d2d6e=_0x535efb['toString'](),_0x5d1eea=await fetch(API_BASE+'/bindings'+(_0x3d2d6e?'?'+_0x3d2d6e:''));if(!_0x5d1eea['ok']){const _0x563b1a=await _0x5d1eea['json']()['catch'](()=>({'message':_0x5d1eea['statusText']}));throw new Error(_0x563b1a['message']||'Failed\x20to\x20get\x20bindings');}return await _0x5d1eea['json']();},async 'createBinding'(_0x12c7ee){const _0x463a54=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x12c7ee)});if(!_0x463a54['ok']){const _0xdef47c=await _0x463a54['json']()['catch'](()=>({'message':_0x463a54['statusText']}));throw new Error(_0xdef47c['message']||'Failed\x20to\x20create\x20binding');}return await _0x463a54['json']();},async 'updateBinding'(_0x49a29b,_0x53eb94){const _0x194f52=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x49a29b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x53eb94)});if(!_0x194f52['ok']){const _0x3db875=await _0x194f52['json']()['catch'](()=>({'message':_0x194f52['statusText']}));throw new Error(_0x3db875['message']||'Failed\x20to\x20update\x20binding');}return await _0x194f52['json']();},async 'deleteBinding'(_0x6ddad){const _0x4af93b=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x6ddad),{'method':'DELETE'});if(!_0x4af93b['ok']){const _0xfcdf12=await _0x4af93b['json']()['catch'](()=>({'message':_0x4af93b['statusText']}));throw new Error(_0xfcdf12['message']||'Failed\x20to\x20delete\x20binding');}return await _0x4af93b['json']();},async 'getRoleDefinitions'(){const _0x2cb92e=await fetch(API_BASE+'/roles');if(!_0x2cb92e['ok']){const _0x9756e9=await _0x2cb92e['json']()['catch'](()=>({'message':_0x2cb92e['statusText']}));throw new Error(_0x9756e9['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2cb92e['json']();},async 'getRoleDefinition'(_0x1b051f){const _0x3a6a2a=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1b051f));if(!_0x3a6a2a['ok']){const _0x49b658=await _0x3a6a2a['json']()['catch'](()=>({'message':_0x3a6a2a['statusText']}));throw new Error(_0x49b658['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x3a6a2a['json']();},async 'createRoleDefinition'(_0x33a108){const _0x442291=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x33a108)});if(!_0x442291['ok']){const _0x43263d=await _0x442291['json']()['catch'](()=>({'message':_0x442291['statusText']}));throw new Error(_0x43263d['message']||_0x43263d['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x442291['json']();},async 'updateRoleDefinition'(_0x1e6683,_0xe65239){const _0x45a5c0=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1e6683),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe65239)});if(!_0x45a5c0['ok']){const _0x6500f4=await _0x45a5c0['json']()['catch'](()=>({'message':_0x45a5c0['statusText']}));throw new Error(_0x6500f4['message']||_0x6500f4['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x45a5c0['json']();},async 'deleteRoleDefinition'(_0x4945fd){const _0x140e6b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4945fd),{'method':'DELETE'});if(!_0x140e6b['ok']){const _0x290bef=await _0x140e6b['json']()['catch'](()=>({'message':_0x140e6b['statusText']}));throw new Error(_0x290bef['message']||_0x290bef['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x140e6b['json']();},async 'getAvailablePermissions'(){const _0x9dede0=await fetch(API_BASE+'/roles/available-permissions');if(!_0x9dede0['ok']){const _0x3a081c=await _0x9dede0['json']()['catch'](()=>({'message':_0x9dede0['statusText']}));throw new Error(_0x3a081c['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x9dede0['json']();},async 'getGitProviderAllowedTeams'(_0x31f3b3){const _0x3b28c5=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x31f3b3)+'/allowed-teams');if(!_0x3b28c5['ok']){const _0x186185=await _0x3b28c5['json']()['catch'](()=>({'message':_0x3b28c5['statusText']}));throw new Error(_0x186185['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3b28c5['json']();},async 'setGitProviderAllowedTeams'(_0x3b0a3f,_0x3eb949){const _0x1cccc1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3b0a3f)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x3eb949})});if(!_0x1cccc1['ok']){const _0x33b5e4=await _0x1cccc1['json']()['catch'](()=>({'message':_0x1cccc1['statusText']}));throw new Error(_0x33b5e4['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x1cccc1['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 _0xe408c6=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4f19c7=>{_0x4f19c7['el']['style']['bottom']=_0xe408c6+'px';const _0x54495a=_0x4f19c7['el']['offsetHeight']||toastState['defaultHeight'];_0xe408c6+=_0x54495a+toastState['gap'];});});}function removeToastById(_0x28857c){const _0x2de654=toastState['toasts']['findIndex'](_0x1760ae=>_0x1760ae['id']===_0x28857c);if(_0x2de654===-0x1)return;const _0x3b9501=toastState['toasts'][_0x2de654];if(_0x3b9501['timeoutId'])clearTimeout(_0x3b9501['timeoutId']);_0x3b9501['el']['classList']['remove']('show'),setTimeout(()=>_0x3b9501['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2de654,0x1),repositionAllToasts();}function registerToast(_0x3a67bc){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x3a67bc),repositionAllToasts(),_0x3a67bc['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(_0x421d63){if(_0x421d63===null||_0x421d63===undefined)return'';return String(_0x421d63)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x2d79e8,_0x1c6188){if(_0x2d79e8&&typeof _0x2d79e8==='object'&&!Array['isArray'](_0x2d79e8))return{'code':typeof _0x2d79e8['text']==='string'?_0x2d79e8['text']:'','language':typeof _0x2d79e8['lang']==='string'?_0x2d79e8['lang']:''};return{'code':typeof _0x2d79e8==='string'?_0x2d79e8:'','language':typeof _0x1c6188==='string'?_0x1c6188:''};}function buildMermaidBlock(_0x394d40){const _0xe98077=String(_0x394d40||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0xe98077))+'\x22>'+escapeHtmlValue(_0xe98077)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x5509e0=new marked['Renderer'](),_0x4ac7da=_0x5509e0['code']['bind'](_0x5509e0);return _0x5509e0['code']=function(_0x2af773,_0x2eaba3,..._0x408687){const {code:_0x5ecbb2,language:_0x496d12}=getMarkdownCodeBlockPayload(_0x2af773,_0x2eaba3),_0x280a25=String(_0x496d12||'')['trim']()['toLowerCase']();if(_0x280a25==='mermaid')return buildMermaidBlock(_0x5ecbb2);const _0x367b4f=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x367b4f&&_0x280a25)try{const _0xb4ba68=_0x367b4f['getLanguage'](_0x280a25)?_0x280a25:'plaintext',_0x428dcf=_0x367b4f['highlight'](_0x5ecbb2,{'language':_0xb4ba68})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x280a25)+'\x22>'+_0x428dcf+'</code></pre>';}catch(_0xde0ddc){console['error']('Syntax\x20highlighting\x20error:',_0xde0ddc);}return _0x4ac7da(_0x2af773,_0x2eaba3,..._0x408687);},sharedMarkedRenderer=_0x5509e0,_0x5509e0;}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 _0x34d3f7=window['mermaid'];if(!_0x34d3f7||typeof _0x34d3f7['initialize']!=='function')return _0x34d3f7||null;return _0x34d3f7['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x34d3f7;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x2c48c4,_0x2380f4)=>{const _0x40b8e2=()=>_0x2c48c4(configureMermaidInstance()),_0x19446b=()=>{mermaidLoadPromise=null,_0x2380f4(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x191e21=document['getElementById'](MERMAID_SCRIPT_ID);!_0x191e21&&(_0x191e21=document['createElement']('script'),_0x191e21['id']=MERMAID_SCRIPT_ID,_0x191e21['src']=MERMAID_SCRIPT_SRC,_0x191e21['async']=!![],document['head']['appendChild'](_0x191e21));if(window['mermaid']){_0x40b8e2();return;}_0x191e21['addEventListener']('load',_0x40b8e2,{'once':!![]}),_0x191e21['addEventListener']('error',_0x19446b,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x307e0b){const _0x2bbcf6=_0x307e0b['getAttribute']('data-mermaid-source');if(!_0x2bbcf6)return null;let _0x336bfd=_0x2bbcf6;try{_0x336bfd=decodeURIComponent(_0x2bbcf6);}catch{}return _0x307e0b['textContent']=_0x336bfd,_0x307e0b['removeAttribute']('data-processed'),_0x307e0b['removeAttribute']('aria-roledescription'),_0x307e0b['removeAttribute']('role'),_0x307e0b['removeAttribute']('aria-label'),_0x336bfd;}function collectMermaidNodes(_0x4ac068,_0x3342bd){if(!(_0x4ac068 instanceof Element))return;_0x4ac068['matches']('.mermaid[data-mermaid-source]')&&_0x3342bd['add'](_0x4ac068),_0x4ac068['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f2cb9=>{_0x3342bd['add'](_0x5f2cb9);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3457a7=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x1206cf=>setTimeout(_0x1206cf,0x0);_0x3457a7(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x1fbf75=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x1fbf75);});});}function queueMermaidRender(_0x455046){const _0x3ef73c=new Set();_0x455046 instanceof Document||_0x455046 instanceof DocumentFragment?_0x455046['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x2a4d34=>_0x3ef73c['add'](_0x2a4d34)):collectMermaidNodes(_0x455046,_0x3ef73c);if(_0x3ef73c['size']===0x0)return;_0x3ef73c['forEach'](_0x2d4190=>pendingMermaidNodes['add'](_0x2d4190)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x41a111=Array['from'](pendingMermaidNodes)['filter'](_0x50228c=>_0x50228c['isConnected']);pendingMermaidNodes['clear']();if(_0x41a111['length']===0x0)return;const _0x256015=await loadMermaid();if(!_0x256015)return;configureMermaidInstance();const _0x50b689=getMermaidTheme();for(const _0x27fe25 of _0x41a111){const _0xd44390=_0x27fe25['getAttribute']('data-mermaid-source');if(!_0xd44390)continue;const _0x522a93=_0x27fe25['getAttribute']('data-processed')==='true';if(_0x522a93&&_0x27fe25['dataset']['mermaidTheme']===_0x50b689)continue;restoreMermaidSource(_0x27fe25);try{if(typeof _0x256015['run']==='function')await _0x256015['run']({'nodes':[_0x27fe25]});else typeof _0x256015['init']==='function'&&_0x256015['init'](undefined,[_0x27fe25]);_0x27fe25['dataset']['mermaidTheme']=_0x50b689,delete _0x27fe25['dataset']['mermaidError'];}catch(_0x25a0cd){console['error']('Mermaid\x20render\x20failed:',_0x25a0cd),restoreMermaidSource(_0x27fe25),_0x27fe25['dataset']['mermaidError']='true',delete _0x27fe25['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3de15b=>{_0x3de15b['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3de15b);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x47d08f=>{_0x47d08f['forEach'](_0x3cf580=>{_0x3cf580['addedNodes']['forEach'](_0x5422cc=>{_0x5422cc['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x5422cc);});});}),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'(_0x41d91b){const _0x480a74=new Date(_0x41d91b),_0x3bbd83=new Date(),_0x468d59=_0x3bbd83-_0x480a74,_0x544ae1=Math['floor'](_0x468d59/0x3e8),_0x5b153c=Math['floor'](_0x544ae1/0x3c),_0x4c1082=Math['floor'](_0x5b153c/0x3c),_0x10d9c3=Math['floor'](_0x4c1082/0x18);if(_0x544ae1<0x3c)return'now';if(_0x5b153c<0x3c)return _0x5b153c+'m\x20ago';if(_0x4c1082<0x18)return _0x4c1082+'h\x20ago';return _0x10d9c3+'d\x20ago';},'getStatusIcon'(_0x2c4035){switch(_0x2c4035){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x34d555){switch(_0x34d555){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'(_0x222621,_0x42a1ce=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x49a6b4={};_0x49a6b4['text/plain']=new Blob([_0x222621],{'type':'text/plain'});_0x42a1ce&&(_0x49a6b4['text/html']=new Blob([_0x42a1ce],{'type':'text/html'}));const _0x47fa48=new ClipboardItem(_0x49a6b4);return await navigator['clipboard']['write']([_0x47fa48]),!![];}catch(_0x35ecc3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x35ecc3);}try{const _0x242f75=_0x2648fd=>{_0x2648fd['preventDefault'](),_0x2648fd['clipboardData']['setData']('text/plain',_0x222621),_0x42a1ce&&_0x2648fd['clipboardData']['setData']('text/html',_0x42a1ce);};document['addEventListener']('copy',_0x242f75);const _0x5eb457=document['execCommand']('copy');document['removeEventListener']('copy',_0x242f75);if(_0x5eb457)return!![];}catch(_0x3db46e){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x3db46e);}try{const _0x33a471=document['createElement']('textarea');_0x33a471['value']=_0x222621,_0x33a471['style']['position']='fixed',_0x33a471['style']['opacity']='0',_0x33a471['style']['pointerEvents']='none',document['body']['appendChild'](_0x33a471),_0x33a471['select']();const _0x51ae2b=document['execCommand']('copy');return document['body']['removeChild'](_0x33a471),_0x51ae2b;}catch(_0x482671){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x482671),![];}},'showToast'(_0x26ef86,_0x5f577b='info'){const _0x20fa1a=getNextToastId(),_0x42d080=document['createElement']('div');_0x42d080['className']='toast\x20toast-'+_0x5f577b,_0x42d080['textContent']=_0x26ef86,_0x42d080['dataset']['toastId']=_0x20fa1a,document['body']['appendChild'](_0x42d080);const _0x17c5ae=_0x5f577b==='error'?0x2710:0xbb8,_0x5030e1=setTimeout(()=>{removeToastById(_0x20fa1a);},_0x17c5ae),_0x3c7714={'id':_0x20fa1a,'el':_0x42d080,'timeoutId':_0x5030e1};return registerToast(_0x3c7714),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x42d080['classList']['add']('show');});}),_0x20fa1a;},'showError'(_0x4c4341){console['error'](_0x4c4341);const _0x4ff189=typeof _0x4c4341==='string'?_0x4c4341:_0x4c4341['message']||'An\x20error\x20occurred';this['showToast'](_0x4ff189,'error');},'showSuccess'(_0x2e4e23){this['showToast'](_0x2e4e23,'success');},'capitalize'(_0x347320){if(!_0x347320)return'';return _0x347320['charAt'](0x0)['toUpperCase']()+_0x347320['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x47000f){return escapeHtmlValue(_0x47000f);},'ansiToHtml'(_0x23b0e0){if(_0x23b0e0===null||_0x23b0e0===undefined)return'';let _0x2a747d=this['escapeHtml'](_0x23b0e0);const _0x22f154={'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'},_0x137e3d={'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 _0x12b9e3=0x0;return _0x2a747d=_0x2a747d['replace'](/\x1b\[([0-9;]*)m/g,(_0x208646,_0x51473f)=>{if(!_0x51473f||_0x51473f==='0'){const _0xaa3c42='</span>'['repeat'](_0x12b9e3);return _0x12b9e3=0x0,_0xaa3c42;}const _0x5eb5b2=_0x51473f['split'](';'),_0x3e4261=[];for(const _0x26aa98 of _0x5eb5b2){if(_0x26aa98==='1')_0x3e4261['push']('font-weight:bold');else{if(_0x26aa98==='2')_0x3e4261['push']('opacity:0.7');else{if(_0x26aa98==='3')_0x3e4261['push']('font-style:italic');else{if(_0x26aa98==='4')_0x3e4261['push']('text-decoration:underline');else{if(_0x26aa98==='9')_0x3e4261['push']('text-decoration:line-through');else{if(_0x22f154[_0x26aa98])_0x3e4261['push']('color:'+_0x22f154[_0x26aa98]);else{if(_0x137e3d[_0x26aa98])_0x3e4261['push']('background-color:'+_0x137e3d[_0x26aa98]);}}}}}}}if(_0x3e4261['length']>0x0)return _0x12b9e3++,'<span\x20style=\x22'+_0x3e4261['join'](';')+'\x22>';return'';}),_0x2a747d+='</span>'['repeat'](_0x12b9e3),_0x2a747d=_0x2a747d['replace'](/\\u001b\[([0-9;]*)m/g,(_0x235b39,_0x356d68)=>{if(!_0x356d68||_0x356d68==='0')return'';const _0x5cb999=_0x356d68['split'](';'),_0x5e3532=[];for(const _0x363084 of _0x5cb999){if(_0x363084==='1')_0x5e3532['push']('font-weight:bold');else{if(_0x22f154[_0x363084])_0x5e3532['push']('color:'+_0x22f154[_0x363084]);else{if(_0x137e3d[_0x363084])_0x5e3532['push']('background-color:'+_0x137e3d[_0x363084]);}}}if(_0x5e3532['length']>0x0)return'<span\x20style=\x22'+_0x5e3532['join'](';')+'\x22>';return'';}),_0x2a747d;},'showModal'({title:_0x172c94,content:_0x4400df,buttons:buttons=[]}){const _0x371e1a='\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'](_0x172c94)+'</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'+_0x4400df+'\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']((_0x121503,_0xe3ceed)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x121503['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0xe3ceed+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x121503['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',_0x4290b7=document['createElement']('div');_0x4290b7['id']='utils-modal',_0x4290b7['className']='modal',_0x4290b7['innerHTML']=_0x371e1a,document['body']['appendChild'](_0x4290b7);const _0x51b66d=document['getElementById']('utils-modal-close');_0x51b66d&&_0x51b66d['addEventListener']('click',()=>this['hideModal']());const _0x51ebb0=_0x4290b7['querySelectorAll']('[data-btn-index]');_0x51ebb0['forEach'](_0x1d3c42=>{const _0x13e87e=parseInt(_0x1d3c42['dataset']['btnIndex']);buttons[_0x13e87e]?.['onClick']&&_0x1d3c42['addEventListener']('click',buttons[_0x13e87e]['onClick']);});const _0xba7c87=document['getElementById']('utils-modal-overlay');_0xba7c87&&_0xba7c87['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x32feb2=document['getElementById']('utils-modal');_0x32feb2&&_0x32feb2['remove']();},'parseKeyValuePairs'(_0x3fb9a2){const _0x307e8b={};if(!_0x3fb9a2)return _0x307e8b;return _0x3fb9a2['split'](/\r?\n/)['map'](_0x5ef0ce=>_0x5ef0ce['trim']())['filter'](Boolean)['forEach'](_0x1d87b1=>{const _0x426371=_0x1d87b1['indexOf']('=');if(_0x426371>0x0){const _0x2146ff=_0x1d87b1['slice'](0x0,_0x426371)['trim'](),_0x43e440=_0x1d87b1['slice'](_0x426371+0x1)['trim']();if(_0x2146ff)_0x307e8b[_0x2146ff]=_0x43e440;}}),_0x307e8b;},'debounce'(_0x4cd06b,_0x268790=0xfa){let _0x440117=null;return(..._0x34ad65)=>{clearTimeout(_0x440117),_0x440117=setTimeout(()=>_0x4cd06b['apply'](this,_0x34ad65),_0x268790);};},'formatTimestamp'(_0x1f4b32){if(!_0x1f4b32)return'N/A';const _0x1c3fef=new Date(_0x1f4b32);return _0x1c3fef['toLocaleDateString']()+'\x20'+_0x1c3fef['toLocaleTimeString']();},'getQueryParams'(){const _0x3b4e42=new URLSearchParams(window['location']['search']),_0x401593={};for(const [_0x39fbcb,_0xe61a6b]of _0x3b4e42){_0x401593[_0x39fbcb]=_0xe61a6b;}return _0x401593;},'formatDuration'(_0x3e0d33,_0x445b97){if(!_0x3e0d33)return'N/A';const _0x375355=new Date(_0x3e0d33),_0x368f01=_0x445b97?new Date(_0x445b97):new Date(),_0x550a43=_0x368f01-_0x375355;if(_0x550a43<0x0)return'0s';const _0x46e784=Math['floor'](_0x550a43/0x3e8),_0x46ecd5=Math['floor'](_0x46e784/0x3c),_0x56c039=Math['floor'](_0x46ecd5/0x3c),_0x571da4=Math['floor'](_0x56c039/0x18);if(_0x46e784<0x3c)return _0x46e784+'s';if(_0x46ecd5<0x3c)return _0x46ecd5+'m\x20'+_0x46e784%0x3c+'s';if(_0x56c039<0x18)return _0x56c039+'h\x20'+_0x46ecd5%0x3c+'m\x20'+_0x46e784%0x3c+'s';return _0x571da4+'d\x20'+_0x56c039%0x18+'h\x20'+_0x46ecd5%0x3c+'m';},'renderMarkdown'(_0x2c9e17,_0x2ac7d2={}){if(!_0x2c9e17)return'';_0x2c9e17=this['rewriteAttachmentLinks'](_0x2c9e17,_0x2ac7d2),_0x2c9e17=this['rewriteColorSyntax'](_0x2c9e17);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x2c9e17);}catch(_0x2ea72f){return console['error']('Markdown\x20parsing\x20error:',_0x2ea72f),this['renderMarkdownFallback'](_0x2c9e17,_0x2ac7d2);}},'rewriteAttachmentLinks'(_0x629bc5,_0x41dc5c={}){const _0x46a46b=typeof _0x41dc5c['resolveAttachmentUrl']==='function'?_0x41dc5c['resolveAttachmentUrl']:_0x41dc5c['taskId']?_0x43d3d3=>API_BASE+'/tasks/'+_0x41dc5c['taskId']+'/attachments/'+encodeURIComponent(_0x43d3d3):null;if(!_0x46a46b)return _0x629bc5;return String(_0x629bc5)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x348bef,_0x50595b)=>{const _0x18d3db=String(_0x50595b||'')['trim']();if(!_0x18d3db)return _0x348bef;let _0x40b60e=_0x18d3db;try{_0x40b60e=decodeURIComponent(_0x18d3db);}catch{}const _0x372632=_0x46a46b(_0x40b60e);if(!_0x372632)return _0x348bef;return']('+_0x372632+')';});},'rewriteColorSyntax'(_0x186798){if(!_0x186798)return _0x186798;return String(_0x186798)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x12c87e,_0x403e1c,_0x56f372)=>{const _0x4d19ec=this['rewriteColorSyntax'](_0x56f372);return'<span\x20style=\x22color:\x20'+_0x403e1c+'\x22>'+_0x4d19ec+'</span>';});},'renderMarkdownFallback'(_0x5209d2,_0x24bc4d={}){if(!_0x5209d2)return'';_0x5209d2=_0x5209d2['replace'](/\r\n/g,'\x0a'),_0x5209d2=_0x5209d2['replace'](/\r/g,'\x0a'),_0x5209d2=this['rewriteAttachmentLinks'](_0x5209d2,_0x24bc4d);let _0x3b5dd3=this['escapeHtml'](_0x5209d2);return _0x3b5dd3=_0x3b5dd3['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x3b5dd3=_0x3b5dd3['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x3b5dd3=_0x3b5dd3['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x3b5dd3=_0x3b5dd3['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x3b5dd3=_0x3b5dd3['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x3b5dd3=_0x3b5dd3['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x3b5dd3=_0x3b5dd3['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x3b5dd3=_0x3b5dd3['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n\n/g,'</p><p>'),_0x3b5dd3=_0x3b5dd3['replace'](/\n/g,'<br>'),'<p>'+_0x3b5dd3+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x923f6d=new Uint8Array(0x10);crypto['getRandomValues'](_0x923f6d),_0x923f6d[0x6]=_0x923f6d[0x6]&0xf|0x40,_0x923f6d[0x8]=_0x923f6d[0x8]&0x3f|0x80;const _0x5115bb=Array['from'](_0x923f6d,_0x354249=>_0x354249['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5115bb['slice'](0x0,0x8)+'-'+_0x5115bb['slice'](0x8,0xc)+'-'+_0x5115bb['slice'](0xc,0x10)+'-'+_0x5115bb['slice'](0x10,0x14)+'-'+_0x5115bb['slice'](0x14);}};export class CustomSelect{constructor(_0x919831,_0x463a7f={}){this['nativeSelect']=_0x919831,this['options']=_0x463a7f,this['isOpen']=![],this['selectedValue']=_0x919831['value']||'',this['searchable']=_0x463a7f['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x4c58ff=document['createElement']('div');_0x4c58ff['className']='custom-select';const _0x518ebc=document['createElement']('div');_0x518ebc['className']='custom-select-trigger',_0x518ebc['setAttribute']('tabindex','0'),_0x518ebc['setAttribute']('role','button'),_0x518ebc['setAttribute']('aria-haspopup','listbox');const _0x3c05ba=document['createElement']('span');_0x3c05ba['className']='custom-select-trigger-text';const _0x512fe8=document['createElement']('span');_0x512fe8['className']='custom-select-arrow',_0x512fe8['textContent']='▼',_0x518ebc['appendChild'](_0x3c05ba),_0x518ebc['appendChild'](_0x512fe8);const _0x241d1f=document['createElement']('div');_0x241d1f['className']='custom-select-dropdown',_0x241d1f['setAttribute']('role','listbox');if(this['searchable']){const _0x360cf9=document['createElement']('div');_0x360cf9['className']='custom-select-search';const _0x1e0533=document['createElement']('input');_0x1e0533['type']='text',_0x1e0533['className']='custom-select-search-input',_0x1e0533['placeholder']='Type\x20to\x20search...',_0x1e0533['setAttribute']('aria-label','Search\x20options'),_0x1e0533['addEventListener']('input',_0x4e75e3=>{this['searchQuery']=_0x4e75e3['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x1e0533['addEventListener']('keydown',_0x49e84e=>{if(_0x49e84e['key']==='Escape')_0x49e84e['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x49e84e['key']==='Enter'){_0x49e84e['preventDefault'](),_0x49e84e['stopPropagation']();const _0xc39400=_0x241d1f['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0xc39400){const _0xbd42f4=_0xc39400['getAttribute']('data-value');this['select'](_0xbd42f4);}}}}),_0x360cf9['appendChild'](_0x1e0533),_0x241d1f['appendChild'](_0x360cf9),this['searchInput']=_0x1e0533;}const _0x56a7a6=document['createElement']('div');_0x56a7a6['className']='custom-select-options',_0x241d1f['appendChild'](_0x56a7a6),_0x4c58ff['appendChild'](_0x518ebc),_0x4c58ff['appendChild'](_0x241d1f),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x4c58ff,this['nativeSelect']),this['wrapper']=_0x4c58ff,this['trigger']=_0x518ebc,this['triggerText']=_0x3c05ba,this['dropdown']=_0x241d1f,this['optionsContainer']=_0x56a7a6,_0x518ebc['addEventListener']('click',()=>this['toggle']()),_0x518ebc['addEventListener']('keydown',_0x3a20a5=>this['handleKeydown'](_0x3a20a5)),document['addEventListener']('click',_0x127481=>{!_0x4c58ff['contains'](_0x127481['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x1d486a=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x1d486a['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x411c08=new MutationObserver(()=>{this['updateDisabledState']();});_0x411c08['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x5edfe9=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x5edfe9['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x83351d=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x83351d),this['trigger']['setAttribute']('aria-disabled',_0x83351d?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x83351d?'-1':'0'),_0x83351d&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x90593c=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x4da6c4=_0x90593c['filter'](_0x1f13e=>!_0x1f13e['disabled']&&!_0x1f13e['hidden']);_0x90593c['forEach']((_0x434c81,_0x19c10d)=>{const _0x5b7b89=document['createElement']('div');_0x5b7b89['className']='custom-select-option',_0x5b7b89['textContent']=_0x434c81['textContent'],_0x5b7b89['setAttribute']('data-value',_0x434c81['value']),_0x5b7b89['setAttribute']('data-index',_0x19c10d),_0x5b7b89['setAttribute']('role','option'),_0x434c81['disabled']?_0x5b7b89['classList']['add']('disabled'):_0x5b7b89['addEventListener']('click',()=>this['select'](_0x434c81['value'])),_0x434c81['value']===this['selectedValue']&&_0x5b7b89['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x5b7b89),this['allOptions']['push']({'element':_0x5b7b89,'text':_0x434c81['textContent']['toLowerCase'](),'value':_0x434c81['value'],'disabled':_0x434c81['disabled']});});if(this['searchable']&&this['searchInput']){const _0x13369d=this['searchInput']['parentElement'];_0x4da6c4['length']>0x3?_0x13369d['style']['display']='':_0x13369d['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x4f9a76=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x20184e=>{if(!_0x4f9a76||_0x20184e['disabled'])_0x20184e['element']['style']['display']='';else{const _0x2ae4e7=_0x20184e['text']['includes'](_0x4f9a76);_0x20184e['element']['style']['display']=_0x2ae4e7?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0xc60e15){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0xc60e15,this['nativeSelect']['value']=_0xc60e15;const _0x484460=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x484460),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x458e0e=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x458e0e&&(this['triggerText']['textContent']=_0x458e0e['textContent'],_0x458e0e['disabled']||_0x458e0e['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3505b0=>{_0x3505b0['getAttribute']('data-value')===this['selectedValue']?_0x3505b0['classList']['add']('selected'):_0x3505b0['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 _0x41d82a=window['getComputedStyle'](this['dropdown']);if(_0x41d82a['position']==='fixed'){const _0x5918d1=this['trigger']['getBoundingClientRect'](),_0x3e89d4=parseInt(_0x41d82a['maxHeight'])||0xc8,_0x33dd12=window['innerHeight'],_0x39096a=_0x33dd12-_0x5918d1['bottom'],_0x20c1ea=_0x5918d1['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x16acb5;_0x39096a<_0x3e89d4&&_0x20c1ea>_0x39096a?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x33dd12-_0x5918d1['top']+'px',_0x16acb5=Math['min'](_0x3e89d4,_0x20c1ea-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x5918d1['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x16acb5=Math['min'](_0x3e89d4,_0x39096a-0xa),this['dropdown']['style']['maxHeight']=_0x16acb5+'px');if(this['optionsContainer']){let _0x116345=_0x16acb5;if(this['searchInput']){const _0x5534ee=this['searchInput']['parentElement'];_0x5534ee&&(_0x116345-=_0x5534ee['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x116345)+'px';}this['dropdown']['style']['left']=_0x5918d1['left']+'px',this['dropdown']['style']['width']=_0x5918d1['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x44bf77=this['searchInput']['parentElement'];_0x44bf77&&_0x44bf77['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'](_0x150bdb){if(this['nativeSelect']['disabled'])return;if(_0x150bdb['key']==='Enter'||_0x150bdb['key']==='\x20')_0x150bdb['preventDefault'](),this['toggle']();else _0x150bdb['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x58db7f='\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',_0x58db7f),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x2677b6=document['getElementById']('confirm-dialog-close'),_0x53becd=document['getElementById']('confirm-dialog-cancel'),_0x1767a8=document['getElementById']('confirm-dialog-confirm'),_0x4d7176=this['_modal']['querySelector']('.modal-overlay');_0x2677b6['addEventListener']('click',()=>this['_resolve'](![])),_0x53becd['addEventListener']('click',()=>this['_resolve'](![])),_0x1767a8['addEventListener']('click',()=>this['_resolve'](!![])),_0x4d7176['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x64230=>{if(_0x64230['key']==='Escape')_0x64230['preventDefault'](),this['_resolve'](![]);else _0x64230['key']==='Enter'&&(_0x64230['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x152b50,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x64604c=>{this['_resolvePromise']=_0x64604c,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x152b50;const _0x3d59c4=document['getElementById']('confirm-dialog-cancel'),_0x35cec2=document['getElementById']('confirm-dialog-confirm');_0x3d59c4['textContent']=cancelText,_0x35cec2['textContent']=confirmText,_0x35cec2['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x35cec2['focus']();});},'_resolve'(_0x1d80d1){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x1d80d1),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0xb14834,_0x389c4f={}){this['container']=_0xb14834,this['options']={'placeholder':_0x389c4f['placeholder']||'Type\x20to\x20search...','maxItems':_0x389c4f['maxItems']||0x64,'loadItems':_0x389c4f['loadItems']||(async()=>[]),'renderItem':_0x389c4f['renderItem']||(_0x26b262=>({'primary':String(_0x26b262),'secondary':''})),'onSelect':_0x389c4f['onSelect']||(()=>{}),'filterItems':_0x389c4f['filterItems']||null,'getItemValue':_0x389c4f['getItemValue']||(_0x484c82=>_0x484c82),'sortItems':_0x389c4f['sortItems']||null,'debounceMs':_0x389c4f['debounceMs']||0xc8,'minCharsForSearch':_0x389c4f['minCharsForSearch']||0x0,'emptyMessage':_0x389c4f['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x389c4f['loadingMessage']||'Loading...','preload':_0x389c4f['preload']!==![],'searchMode':_0x389c4f['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',_0x3c431a=>this['onBlur'](_0x3c431a)),this['input']['addEventListener']('input',_0xd4a5f7=>this['onInput'](_0xd4a5f7)),this['input']['addEventListener']('keydown',_0x126f21=>this['onKeydown'](_0x126f21)),this['clearBtn']['addEventListener']('mousedown',_0x1b3292=>{_0x1b3292['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4477bd=>{_0x4477bd['preventDefault']();}),document['addEventListener']('click',_0x1c7445=>{!this['wrapper']['contains'](_0x1c7445['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(_0x318d46){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x318d46);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x4fca3e){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x399e7c){const _0x1598e5=_0x399e7c['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x1598e5);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x1598e5):this['loadAndShow'](_0x1598e5);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x140a40){switch(_0x140a40['key']){case'ArrowDown':_0x140a40['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x140a40['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x140a40['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x140a40['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x26ec6f){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x228b5f=this['selectedIndex']+_0x26ec6f;if(_0x228b5f>=0x0&&_0x228b5f<this['filteredItems']['length']){this['selectedIndex']=_0x228b5f,this['updateSelectionHighlight']();const _0x158124=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x158124[this['selectedIndex']]&&_0x158124[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x54f9ae=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x54f9ae['forEach']((_0x43cc24,_0x57cd84)=>{_0x43cc24['classList']['toggle']('keyboard-selected',_0x57cd84===this['selectedIndex']);});}async['loadAndShow'](_0x225fc4){this['showLoading']();try{const _0x7e355b=await this['options']['loadItems'](_0x225fc4);if(this['options']['searchMode']==='server'){let _0x55d72f=_0x7e355b;this['options']['sortItems']&&(_0x55d72f=this['options']['sortItems']([..._0x7e355b]));this['filteredItems']=_0x55d72f;const _0x160684=this['filteredItems']['length']>=this['options']['maxItems'];_0x160684&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x160684),this['open']();}else this['allItems']=_0x7e355b,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x225fc4);}catch(_0x390726){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x390726),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3c1978){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3c1978):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x49fc1b=this['filteredItems']['length']>=this['options']['maxItems'];_0x49fc1b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x49fc1b),this['open']();}['renderItems'](_0x5bcb){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']((_0x290be0,_0x3aabd3)=>{const _0x16103f=document['createElement']('div');_0x16103f['className']='autocomplete-select-item',_0x16103f['setAttribute']('role','option'),_0x16103f['setAttribute']('data-index',_0x3aabd3);const _0x198075=this['options']['renderItem'](_0x290be0);let _0x232837='';_0x198075['icon']&&(_0x232837='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x198075['iconClass']||'')+'\x22>'+_0x198075['icon']+'</span>'),_0x16103f['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x232837+'\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'](_0x198075['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x198075['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x198075['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x16103f['addEventListener']('click',()=>{this['selectItem'](_0x290be0);}),_0x16103f['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x3aabd3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x16103f);}),_0x5bcb?(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'](_0x414312){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x414312)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x5a880b){this['selectedItem']=_0x5a880b;const _0x3091cd=this['options']['renderItem'](_0x5a880b);this['input']['value']=_0x3091cd['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x5a880b);}['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'](_0x57678c){if(_0x57678c){this['selectedItem']=_0x57678c;const _0x4292ef=this['options']['renderItem'](_0x57678c);this['input']['value']=_0x4292ef['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x476c4b){this['allItems']=_0x476c4b,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'](_0x334b4a){this['input']['placeholder']=_0x334b4a;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x3d6792=null){const _0x399757=document['getElementById']('admin-menu-container'),_0x2d5499=document['getElementById']('admin-menu-btn'),_0xec0951=document['getElementById']('admin-menu');if(!_0x399757||!_0x2d5499||!_0xec0951)return;try{!_0x3d6792&&(_0x3d6792=await API['getCurrentUser']());if(_0x3d6792){const _0x1d9b96=window['Permissions'],_0x1db6f1=_0x1d9b96['hasServerPermission'](_0x3d6792,'*')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:manage')||_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')||_0x1d9b96['hasTeamPermission'](_0x3d6792,'teams:manage')||_0x1d9b96['hasEnvPermission'](_0x3d6792,'environments:view_details');if(!_0x1db6f1)return;_0x399757['hidden']=![];if(!_0x1d9b96['hasServerPermission'](_0x3d6792,'*')){const _0x37e46f=_0xec0951['querySelectorAll']('.admin-menu-item');_0x37e46f['forEach'](_0x5e4dbf=>{const _0x184fb8=_0x5e4dbf['querySelector']('.option-text')?.['textContent']?.['trim']();_0x184fb8==='Users'&&!_0x1d9b96['hasServerPermission'](_0x3d6792,'users:create')&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Skills'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Settings'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Server\x20Health'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Git\x20History'&&(_0x5e4dbf['hidden']=!![]),_0x184fb8==='Roles'&&(_0x5e4dbf['hidden']=!![]);});}_0x2d5499['addEventListener']('click',_0x5bbd7e=>{_0x5bbd7e['stopPropagation']();const _0x58a6ca=document['getElementById']('actions-menu');if(_0x58a6ca)_0x58a6ca['hidden']=!![];_0xec0951['hidden']=!_0xec0951['hidden'];}),document['addEventListener']('click',_0x5a7159=>{!_0xec0951['hidden']&&!_0x2d5499['contains'](_0x5a7159['target'])&&!_0xec0951['contains'](_0x5a7159['target'])&&(_0xec0951['hidden']=!![]);}),document['addEventListener']('keydown',_0x544058=>{_0x544058['key']==='Escape'&&!_0xec0951['hidden']&&(_0xec0951['hidden']=!![]);});const _0xf93d10=document['getElementById']('server-health-btn');_0xf93d10&&_0xf93d10['addEventListener']('click',async()=>{_0xec0951['hidden']=!![];const {openServerHealthModal:_0x1dbb7e}=await import('./server-health.js');_0x1dbb7e();});}}catch(_0x2037e3){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x2037e3['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};