@profoundlogic/coderflow-server 0.6.5 → 0.6.7

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 (178) hide show
  1. package/dist/base-image/agent-wrapper.sh +1 -1
  2. package/dist/base-image/sync-repos.sh +7 -1
  3. package/dist/coder-server.js +1 -1
  4. package/dist/config/cli-models.json +0 -12
  5. package/dist/config.js +1 -1
  6. package/dist/lib/agent-keepalive.js +1 -1
  7. package/dist/lib/agent-models.js +1 -1
  8. package/dist/lib/api-keys.js +1 -1
  9. package/dist/lib/apiKeys.js +1 -1
  10. package/dist/lib/app-server-ports.js +1 -1
  11. package/dist/lib/auto-judge.js +1 -1
  12. package/dist/lib/automation-service.js +1 -1
  13. package/dist/lib/basic-auth.js +1 -1
  14. package/dist/lib/bindings.js +1 -1
  15. package/dist/lib/build-history.js +1 -1
  16. package/dist/lib/build-output-service.js +1 -1
  17. package/dist/lib/build-scheduler.js +1 -1
  18. package/dist/lib/build-service.js +1 -1
  19. package/dist/lib/ca-certificates.js +1 -1
  20. package/dist/lib/claude-oauth-refresh.js +1 -1
  21. package/dist/lib/cli/build.js +1 -1
  22. package/dist/lib/cli/cleanup-users.js +1 -1
  23. package/dist/lib/cli/config-command.js +1 -1
  24. package/dist/lib/cli/config.js +1 -1
  25. package/dist/lib/cli/create-user.js +1 -1
  26. package/dist/lib/cli/grant-admin.js +1 -1
  27. package/dist/lib/cli/init.js +1 -1
  28. package/dist/lib/cli/jira.js +1 -1
  29. package/dist/lib/cli/license.js +1 -1
  30. package/dist/lib/cli/list-roles.js +1 -1
  31. package/dist/lib/cli/list-users.js +1 -1
  32. package/dist/lib/cli/server-manager.js +1 -1
  33. package/dist/lib/cli/set-password.js +1 -1
  34. package/dist/lib/config-migration.js +1 -1
  35. package/dist/lib/container-credential-sync.js +1 -1
  36. package/dist/lib/container-tokens.js +1 -1
  37. package/dist/lib/data-dir.js +1 -1
  38. package/dist/lib/deployment-history.js +1 -1
  39. package/dist/lib/deployment-service.js +1 -1
  40. package/dist/lib/docker-utils.js +1 -1
  41. package/dist/lib/email.js +1 -1
  42. package/dist/lib/emailTemplates.js +1 -1
  43. package/dist/lib/entitlement.js +1 -1
  44. package/dist/lib/external-connections.js +1 -1
  45. package/dist/lib/fetch-utils.js +1 -1
  46. package/dist/lib/git-commit-details-route.js +1 -1
  47. package/dist/lib/git-history-diff-guardrails.js +1 -1
  48. package/dist/lib/git-provider-service.js +1 -1
  49. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  50. package/dist/lib/git-provider-setup/index.js +1 -1
  51. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  52. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  53. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  54. package/dist/lib/git-providers/github-app-provider.js +1 -1
  55. package/dist/lib/git-providers/index.js +1 -1
  56. package/dist/lib/git-providers/provider-factory.js +1 -1
  57. package/dist/lib/git-providers/provider-interface.js +1 -1
  58. package/dist/lib/github-urls.js +1 -1
  59. package/dist/lib/group-objective-linking.js +1 -1
  60. package/dist/lib/ibmi-sync.js +1 -1
  61. package/dist/lib/jira-client.js +1 -1
  62. package/dist/lib/judge-blinding.js +1 -1
  63. package/dist/lib/logger.js +1 -1
  64. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  65. package/dist/lib/model-fetcher.js +1 -1
  66. package/dist/lib/notifications.js +1 -1
  67. package/dist/lib/objective-context.js +1 -1
  68. package/dist/lib/oidc-auth.js +1 -1
  69. package/dist/lib/oidc-device-flow.js +1 -1
  70. package/dist/lib/passwordTokens.js +1 -1
  71. package/dist/lib/permission-resolver.js +1 -1
  72. package/dist/lib/pin-cascade.js +1 -1
  73. package/dist/lib/provider-accounts.js +1 -1
  74. package/dist/lib/provider-oauth.js +1 -1
  75. package/dist/lib/provider-profile.js +1 -1
  76. package/dist/lib/provider-token-refresh.js +1 -1
  77. package/dist/lib/rbac-user-state.js +1 -1
  78. package/dist/lib/request-url.js +1 -1
  79. package/dist/lib/rewind.js +1 -1
  80. package/dist/lib/role-definitions.js +1 -1
  81. package/dist/lib/roles.js +1 -1
  82. package/dist/lib/secrets.js +1 -1
  83. package/dist/lib/setup-repo-git-auth.js +1 -1
  84. package/dist/lib/state-capture.js +1 -1
  85. package/dist/lib/static-files.js +1 -1
  86. package/dist/lib/task-aliases.js +1 -0
  87. package/dist/lib/task-name-format.js +1 -1
  88. package/dist/lib/task-name-generator.js +1 -1
  89. package/dist/lib/task-source-metadata.js +1 -1
  90. package/dist/lib/teams.js +1 -1
  91. package/dist/lib/user-git-oauth.js +1 -1
  92. package/dist/lib/user-git-tokens.js +1 -1
  93. package/dist/lib/users.js +1 -1
  94. package/dist/middleware/requireAuth.js +1 -1
  95. package/dist/middleware/requireInit.js +1 -1
  96. package/dist/middleware/requirePermission.js +1 -1
  97. package/dist/package.json +1 -1
  98. package/dist/playwright.config.js +1 -1
  99. package/dist/playwright.task-terminal.config.js +1 -1
  100. package/dist/routes/apiKeys.js +1 -1
  101. package/dist/routes/auth-oidc.js +1 -1
  102. package/dist/routes/auth.js +1 -1
  103. package/dist/routes/automations.js +1 -1
  104. package/dist/routes/bindings.js +1 -1
  105. package/dist/routes/build.js +1 -1
  106. package/dist/routes/containers.js +1 -1
  107. package/dist/routes/deploy-task.js +1 -1
  108. package/dist/routes/environment-management.js +1 -1
  109. package/dist/routes/environments.js +1 -1
  110. package/dist/routes/external-skills.js +1 -1
  111. package/dist/routes/git-credentials.js +1 -1
  112. package/dist/routes/git-oauth.js +1 -1
  113. package/dist/routes/git-provider-setup.js +1 -1
  114. package/dist/routes/health.js +1 -1
  115. package/dist/routes/jira.js +1 -1
  116. package/dist/routes/objective-management.js +1 -1
  117. package/dist/routes/password.js +1 -1
  118. package/dist/routes/prompt.js +1 -1
  119. package/dist/routes/provider-auth.js +1 -1
  120. package/dist/routes/qa.js +1 -1
  121. package/dist/routes/roles.js +1 -1
  122. package/dist/routes/settings.js +1 -1
  123. package/dist/routes/skill-management.js +1 -1
  124. package/dist/routes/skills.js +1 -1
  125. package/dist/routes/tasks.js +1 -1
  126. package/dist/routes/teams.js +1 -1
  127. package/dist/routes/templates.js +1 -1
  128. package/dist/routes/test-task.js +1 -1
  129. package/dist/routes/test.js +1 -1
  130. package/dist/routes/users.js +1 -1
  131. package/dist/routes/visualizations.js +1 -1
  132. package/dist/scripts/create-user.js +1 -1
  133. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  134. package/dist/start.js +1 -1
  135. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  136. package/dist/web-ui/public/activity-feed.js +1 -1
  137. package/dist/web-ui/public/activity-formatters.js +1 -1
  138. package/dist/web-ui/public/agent-event-parser.js +1 -1
  139. package/dist/web-ui/public/app.js +1 -1
  140. package/dist/web-ui/public/approve-dialog.js +1 -1
  141. package/dist/web-ui/public/automation-links.js +1 -1
  142. package/dist/web-ui/public/automation-schedule.js +1 -1
  143. package/dist/web-ui/public/comments-widget.js +1 -1
  144. package/dist/web-ui/public/diff-utils.js +1 -1
  145. package/dist/web-ui/public/environments.js +1 -1
  146. package/dist/web-ui/public/feedback-widget.css +39 -0
  147. package/dist/web-ui/public/feedback-widget.js +1 -1
  148. package/dist/web-ui/public/file-selection-tree.js +1 -1
  149. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  150. package/dist/web-ui/public/git-history.js +1 -1
  151. package/dist/web-ui/public/git-status.js +1 -1
  152. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  153. package/dist/web-ui/public/index.js +1 -1
  154. package/dist/web-ui/public/login.js +1 -1
  155. package/dist/web-ui/public/markdown-editor.js +1 -1
  156. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  157. package/dist/web-ui/public/modal-maximize.js +1 -1
  158. package/dist/web-ui/public/notifications.js +1 -1
  159. package/dist/web-ui/public/permissions.js +1 -1
  160. package/dist/web-ui/public/pr-dialog.js +1 -1
  161. package/dist/web-ui/public/roles.js +1 -1
  162. package/dist/web-ui/public/server-health.js +1 -1
  163. package/dist/web-ui/public/settings.html +0 -4
  164. package/dist/web-ui/public/settings.js +1 -1
  165. package/dist/web-ui/public/setup-password.js +1 -1
  166. package/dist/web-ui/public/skills.js +1 -1
  167. package/dist/web-ui/public/sse-client.js +1 -1
  168. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  169. package/dist/web-ui/public/styles.css +34 -0
  170. package/dist/web-ui/public/task-judging-helpers.js +1 -0
  171. package/dist/web-ui/public/task.html +1 -0
  172. package/dist/web-ui/public/task.js +1 -1
  173. package/dist/web-ui/public/teams.js +1 -1
  174. package/dist/web-ui/public/terminal.js +1 -1
  175. package/dist/web-ui/public/theme.js +1 -1
  176. package/dist/web-ui/public/users.js +1 -1
  177. package/dist/web-ui/public/variant-grouping.js +1 -1
  178. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x9ee399=window['location']['pathname'],_0x40110a=_0x9ee399['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x40110a)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x40110a[0x1]),_0x40110a[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x51c990={}){const _0x37a15f=new URLSearchParams();_0x51c990['userId']&&_0x37a15f['set']('userId',String(_0x51c990['userId']));_0x51c990['automation']&&_0x37a15f['set']('automation',String(_0x51c990['automation']));const _0x1f85f2=API_BASE+'/tasks/stats'+(_0x37a15f['toString']()?'?'+_0x37a15f['toString']():''),_0x44cd72=await fetch(_0x1f85f2);if(!_0x44cd72['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44cd72['statusText']);return await _0x44cd72['json']();},async 'getTasks'(_0x3a6bd4={}){const _0x563553=new URLSearchParams();_0x3a6bd4['status']&&_0x563553['set']('status',String(_0x3a6bd4['status']));_0x3a6bd4['environment']&&_0x563553['set']('environment',String(_0x3a6bd4['environment']));_0x3a6bd4['automation']&&_0x563553['set']('automation',String(_0x3a6bd4['automation']));if(_0x3a6bd4['include']){const _0x298a87=Array['isArray'](_0x3a6bd4['include'])?_0x3a6bd4['include']['join'](','):String(_0x3a6bd4['include']);_0x298a87&&_0x563553['set']('include',_0x298a87);}_0x3a6bd4['filter']&&_0x563553['set']('filter',String(_0x3a6bd4['filter']));_0x3a6bd4['page']&&_0x563553['set']('page',String(_0x3a6bd4['page']));_0x3a6bd4['limit']&&_0x563553['set']('limit',String(_0x3a6bd4['limit']));_0x3a6bd4['userId']&&_0x563553['set']('userId',String(_0x3a6bd4['userId']));_0x3a6bd4['search']&&_0x563553['set']('search',String(_0x3a6bd4['search']));_0x3a6bd4['includeChildTasks']&&_0x563553['set']('includeChildTasks','true');const _0x33f762=API_BASE+'/tasks'+(_0x563553['toString']()?'?'+_0x563553['toString']():''),_0xd943c=await fetch(_0x33f762);if(!_0xd943c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0xd943c['statusText']);return await _0xd943c['json']();},async 'getAutomations'(_0x5c93a2={}){const _0x2c0562=new URLSearchParams();_0x5c93a2['environment']&&_0x2c0562['set']('environment',String(_0x5c93a2['environment']));const _0x499814=await fetch(API_BASE+'/api/automations'+(_0x2c0562['toString']()?'?'+_0x2c0562['toString']():''));if(!_0x499814['ok']){const _0x2dd68f=await _0x499814['json']()['catch'](()=>({}));throw new Error(_0x2dd68f['message']||_0x2dd68f['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x499814['statusText']);}return await _0x499814['json']();},async 'getAutomation'(_0x500ca9){const _0x479db9=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x500ca9));if(!_0x479db9['ok']){const _0x4dd4fc=await _0x479db9['json']()['catch'](()=>({}));throw new Error(_0x4dd4fc['message']||_0x4dd4fc['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x479db9['statusText']);}return await _0x479db9['json']();},async 'createAutomation'(_0x7ed4b3){const _0x58c06f=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x7ed4b3||{})});if(!_0x58c06f['ok']){const _0x2ef0d2=await _0x58c06f['json']()['catch'](()=>({}));throw new Error(_0x2ef0d2['message']||_0x2ef0d2['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x58c06f['statusText']);}return await _0x58c06f['json']();},async 'updateAutomation'(_0x2c872d,_0x1f8d63){const _0x3d2843=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2c872d),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f8d63||{})});if(!_0x3d2843['ok']){const _0x4b3497=await _0x3d2843['json']()['catch'](()=>({}));throw new Error(_0x4b3497['message']||_0x4b3497['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x3d2843['statusText']);}return await _0x3d2843['json']();},async 'deleteAutomation'(_0xb8717a){const _0x29c14d=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xb8717a),{'method':'DELETE'});if(!_0x29c14d['ok']){const _0xb189ab=await _0x29c14d['json']()['catch'](()=>({}));throw new Error(_0xb189ab['message']||_0xb189ab['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x29c14d['statusText']);}return await _0x29c14d['json']();},async 'triggerAutomation'(_0x35c4c1){const _0x3f7a19=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x35c4c1)+'/trigger',{'method':'POST'});if(!_0x3f7a19['ok']){const _0xee2d8a=await _0x3f7a19['json']()['catch'](()=>({}));throw new Error(_0xee2d8a['message']||_0xee2d8a['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x3f7a19['statusText']);}return await _0x3f7a19['json']();},async 'setAutomationEnabled'(_0x264489,_0x5555b6){const _0x505b81=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x264489)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x5555b6})});if(!_0x505b81['ok']){const _0x4e879c=await _0x505b81['json']()['catch'](()=>({}));throw new Error(_0x4e879c['message']||_0x4e879c['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x505b81['statusText']);}return await _0x505b81['json']();},async 'getAutomationHistory'(_0x15a3a4,_0x57089f=0x32){const _0x46e0e3=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x15a3a4)+'/history?limit='+encodeURIComponent(String(_0x57089f)));if(!_0x46e0e3['ok']){const _0x4fe0b6=await _0x46e0e3['json']()['catch'](()=>({}));throw new Error(_0x4fe0b6['message']||_0x4fe0b6['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x46e0e3['statusText']);}return await _0x46e0e3['json']();},async 'getTask'(_0x3851a0,_0x4172c8={}){const _0x202be2=new URLSearchParams();if(_0x4172c8['include']){const _0x452976=Array['isArray'](_0x4172c8['include'])?_0x4172c8['include']['join'](','):String(_0x4172c8['include']);if(_0x452976)_0x202be2['set']('include',_0x452976);}const _0x32432e=await fetch(API_BASE+'/tasks/'+_0x3851a0+(_0x202be2['toString']()?'?'+_0x202be2['toString']():''));if(!_0x32432e['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x32432e['statusText']);return await _0x32432e['json']();},async 'getTaskResults'(_0xc5718a){const _0x2e52fa=await fetch(API_BASE+'/tasks/'+_0xc5718a+'/results');if(!_0x2e52fa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x2e52fa['statusText']);return await _0x2e52fa['json']();},async 'getTaskPatches'(_0x131b31){const _0x2a02b1=await fetch(API_BASE+'/tasks/'+_0x131b31+'/patches');if(!_0x2a02b1['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2a02b1['statusText']);return await _0x2a02b1['json']();},async 'getTaskAttachments'(_0x220b16){const _0x18142e=await fetch(API_BASE+'/tasks/'+_0x220b16+'/attachments');if(!_0x18142e['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x18142e['statusText']);return await _0x18142e['json']();},async 'uploadAttachments'(_0x5b745a,_0x36e351){const _0xb615df=new FormData();for(const _0x550644 of _0x36e351){_0xb615df['append']('attachments',_0x550644);}const _0x4fda71=await fetch(API_BASE+'/tasks/'+_0x5b745a+'/attachments',{'method':'POST','body':_0xb615df});if(!_0x4fda71['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x4fda71['statusText']);return await _0x4fda71['json']();},async 'isAINameGenerationAvailable'(){try{const _0x8a6f8f=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x8a6f8f['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x8a6f8f['json']();}catch(_0x54456d){return{'available':![],'reason':_0x54456d['message']};}},async 'generateTaskName'(_0x59315c){try{const _0x52eaa6=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x59315c})});return await _0x52eaa6['json']();}catch(_0x52bf02){return{'success':![],'error':_0x52bf02['message']};}},async 'createTask'(_0x1f469f){let _0x279839,_0x408158={};if(_0x1f469f['files']&&_0x1f469f['files']['length']>0x0){const _0x47eec0=new FormData();for(const [_0x417cc0,_0x5cb19c]of Object['entries'](_0x1f469f)){if(_0x417cc0!=='files'){if(_0x5cb19c==null)continue;typeof _0x5cb19c==='object'?_0x47eec0['append'](_0x417cc0,JSON['stringify'](_0x5cb19c)):_0x47eec0['append'](_0x417cc0,String(_0x5cb19c));}}for(const _0x20c23f of _0x1f469f['files']){_0x47eec0['append']('attachments',_0x20c23f);}_0x279839=_0x47eec0;}else _0x408158['Content-Type']='application/json',_0x279839=JSON['stringify'](_0x1f469f);const _0x24b7b0=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x408158,'body':_0x279839});if(!_0x24b7b0['ok']){const _0x492d41=await _0x24b7b0['json'](),_0x2d0add=new Error(_0x492d41['error']||'Failed\x20to\x20create\x20task:\x20'+_0x24b7b0['statusText']),{message:_0x1bc852,..._0x23320a}=_0x492d41;Object['assign'](_0x2d0add,_0x23320a);throw _0x2d0add;}return await _0x24b7b0['json']();},async 'createTestTask'(_0xa3874){const _0x3e665a=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xa3874)});if(!_0x3e665a['ok']){const _0x337da6=await _0x3e665a['json']();throw new Error(_0x337da6['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3e665a['statusText']);}return await _0x3e665a['json']();},async 'createEphemeralTest'(_0x70d276){const _0x5a01ca=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x70d276)});if(!_0x5a01ca['ok']){const _0x79474d=await _0x5a01ca['json']();throw new Error(_0x79474d['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x5a01ca['statusText']);}return await _0x5a01ca['json']();},async 'createDeployTask'(_0x4cdeb9){const _0xbb1f7f=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cdeb9)});if(!_0xbb1f7f['ok']){const _0x2be275=await _0xbb1f7f['json']();throw new Error(_0x2be275['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0xbb1f7f['statusText']);}return await _0xbb1f7f['json']();},async 'getEnvironments'(){const _0x4c8a8d=await fetch(API_BASE+'/environments');if(!_0x4c8a8d['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x4c8a8d['statusText']);return await _0x4c8a8d['json']();},async 'getEnvironment'(_0x3207f1){const _0x26575c=await fetch(API_BASE+'/environments/'+_0x3207f1);if(!_0x26575c['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x26575c['statusText']);return await _0x26575c['json']();},async 'getEnvironmentRepoHistory'(_0x41f29a,_0x478be3,_0x3802d6={}){if(!_0x41f29a||!_0x478be3)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xe42f8a=new URLSearchParams();if(_0x3802d6['limit'])_0xe42f8a['set']('limit',String(_0x3802d6['limit']));if(_0x3802d6['offset'])_0xe42f8a['set']('offset',String(_0x3802d6['offset']));if(_0x3802d6['search'])_0xe42f8a['set']('search',String(_0x3802d6['search']));if(_0x3802d6['branch'])_0xe42f8a['set']('branch',String(_0x3802d6['branch']));const _0x5a1b28=API_BASE+'/environments/'+encodeURIComponent(_0x41f29a)+'/repos/'+encodeURIComponent(_0x478be3)+'/git/history',_0x51b3e8=await fetch(''+_0x5a1b28+(_0xe42f8a['toString']()?'?'+_0xe42f8a['toString']():''));if(!_0x51b3e8['ok']){const _0x5849cb=await _0x51b3e8['json']()['catch'](()=>({}));throw new Error(_0x5849cb['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x51b3e8['statusText']);}return await _0x51b3e8['json']();},async 'getEnvironmentRepoCommit'(_0x5b0af8,_0x1135f0,_0x494ca6){if(!_0x5b0af8||!_0x1135f0||!_0x494ca6)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x43d901=API_BASE+'/environments/'+encodeURIComponent(_0x5b0af8)+'/repos/'+encodeURIComponent(_0x1135f0)+'/git/commits/'+encodeURIComponent(_0x494ca6),_0x3cfcba=await fetch(_0x43d901);if(!_0x3cfcba['ok']){const _0x256ad4=await _0x3cfcba['json']()['catch'](()=>({}));throw new Error(_0x256ad4['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x3cfcba['statusText']);}return await _0x3cfcba['json']();},async 'getEnvironmentRepoBranches'(_0x1ecc26,_0x2c0604){if(!_0x1ecc26||!_0x2c0604)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x4ce181=API_BASE+'/environments/'+encodeURIComponent(_0x1ecc26)+'/repos/'+encodeURIComponent(_0x2c0604)+'/git/branches',_0x92dd3d=await fetch(_0x4ce181);if(!_0x92dd3d['ok']){const _0x39575e=await _0x92dd3d['json']()['catch'](()=>({}));throw new Error(_0x39575e['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x92dd3d['statusText']);}return await _0x92dd3d['json']();},async 'revertEnvironmentRepoCommit'(_0x1c36b8,_0x3fa9df,_0x58f621,_0x4724e5={}){if(!_0x1c36b8||!_0x3fa9df||!_0x58f621)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x59a3fd=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1c36b8)+'/repos/'+encodeURIComponent(_0x3fa9df)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x58f621,..._0x4724e5})});if(!_0x59a3fd['ok']){const _0x50bee3=await _0x59a3fd['json']()['catch'](()=>({}));throw new Error(_0x50bee3['message']||_0x50bee3['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x59a3fd['statusText']);}return await _0x59a3fd['json']();},async 'getTemplates'(_0x5cfe3b={}){const _0x2317bb=new URLSearchParams();if(_0x5cfe3b['include']){const _0x2b7de5=Array['isArray'](_0x5cfe3b['include'])?_0x5cfe3b['include']['join'](','):String(_0x5cfe3b['include']);if(_0x2b7de5)_0x2317bb['set']('include',_0x2b7de5);}const _0x42b998=await fetch(API_BASE+'/templates'+(_0x2317bb['toString']()?'?'+_0x2317bb['toString']():''));if(!_0x42b998['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x42b998['statusText']);return await _0x42b998['json']();},async 'getTemplatesForEnvironment'(_0x467209,_0xa93801={}){if(!_0x467209)throw new Error('Environment\x20name\x20is\x20required');const _0x3b09c6=new URLSearchParams();if(_0xa93801['include']){const _0x2ec33=Array['isArray'](_0xa93801['include'])?_0xa93801['include']['join'](','):String(_0xa93801['include']);if(_0x2ec33)_0x3b09c6['set']('include',_0x2ec33);}const _0x40dd2b=await fetch(API_BASE+'/templates/'+_0x467209+(_0x3b09c6['toString']()?'?'+_0x3b09c6['toString']():''));if(!_0x40dd2b['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x467209+':\x20'+_0x40dd2b['statusText']);return await _0x40dd2b['json']();},async 'getTemplate'(_0x291a3d,_0x48b4e9,_0x19de47={}){if(!_0x291a3d||!_0x48b4e9)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x893e75=new URLSearchParams();if(_0x19de47['include']){const _0x31aa8b=Array['isArray'](_0x19de47['include'])?_0x19de47['include']['join'](','):String(_0x19de47['include']);if(_0x31aa8b)_0x893e75['set']('include',_0x31aa8b);}const _0x297e8c=await fetch(API_BASE+'/templates/'+_0x291a3d+'/'+_0x48b4e9+(_0x893e75['toString']()?'?'+_0x893e75['toString']():''));if(!_0x297e8c['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x297e8c['statusText']);return await _0x297e8c['json']();},async 'getTaskLogs'(_0x20d06f,_0x5df640={}){if(!_0x20d06f)throw new Error('Task\x20ID\x20is\x20required');const _0x133a5c=new URLSearchParams();_0x5df640['tail']&&_0x133a5c['set']('tail',String(_0x5df640['tail']));const _0x37f145=await fetch(API_BASE+'/tasks/'+_0x20d06f+'/logs'+(_0x133a5c['toString']()?'?'+_0x133a5c['toString']():''));if(!_0x37f145['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x37f145['statusText']);return await _0x37f145['text']();},async 'getContainers'(){const _0x62b960=await fetch(API_BASE+'/containers');if(!_0x62b960['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x62b960['statusText']);return await _0x62b960['json']();},async 'getContainer'(_0x53dc55){const _0x294c4f=await fetch(API_BASE+'/containers/'+_0x53dc55);if(!_0x294c4f['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x294c4f['statusText']);return await _0x294c4f['json']();},async 'startInteractiveContainer'(_0x5877ca){const _0x4bd9d0=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5877ca)});if(!_0x4bd9d0['ok']){const _0x43b338=await _0x4bd9d0['json']()['catch'](()=>({}));throw new Error(_0x43b338['message']||'Failed\x20to\x20start\x20container:\x20'+_0x4bd9d0['statusText']);}return await _0x4bd9d0['json']();},async 'stopContainer'(_0x1c30d5){const _0x432915=await fetch(API_BASE+'/containers/'+_0x1c30d5,{'method':'DELETE'});if(!_0x432915['ok']){const _0x55d2c4=await _0x432915['json']()['catch'](()=>({}));throw new Error(_0x55d2c4['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x432915['statusText']);}return await _0x432915['json']();},async 'stopTask'(_0x1c478a){if(!_0x1c478a)throw new Error('Task\x20ID\x20is\x20required');const _0x132fcd=await fetch(API_BASE+'/tasks/'+_0x1c478a+'/stop',{'method':'POST'});if(!_0x132fcd['ok']){const _0x4cda71=await _0x132fcd['json']()['catch'](()=>({}));throw new Error(_0x4cda71['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x132fcd['statusText']);}return await _0x132fcd['json']();},async 'interruptTask'(_0x4049c5){if(!_0x4049c5)throw new Error('Task\x20ID\x20is\x20required');const _0x2fe379=await fetch(API_BASE+'/tasks/'+_0x4049c5+'/interrupt',{'method':'POST'});if(!_0x2fe379['ok']){const _0x2ac02a=await _0x2fe379['json']()['catch'](()=>({}));throw new Error(_0x2ac02a['error']||_0x2ac02a['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x2fe379['statusText']);}return await _0x2fe379['json']();},async 'startTask'(_0x3630ca){if(!_0x3630ca)throw new Error('Task\x20ID\x20is\x20required');const _0x5330c2=await fetch(API_BASE+'/tasks/'+_0x3630ca+'/start',{'method':'POST'});if(!_0x5330c2['ok']){const _0x2a0a36=await _0x5330c2['json']()['catch'](()=>({}));throw new Error(_0x2a0a36['error']||'Failed\x20to\x20start\x20task:\x20'+_0x5330c2['statusText']);}return await _0x5330c2['json']();},async 'deleteTask'(_0x29db9f){if(!_0x29db9f)throw new Error('Task\x20ID\x20is\x20required');const _0x5eeb74=await fetch(API_BASE+'/tasks/'+_0x29db9f,{'method':'DELETE'});if(!_0x5eeb74['ok']){const _0x57dbe0=await _0x5eeb74['json']()['catch'](()=>({}));throw new Error(_0x57dbe0['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x5eeb74['statusText']);}return await _0x5eeb74['json']();},async 'refreshTasksFromDisk'(){const _0x2b044f=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x2b044f['ok']){const _0x1177b1=await _0x2b044f['json']()['catch'](()=>({}));throw new Error(_0x1177b1['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x2b044f['statusText']);}return await _0x2b044f['json']();},async 'approveTask'(_0x5a2972,_0x4b010c={}){if(!_0x5a2972)throw new Error('Task\x20ID\x20is\x20required');const _0x5ce48f={'commit_message':_0x4b010c['commit_message']||'','pull':_0x4b010c['pull']??![],'push':_0x4b010c['push']??![]};_0x4b010c['new_branch']&&(_0x5ce48f['new_branch']=_0x4b010c['new_branch']);const _0x2c9f85=await fetch(API_BASE+'/tasks/'+_0x5a2972+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ce48f)});if(!_0x2c9f85['ok']){const _0x3e8e18=await _0x2c9f85['json']()['catch'](()=>({}));let _0x252299=_0x3e8e18['error']||_0x3e8e18['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x2c9f85['statusText'];if(_0x3e8e18['results']&&Array['isArray'](_0x3e8e18['results'])){const _0xc4ccbc=_0x3e8e18['results']['filter'](_0x71cbd=>!_0x71cbd['success']&&_0x71cbd['error']);_0xc4ccbc['length']>0x0&&(_0x252299=_0xc4ccbc[0x0]['error']);}throw new Error(_0x252299);}return await _0x2c9f85['json']();},async 'getPullRequestInfo'(_0x277619){if(!_0x277619)throw new Error('Task\x20ID\x20is\x20required');const _0xadbbce=await fetch(API_BASE+'/tasks/'+_0x277619+'/pull-request-info');if(!_0xadbbce['ok']){const _0x57b18a=await _0xadbbce['json']()['catch'](()=>({}));throw new Error(_0x57b18a['error']||_0x57b18a['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0xadbbce['statusText']);}return await _0xadbbce['json']();},async 'createPullRequests'(_0x19a6e4,_0x89dcf2){if(!_0x19a6e4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x89dcf2||!Array['isArray'](_0x89dcf2))throw new Error('repos\x20array\x20is\x20required');const _0x3aac2f=await fetch(API_BASE+'/tasks/'+_0x19a6e4+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x89dcf2})});if(!_0x3aac2f['ok']){const _0x24570c=await _0x3aac2f['json']()['catch'](()=>({}));let _0x116778=_0x24570c['error']||_0x24570c['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x3aac2f['statusText'];if(_0x24570c['results']&&Array['isArray'](_0x24570c['results'])){const _0x4a7c81=_0x24570c['results']['filter'](_0x5b8b0a=>!_0x5b8b0a['success']&&_0x5b8b0a['error']);_0x4a7c81['length']>0x0&&(_0x116778=_0x4a7c81[0x0]['error']);}throw new Error(_0x116778);}return await _0x3aac2f['json']();},async 'syncRepos'(_0x3ee457){if(!_0x3ee457)throw new Error('Task\x20ID\x20is\x20required');const _0x545bd0=await fetch(API_BASE+'/tasks/'+_0x3ee457+'/sync-repos',{'method':'POST'});if(!_0x545bd0['ok']){const _0x4f18a5=await _0x545bd0['json']()['catch'](()=>({}));throw new Error(_0x4f18a5['error']||_0x4f18a5['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x545bd0['statusText']);}return await _0x545bd0['json']();},async 'getIbmiSyncInfo'(_0x29230d){if(!_0x29230d)throw new Error('Task\x20ID\x20is\x20required');const _0x25ddaa=await fetch(API_BASE+'/tasks/'+_0x29230d+'/ibmi-sync-info');if(!_0x25ddaa['ok']){const _0x54d809=await _0x25ddaa['json']()['catch'](()=>({}));throw new Error(_0x54d809['error']||_0x54d809['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x25ddaa['json']();},async 'getSyncFiles'(_0x42ceba){if(!_0x42ceba)throw new Error('Task\x20ID\x20is\x20required');const _0x53f31c=await fetch(API_BASE+'/tasks/'+_0x42ceba+'/sync-to-ibmi/files');if(!_0x53f31c['ok']){const _0x1700ee=await _0x53f31c['json']()['catch'](()=>({}));throw new Error(_0x1700ee['error']||_0x1700ee['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x53f31c['json']();},async 'syncToIbmi'(_0x15696b,_0x14f45f,_0xc64806=null,_0x540d19=null,_0x5148d1=null){if(!_0x15696b)throw new Error('Task\x20ID\x20is\x20required');const _0xd177a1={'library':_0x14f45f};if(_0xc64806)_0xd177a1['user']=_0xc64806;if(_0x540d19)_0xd177a1['password']=_0x540d19;if(_0x5148d1)_0xd177a1['files']=_0x5148d1;const _0x11c39a=await fetch(API_BASE+'/tasks/'+_0x15696b+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd177a1)});if(!_0x11c39a['ok']){const _0x58146d=await _0x11c39a['json']()['catch'](()=>({}));throw new Error(_0x58146d['error']||_0x58146d['message']||'Sync\x20failed');}return await _0x11c39a['json']();},async 'getIbmiSyncLog'(_0x373c41){if(!_0x373c41)throw new Error('Task\x20ID\x20is\x20required');const _0x1feaae=await fetch(API_BASE+'/tasks/'+_0x373c41+'/ibmi-sync-log');if(!_0x1feaae['ok']){const _0x5f2f82=await _0x1feaae['json']()['catch'](()=>({}));throw new Error(_0x5f2f82['error']||_0x5f2f82['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x1feaae['json']();},async 'pullChanges'(_0x42fdfe){if(!_0x42fdfe)throw new Error('Task\x20ID\x20is\x20required');const _0x10f84d=await fetch(API_BASE+'/tasks/'+_0x42fdfe+'/pull-changes',{'method':'POST'});if(!_0x10f84d['ok']){const _0x93e54f=await _0x10f84d['json']()['catch'](()=>({}));throw new Error(_0x93e54f['error']||_0x93e54f['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x10f84d['statusText']);}return await _0x10f84d['json']();},async 'readFile'(_0x557e73,_0x27a025){if(!_0x557e73)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27a025)throw new Error('File\x20path\x20is\x20required');const _0x3584b7=await fetch(API_BASE+'/tasks/'+_0x557e73+'/files?path='+encodeURIComponent(_0x27a025));if(!_0x3584b7['ok']){const _0x417ce8=await _0x3584b7['json']()['catch'](()=>({}));throw new Error(_0x417ce8['error']||_0x417ce8['message']||'Failed\x20to\x20read\x20file:\x20'+_0x3584b7['statusText']);}return await _0x3584b7['json']();},'getTaskFileDownloadUrl'(_0x33d136,_0x3db23b){if(!_0x33d136)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3db23b)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x33d136+'/files/download?path='+encodeURIComponent(_0x3db23b);},async 'writeFile'(_0x34dbed,_0x446d45,_0x370010){if(!_0x34dbed)throw new Error('Task\x20ID\x20is\x20required');if(!_0x446d45)throw new Error('File\x20path\x20is\x20required');if(_0x370010===undefined)throw new Error('Content\x20is\x20required');const _0x1157f6=await fetch(API_BASE+'/tasks/'+_0x34dbed+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x446d45,'content':_0x370010})});if(!_0x1157f6['ok']){const _0x533b0d=await _0x1157f6['json']()['catch'](()=>({}));throw new Error(_0x533b0d['error']||_0x533b0d['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1157f6['statusText']);}return await _0x1157f6['json']();},async 'uploadTaskFiles'(_0x1083d6,_0x282a87,_0xae816c){if(!_0x1083d6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x282a87)throw new Error('Target\x20directory\x20is\x20required');if(!_0xae816c||_0xae816c['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x32170a=new FormData();_0x32170a['append']('targetDir',_0x282a87);for(const _0x206e66 of _0xae816c){_0x32170a['append']('files',_0x206e66,_0x206e66['name']);}const _0x44c2ed=await fetch(API_BASE+'/tasks/'+_0x1083d6+'/files/upload',{'method':'POST','body':_0x32170a});if(!_0x44c2ed['ok']){const _0x45ae20=await _0x44c2ed['json']()['catch'](()=>({}));throw new Error(_0x45ae20['error']||_0x45ae20['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x44c2ed['statusText']);}return await _0x44c2ed['json']();},async 'deleteFile'(_0x102647,_0x97e0e4){if(!_0x102647)throw new Error('Task\x20ID\x20is\x20required');if(!_0x97e0e4)throw new Error('File\x20path\x20is\x20required');const _0x4b54d2=await fetch(API_BASE+'/tasks/'+_0x102647+'/files?path='+encodeURIComponent(_0x97e0e4),{'method':'DELETE'});if(!_0x4b54d2['ok']){const _0x545473=await _0x4b54d2['json']()['catch'](()=>({}));throw new Error(_0x545473['error']||_0x545473['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4b54d2['statusText']);}return await _0x4b54d2['json']();},async 'discardFile'(_0x86b622,_0x227a68,_0x4edd8a){if(!_0x86b622)throw new Error('Task\x20ID\x20is\x20required');if(!_0x227a68)throw new Error('File\x20path\x20is\x20required');if(!_0x4edd8a)throw new Error('Repository\x20path\x20is\x20required');const _0x13a428=await fetch(API_BASE+'/tasks/'+_0x86b622+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x227a68,'repoPath':_0x4edd8a})});if(!_0x13a428['ok']){const _0x57afb7=await _0x13a428['json']()['catch'](()=>({}));throw new Error(_0x57afb7['error']||_0x57afb7['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x13a428['statusText']);}return await _0x13a428['json']();},async 'followUpTask'(_0x2e865a,_0x17fb32={}){if(!_0x2e865a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x17fb32['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x183b66,_0x45c12d={};if(_0x17fb32['files']&&_0x17fb32['files']['length']>0x0){const _0x558d38=new FormData();_0x558d38['append']('instructions',_0x17fb32['instructions']);for(const _0x5540b3 of _0x17fb32['files']){_0x558d38['append']('attachments',_0x5540b3);}_0x183b66=_0x558d38;}else _0x45c12d['Content-Type']='application/json',_0x183b66=JSON['stringify']({'instructions':_0x17fb32['instructions']});const _0x337185=await fetch(API_BASE+'/tasks/'+_0x2e865a+'/follow-up',{'method':'POST','headers':_0x45c12d,'body':_0x183b66});if(!_0x337185['ok']){const _0x1a18a4=await _0x337185['json']()['catch'](()=>({}));throw new Error(_0x1a18a4['error']||_0x1a18a4['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x337185['statusText']);}return await _0x337185['json']();},async 'getTaskRewindPoints'(_0x4c6d77){if(!_0x4c6d77)throw new Error('Task\x20ID\x20is\x20required');const _0x392167=await fetch(API_BASE+'/tasks/'+_0x4c6d77+'/rewind-points');if(!_0x392167['ok']){const _0x48f898=await _0x392167['json']()['catch'](()=>({}));throw new Error(_0x48f898['error']||_0x48f898['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x392167['statusText']);}return await _0x392167['json']();},async 'rewindTask'(_0x100ff2,_0x1b3009={}){if(!_0x100ff2)throw new Error('Task\x20ID\x20is\x20required');const _0x4f18e=Number['isInteger'](_0x1b3009['targetFollowUpCount'])?_0x1b3009['targetFollowUpCount']:0x0,_0x3ab6f4={'targetFollowUpCount':_0x4f18e};typeof _0x1b3009['instructions']==='string'&&_0x1b3009['instructions']['trim']()&&(_0x3ab6f4['instructions']=_0x1b3009['instructions']['trim']());typeof _0x1b3009['rewindFiles']==='boolean'&&(_0x3ab6f4['rewindFiles']=_0x1b3009['rewindFiles']);const _0x3802e2=await fetch(API_BASE+'/tasks/'+_0x100ff2+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ab6f4)});if(!_0x3802e2['ok']){const _0x1ab782=await _0x3802e2['json']()['catch'](()=>({}));throw new Error(_0x1ab782['error']||_0x1ab782['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x3802e2['statusText']);}return await _0x3802e2['json']();},async 'login'(_0x47ed9,_0x2b4c14){const _0x294dfd=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x47ed9,'password':_0x2b4c14})});if(!_0x294dfd['ok']){const _0x256391=await _0x294dfd['json']();throw new Error(_0x256391['message']||'Login\x20failed');}return await _0x294dfd['json']();},async 'logout'(){const _0x130035=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x130035['ok']){const _0x31ec57=await _0x130035['json']();throw new Error(_0x31ec57['message']||'Logout\x20failed');}return await _0x130035['json']();},async 'getCurrentUser'(){const _0x35b1af=await fetch(API_BASE+'/auth/me');if(!_0x35b1af['ok'])throw new Error('Not\x20authenticated');const _0x3ab5bb=await _0x35b1af['json']();return _0x3ab5bb['user'];},async 'getRolesInfo'(){const _0x172630=await fetch(API_BASE+'/users/roles');if(!_0x172630['ok']){const _0x541616=await _0x172630['json']();throw new Error(_0x541616['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x172630['json']();},async 'getUsers'(){const _0x158dc9=await fetch(API_BASE+'/users');if(!_0x158dc9['ok']){const _0x12c9b2=await _0x158dc9['json']();throw new Error(_0x12c9b2['message']||'Failed\x20to\x20get\x20users');}return await _0x158dc9['json']();},async 'getUser'(_0x12e0cc){const _0x23f706=await fetch(API_BASE+'/users/'+_0x12e0cc);if(!_0x23f706['ok']){const _0xa59f04=await _0x23f706['json']();throw new Error(_0xa59f04['message']||'Failed\x20to\x20get\x20user');}return await _0x23f706['json']();},async 'createUser'(_0x31caa2){const _0x5f5ee7=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x31caa2)});if(!_0x5f5ee7['ok']){const _0x3653dd=await _0x5f5ee7['json']();throw new Error(_0x3653dd['message']||'Failed\x20to\x20create\x20user');}return await _0x5f5ee7['json']();},async 'updateUser'(_0x2727e4,_0xe449c){const _0x3c1cb8=await fetch(API_BASE+'/users/'+_0x2727e4,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xe449c)});if(!_0x3c1cb8['ok']){const _0x4899b2=await _0x3c1cb8['json']();throw new Error(_0x4899b2['message']||'Failed\x20to\x20update\x20user');}return await _0x3c1cb8['json']();},async 'deleteUser'(_0x5716e1){const _0xad6b6e=await fetch(API_BASE+'/users/'+_0x5716e1,{'method':'DELETE'});if(!_0xad6b6e['ok']){const _0x61b13b=await _0xad6b6e['json']();throw new Error(_0x61b13b['message']||'Failed\x20to\x20delete\x20user');}return await _0xad6b6e['json']();},async 'stopAllContainers'(){const _0x46bff8=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4c1b4a=await _0x46bff8['json']()['catch'](()=>({}));if(!_0x46bff8['ok'])throw new Error(_0x4c1b4a['message']||_0x4c1b4a['error']||'Failed\x20to\x20stop\x20containers');return _0x4c1b4a;},async 'removeStoppedContainers'(){const _0x8d2d03=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x2bd9a2=await _0x8d2d03['json']()['catch'](()=>({}));if(!_0x8d2d03['ok'])throw new Error(_0x2bd9a2['message']||_0x2bd9a2['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x2bd9a2;},async 'pruneDockerResources'(){const _0xf26463=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x3b4fe9=await _0xf26463['json']()['catch'](()=>({}));if(!_0xf26463['ok'])throw new Error(_0x3b4fe9['message']||_0x3b4fe9['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x3b4fe9;},async 'createPasswordToken'(_0x2aac42,_0x51415d='setup',_0x484d3b=![]){const _0x513ed8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2aac42,'type':_0x51415d,'sendEmail':_0x484d3b})});if(!_0x513ed8['ok']){const _0x213773=await _0x513ed8['json']();throw new Error(_0x213773['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x513ed8['json']();},async 'getEmailConfig'(){const _0x28b4e6=await fetch(API_BASE+'/password/email-config');if(!_0x28b4e6['ok']){const _0x5bbe7f=await _0x28b4e6['json']();throw new Error(_0x5bbe7f['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x28b4e6['json']();},async 'updateTaskName'(_0x550632,_0x4803c6){const _0x4a1a08=await fetch(API_BASE+'/tasks/'+_0x550632,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x4803c6})});if(!_0x4a1a08['ok']){const _0x512121=await _0x4a1a08['json']();throw new Error(_0x512121['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4a1a08['json']();},async 'pinTask'(_0x5f169a,_0x53b378,_0x3efe25=null){if(!_0x5f169a)throw new Error('Task\x20ID\x20is\x20required');const _0x42eb9b={'pinned':_0x53b378};_0x3efe25&&_0x3efe25['length']>0x0&&(_0x42eb9b['additionalTaskIds']=_0x3efe25);const _0x2ffd03=await fetch(API_BASE+'/tasks/'+_0x5f169a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x42eb9b)});if(!_0x2ffd03['ok']){const _0x51aaf4=await _0x2ffd03['json']();throw new Error(_0x51aaf4['error']||'Failed\x20to\x20pin\x20task');}return await _0x2ffd03['json']();},async 'setTaskWinner'(_0x594183,_0x5379f3,_0x7cccc=[]){if(!_0x594183)throw new Error('Task\x20ID\x20is\x20required');const _0x25dbc3=await fetch(API_BASE+'/tasks/'+_0x594183+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x5379f3,'siblings':_0x7cccc})});if(!_0x25dbc3['ok']){const _0xa9f07c=await _0x25dbc3['json']();throw new Error(_0xa9f07c['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x25dbc3['json']();},async 'setTaskLoser'(_0x24734d,_0x4c6264){if(!_0x24734d)throw new Error('Task\x20ID\x20is\x20required');const _0x418609=await fetch(API_BASE+'/tasks/'+_0x24734d+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x4c6264})});if(!_0x418609['ok']){const _0x11427f=await _0x418609['json']();throw new Error(_0x11427f['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x418609['json']();},async 'createTaskGroup'(_0x57d825){const _0x526919=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57d825)});if(!_0x526919['ok']){const _0x1d0c58=await _0x526919['json']();throw new Error(_0x1d0c58['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x526919['json']();},async 'getTaskGroups'(_0x1b7d02={}){const _0x1bfc8e=new URLSearchParams();if(_0x1b7d02['userId'])_0x1bfc8e['set']('userId',String(_0x1b7d02['userId']));if(_0x1b7d02['status'])_0x1bfc8e['set']('status',String(_0x1b7d02['status']));if(_0x1b7d02['limit'])_0x1bfc8e['set']('limit',String(_0x1b7d02['limit']));const _0x31a81a=API_BASE+'/tasks/groups'+(_0x1bfc8e['toString']()?'?'+_0x1bfc8e['toString']():''),_0x30fed6=await fetch(_0x31a81a);if(!_0x30fed6['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x30fed6['json']();},async 'getTaskGroup'(_0x1a8975){const _0x45b375=await fetch(API_BASE+'/tasks/groups/'+_0x1a8975);if(!_0x45b375['ok']){const _0xe4bac3=await _0x45b375['json']();throw new Error(_0xe4bac3['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x45b375['json']();},async 'updateTaskGroup'(_0x3fb606,_0x1883de,_0x20a4e2){const _0x38dd4c=await fetch(API_BASE+'/tasks/'+_0x3fb606+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x1883de,'groupIndex':_0x20a4e2})});if(!_0x38dd4c['ok']){const _0x3f3dd4=await _0x38dd4c['json']();throw new Error(_0x3f3dd4['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x38dd4c['json']();},async 'removeTaskFromGroup'(_0x52bd10){return this['updateTaskGroup'](_0x52bd10,null,null);},async 'deleteTaskGroup'(_0x3160d9,_0x5da281=![]){const _0x3de3bf=_0x5da281?'?deleteTasks=true':'',_0x1daacd=await fetch(API_BASE+'/tasks/groups/'+_0x3160d9+_0x3de3bf,{'method':'DELETE'});if(!_0x1daacd['ok']){const _0x3ab070=await _0x1daacd['json']();throw new Error(_0x3ab070['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x44975c,_0x525913){const _0xeaba48=await fetch(API_BASE+'/tasks/groups/'+_0x44975c+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x525913})});if(!_0xeaba48['ok']){const _0x444990=await _0xeaba48['json']();throw new Error(_0x444990['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0xeaba48['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x52ccb0){if(!_0x52ccb0)throw new Error('Task\x20ID\x20is\x20required');const _0x171451=await fetch(API_BASE+'/tasks/'+_0x52ccb0+'/comments');if(!_0x171451['ok']){const _0x2b8655=await _0x171451['json']()['catch'](()=>({}));throw new Error(_0x2b8655['error']||'Failed\x20to\x20get\x20comments');}return await _0x171451['json']();},async 'addComment'(_0x23ed85,_0x1ee9dc){if(!_0x23ed85)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1ee9dc)throw new Error('Comment\x20content\x20is\x20required');const _0x399448=await fetch(API_BASE+'/tasks/'+_0x23ed85+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x1ee9dc})});if(!_0x399448['ok']){const _0x4aaa25=await _0x399448['json']()['catch'](()=>({}));throw new Error(_0x4aaa25['error']||'Failed\x20to\x20add\x20comment');}return await _0x399448['json']();},async 'updateComment'(_0xf95b29,_0x5cc038,_0x20042b){if(!_0xf95b29)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5cc038)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x20042b)throw new Error('Comment\x20content\x20is\x20required');const _0x4adade=await fetch(API_BASE+'/tasks/'+_0xf95b29+'/comments/'+_0x5cc038,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x20042b})});if(!_0x4adade['ok']){const _0x18f436=await _0x4adade['json']()['catch'](()=>({}));throw new Error(_0x18f436['error']||'Failed\x20to\x20update\x20comment');}return await _0x4adade['json']();},async 'deleteComment'(_0x46d5bd,_0x37dd4e){if(!_0x46d5bd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37dd4e)throw new Error('Comment\x20ID\x20is\x20required');const _0x43918e=await fetch(API_BASE+'/tasks/'+_0x46d5bd+'/comments/'+_0x37dd4e,{'method':'DELETE'});if(!_0x43918e['ok']){const _0x5c7a48=await _0x43918e['json']()['catch'](()=>({}));throw new Error(_0x5c7a48['error']||'Failed\x20to\x20delete\x20comment');}return await _0x43918e['json']();},async 'createObjective'(_0x1d5377){const _0x2567e8={'objective':!![],'name':_0x1d5377['name']||'','environment':_0x1d5377['environment']||null,'agents':_0x1d5377['agents']||[],'branches':_0x1d5377['branches']||{},'isPinned':_0x1d5377['isPinned']||![],'parentObjectiveId':_0x1d5377['parentObjectiveId']||null,'env_vars':_0x1d5377['envVars']||{},'parameters':{'instructions':_0x1d5377['instructions']||''},'files':_0x1d5377['files']||[],'jira':_0x1d5377['jira']||null};return this['createTask'](_0x2567e8);},async 'updateObjective'(_0xb2a543,_0x5bdfad,_0x33230d=[],_0x4fbbaa=[]){let _0x1acda0,_0x59746e={};const _0x42b335={..._0x5bdfad};_0x4fbbaa&&_0x4fbbaa['length']>0x0&&(_0x42b335['removeAttachments']=_0x4fbbaa);if(_0x33230d&&_0x33230d['length']>0x0){const _0x47d1ce=new FormData();for(const [_0x863e6e,_0x71dfd3]of Object['entries'](_0x42b335)){if(_0x71dfd3==null)continue;typeof _0x71dfd3==='object'?_0x47d1ce['append'](_0x863e6e,JSON['stringify'](_0x71dfd3)):_0x47d1ce['append'](_0x863e6e,String(_0x71dfd3));}for(const _0x203893 of _0x33230d){_0x47d1ce['append']('attachments',_0x203893);}_0x1acda0=_0x47d1ce;}else _0x59746e['Content-Type']='application/json',_0x1acda0=JSON['stringify'](_0x42b335);const _0x1cc41d=await fetch(API_BASE+'/tasks/'+_0xb2a543,{'method':'PATCH','headers':_0x59746e,'body':_0x1acda0});if(!_0x1cc41d['ok']){const _0x13975a=await _0x1cc41d['json']();throw new Error(_0x13975a['error']||'Failed\x20to\x20update\x20objective');}return await _0x1cc41d['json']();},async 'deleteObjective'(_0x7672de){return this['deleteTask'](_0x7672de);},async 'launchObjective'(_0x118464,_0x24b6f5={}){const _0x1c36e7=await fetch(API_BASE+'/tasks/'+_0x118464+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x24b6f5)});if(!_0x1c36e7['ok']){const _0x3cdfdc=await _0x1c36e7['json']();throw new Error(_0x3cdfdc['error']||'Failed\x20to\x20launch\x20objective');}return await _0x1c36e7['json']();},async 'getObjectiveAttachments'(_0xabdc8f){return this['getTaskAttachments'](_0xabdc8f);},async 'createJudgeTask'({environment:_0x19f46f,judgeAgent:_0x7a6bf5,groupId:_0x4b11eb,taskIds:_0x2cbd82,judgeCustomInstructions:_0x3740f1,isPinned:_0x1e54c7}){const _0x178a2a=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x19f46f,'judgeAgent':_0x7a6bf5,'groupId':_0x4b11eb,'taskIds':_0x2cbd82,'judgeCustomInstructions':_0x3740f1,'isPinned':_0x1e54c7})});if(!_0x178a2a['ok']){const _0x4bcb11=await _0x178a2a['json']();throw new Error(_0x4bcb11['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x178a2a['json']();},async 'getJudgeTasks'(_0x1f2d92){const _0x1ef91c=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x1f2d92));if(!_0x1ef91c['ok']){const _0x5ac640=await _0x1ef91c['json']();throw new Error(_0x5ac640['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1ef91c['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x1957c9,_0x14b922,_0x1b2f73=''){const _0x35e476=await fetch(API_BASE+'/tasks/'+_0x1957c9+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x14b922,'customPreamble':_0x1b2f73})});if(!_0x35e476['ok']){const _0xec7a82=await _0x35e476['json']();throw new Error(_0xec7a82['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x35e476['json']();},async 'getJiraConfig'(){const _0x1983ec=await fetch(API_BASE+'/jira/config');if(!_0x1983ec['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x1983ec['json']();},async 'getJiraIssue'(_0x22206e){const _0x5b46dc=await fetch(API_BASE+'/jira/issues/'+_0x22206e);if(!_0x5b46dc['ok']){const _0x4443c8=await _0x5b46dc['json']()['catch'](()=>({}));throw new Error(_0x4443c8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x5b46dc['statusText']);}return await _0x5b46dc['json']();},async 'searchJiraIssues'(_0x498fd9,_0x463f28=0x14){const _0x102829=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x498fd9,'maxResults':_0x463f28})});if(!_0x102829['ok']){const _0x2aaf1b=await _0x102829['json']()['catch'](()=>({}));throw new Error(_0x2aaf1b['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x102829['statusText']);}return await _0x102829['json']();},async 'postJiraComment'(_0x4f5dd1,_0xf8321b){const _0x3e0186=await fetch(API_BASE+'/jira/issues/'+_0x4f5dd1+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0xf8321b})});if(!_0x3e0186['ok']){const _0x3f17b4=await _0x3e0186['json']()['catch'](()=>({}));throw new Error(_0x3f17b4['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x3e0186['statusText']);}return await _0x3e0186['json']();},async 'getJiraComments'(_0x3bfa17){const _0x25eeeb=await fetch(API_BASE+'/jira/issues/'+_0x3bfa17+'/comments');if(!_0x25eeeb['ok']){const _0x1f9a38=await _0x25eeeb['json']()['catch'](()=>({}));throw new Error(_0x1f9a38['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x25eeeb['statusText']);}return await _0x25eeeb['json']();},async 'promptParameter'({environment:_0xdd7935,command:_0x255666,parser:parser='json'}){const _0x2fb9ee=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0xdd7935,'command':_0x255666,'parser':parser})});if(!_0x2fb9ee['ok']){const _0x2fc11e=await _0x2fb9ee['json']()['catch'](()=>({}));throw new Error(_0x2fc11e['message']||_0x2fc11e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x2fb9ee['statusText']);}return await _0x2fb9ee['json']();},async 'promptParameterStream'(_0x349884,_0x49f8c0){const _0x27348a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x349884)});if(!_0x27348a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x27348a['statusText']);const _0x156bbd=_0x27348a['body']['getReader'](),_0x50ac36=new TextDecoder();let _0x1cb890='';return new Promise((_0x44ecc4,_0x463fbf)=>{const _0x218d62=async()=>{try{const {done:_0x2dadd2,value:_0x99a911}=await _0x156bbd['read']();if(_0x2dadd2)return;_0x1cb890+=_0x50ac36['decode'](_0x99a911,{'stream':!![]});const _0x13dfeb=_0x1cb890['split']('\x0a\x0a');_0x1cb890=_0x13dfeb['pop']()||'';for(const _0x325871 of _0x13dfeb){if(!_0x325871['trim']())continue;const _0x7d00d6=_0x325871['split']('\x0a');let _0x2c5496='message',_0x3a584f='';for(const _0x7c41cb of _0x7d00d6){if(_0x7c41cb['startsWith']('event:'))_0x2c5496=_0x7c41cb['substring'](0x6)['trim']();else _0x7c41cb['startsWith']('data:')&&(_0x3a584f=_0x7c41cb['substring'](0x5)['trim']());}if(!_0x3a584f)continue;try{const _0x28250f=JSON['parse'](_0x3a584f);if(_0x2c5496==='progress'&&_0x49f8c0)_0x49f8c0(_0x28250f['stage'],_0x28250f['message']);else{if(_0x2c5496==='result'){_0x44ecc4(_0x28250f);return;}else{if(_0x2c5496==='error'){let _0xeafe12=_0x28250f['message']||_0x28250f['error']||'Prompt\x20command\x20failed';_0x28250f['rawOutput']&&(_0xeafe12+='\x0a\x0aRaw\x20output:\x0a'+_0x28250f['rawOutput']);_0x463fbf(new Error(_0xeafe12));return;}}}}catch(_0x4d8c53){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x4d8c53),console['error']('Event\x20type:',_0x2c5496),console['error']('Event\x20data:',_0x3a584f),console['error']('First\x20200\x20chars:',_0x3a584f['substring'](0x0,0xc8)),_0x463fbf(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x4d8c53['message']+'\x0a\x0aData:\x20'+_0x3a584f['substring'](0x0,0x1f4)));return;}}_0x218d62();}catch(_0x4925d1){_0x463fbf(_0x4925d1);}};_0x218d62();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x3da842){const _0x34c925=await fetch(''+API_BASE+_0x3da842);if(!_0x34c925['ok']){const _0x5d6745=await _0x34c925['json']()['catch'](()=>({'error':_0x34c925['statusText']})),_0x43681c=new Error(_0x5d6745['error']||_0x5d6745['message']||_0x34c925['statusText']);if(_0x5d6745['detail']!==undefined)_0x43681c['detail']=_0x5d6745['detail'];throw _0x43681c;}return await _0x34c925['json']();},async 'post'(_0x5d8720,_0x580275){const _0x2a95de=await fetch(''+API_BASE+_0x5d8720,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x580275)});if(!_0x2a95de['ok']){const _0x328895=await _0x2a95de['json']()['catch'](()=>({'error':_0x2a95de['statusText']})),_0x43226d=new Error(_0x328895['error']||_0x328895['message']||_0x2a95de['statusText']);if(_0x328895['detail']!==undefined)_0x43226d['detail']=_0x328895['detail'];throw _0x43226d;}return await _0x2a95de['json']();},async 'put'(_0x384d17,_0x1d5a13){const _0x34c0ea=await fetch(''+API_BASE+_0x384d17,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d5a13)});if(!_0x34c0ea['ok']){const _0x5a62ed=await _0x34c0ea['json']()['catch'](()=>({'error':_0x34c0ea['statusText']})),_0x1ae0fc=new Error(_0x5a62ed['error']||_0x5a62ed['message']||_0x34c0ea['statusText']);if(_0x5a62ed['detail']!==undefined)_0x1ae0fc['detail']=_0x5a62ed['detail'];throw _0x1ae0fc;}return await _0x34c0ea['json']();},async 'delete'(_0x4f2667,_0x2e3e28){const _0xea880={'method':'DELETE'};_0x2e3e28&&(_0xea880['headers']={'Content-Type':'application/json'},_0xea880['body']=JSON['stringify'](_0x2e3e28));const _0x47510e=await fetch(''+API_BASE+_0x4f2667,_0xea880);if(!_0x47510e['ok']){const _0x3b117b=await _0x47510e['json']()['catch'](()=>({'error':_0x47510e['statusText']})),_0xac2c15=new Error(_0x3b117b['error']||_0x3b117b['message']||_0x47510e['statusText']);if(_0x3b117b['detail']!==undefined)_0xac2c15['detail']=_0x3b117b['detail'];throw _0xac2c15;}return await _0x47510e['json']();},async 'getSkills'(){const _0x5d78c8=await fetch(API_BASE+'/skills');if(!_0x5d78c8['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x5d78c8['statusText']);return await _0x5d78c8['json']();},async 'getSkill'(_0x35b14b){const _0x195c87=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35b14b));if(!_0x195c87['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x195c87['statusText']);return await _0x195c87['json']();},async 'createSkill'(_0x351f23){const _0x216b8e=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x351f23)});if(!_0x216b8e['ok']){const _0x304086=await _0x216b8e['json']()['catch'](()=>({'error':_0x216b8e['statusText']})),_0x18f181=new Error(_0x304086['error']||_0x304086['message']||_0x216b8e['statusText']);if(_0x304086['detail']!==undefined)_0x18f181['detail']=_0x304086['detail'];throw _0x18f181;}return await _0x216b8e['json']();},async 'updateSkill'(_0x4bc4b2,_0x48c427){const _0x3dcdf8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4bc4b2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48c427)});if(!_0x3dcdf8['ok']){const _0x317560=await _0x3dcdf8['json']()['catch'](()=>({'error':_0x3dcdf8['statusText']})),_0x1fcfb0=new Error(_0x317560['error']||_0x317560['message']||_0x3dcdf8['statusText']);if(_0x317560['detail']!==undefined)_0x1fcfb0['detail']=_0x317560['detail'];throw _0x1fcfb0;}return await _0x3dcdf8['json']();},async 'deleteSkill'(_0x3850d4){const _0x37ba33=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3850d4),{'method':'DELETE'});if(!_0x37ba33['ok']){const _0x4f7684=await _0x37ba33['json']()['catch'](()=>({'error':_0x37ba33['statusText']})),_0x2f169b=new Error(_0x4f7684['error']||_0x4f7684['message']||_0x37ba33['statusText']);if(_0x4f7684['detail']!==undefined)_0x2f169b['detail']=_0x4f7684['detail'];throw _0x2f169b;}return await _0x37ba33['json']();},async 'getSkillFile'(_0x2d674d,_0x1a1d29){const _0x170e5c=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2d674d)+'/files/'+_0x1a1d29);if(!_0x170e5c['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x170e5c['statusText']);return await _0x170e5c['json']();},async 'saveSkillFile'(_0x46c740,_0x1bc610,_0x4b0470){const _0x526ac8=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x46c740)+'/files/'+_0x1bc610,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b0470})});if(!_0x526ac8['ok']){const _0x2ee5d8=await _0x526ac8['json']()['catch'](()=>({'error':_0x526ac8['statusText']})),_0x57c5ff=new Error(_0x2ee5d8['error']||_0x2ee5d8['message']||_0x526ac8['statusText']);if(_0x2ee5d8['detail']!==undefined)_0x57c5ff['detail']=_0x2ee5d8['detail'];throw _0x57c5ff;}return await _0x526ac8['json']();},async 'deleteSkillFile'(_0x2de1d4,_0x4e8f06){const _0x326c26=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2de1d4)+'/files/'+_0x4e8f06,{'method':'DELETE'});if(!_0x326c26['ok']){const _0x14e1f4=await _0x326c26['json']()['catch'](()=>({'error':_0x326c26['statusText']})),_0x4e1d8e=new Error(_0x14e1f4['error']||_0x14e1f4['message']||_0x326c26['statusText']);if(_0x14e1f4['detail']!==undefined)_0x4e1d8e['detail']=_0x14e1f4['detail'];throw _0x4e1d8e;}return await _0x326c26['json']();},async 'pullSkills'(){const _0x278b55=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x278b55['ok']){const _0x2101b8=await _0x278b55['json']()['catch'](()=>({'error':_0x278b55['statusText']})),_0x233cfe=new Error(_0x2101b8['error']||_0x2101b8['message']||_0x278b55['statusText']);if(_0x2101b8['detail']!==undefined)_0x233cfe['detail']=_0x2101b8['detail'];throw _0x233cfe;}return await _0x278b55['json']();},async 'commitSkills'(_0x369f32,_0x2eb57b={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x2eb57b,_0x501358=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x369f32,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x501358['ok']){const _0x519243=await _0x501358['json']()['catch'](()=>({'error':_0x501358['statusText']})),_0x4d032e=new Error(_0x519243['error']||_0x519243['message']||_0x501358['statusText']);if(_0x519243['detail']!==undefined)_0x4d032e['detail']=_0x519243['detail'];throw _0x4d032e;}return await _0x501358['json']();},async 'discardSkillsChanges'(){const _0x386211=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x386211['ok']){const _0x38269c=await _0x386211['json']()['catch'](()=>({'error':_0x386211['statusText']})),_0x4d8dba=new Error(_0x38269c['error']||_0x38269c['message']||_0x386211['statusText']);if(_0x38269c['detail']!==undefined)_0x4d8dba['detail']=_0x38269c['detail'];throw _0x4d8dba;}return await _0x386211['json']();},async 'getSkillCatalog'(){const _0x4cd066=await fetch(API_BASE+'/external-skills/catalog');if(!_0x4cd066['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x4cd066['statusText']);return await _0x4cd066['json']();},async 'getImportedSkillsRegistry'(){const _0x5d2ccf=await fetch(API_BASE+'/external-skills/registry');if(!_0x5d2ccf['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x5d2ccf['statusText']);return await _0x5d2ccf['json']();},async 'importCatalogSkill'(_0x38c3da){const _0x4b4c80=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x38c3da})});if(!_0x4b4c80['ok']){const _0x352771=await _0x4b4c80['json']()['catch'](()=>({'error':_0x4b4c80['statusText']})),_0xadbc25=new Error(_0x352771['error']||_0x352771['message']||_0x4b4c80['statusText']);if(_0x352771['detail']!==undefined)_0xadbc25['detail']=_0x352771['detail'];throw _0xadbc25;}return await _0x4b4c80['json']();},async 'importSkillFromGit'(_0x2c1ed1,_0x4517c3,_0x2d179f='main',_0x16216c=null){const _0x827992=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x2c1ed1,'skillPath':_0x4517c3,'branch':_0x2d179f,'skillId':_0x16216c})});if(!_0x827992['ok']){const _0x1a81df=await _0x827992['json']()['catch'](()=>({'error':_0x827992['statusText']})),_0x8ef7ae=new Error(_0x1a81df['error']||_0x1a81df['message']||_0x827992['statusText']);if(_0x1a81df['detail']!==undefined)_0x8ef7ae['detail']=_0x1a81df['detail'];throw _0x8ef7ae;}return await _0x827992['json']();},async 'probeMarketplace'(_0x43b308,_0x52379f='main'){const _0x9ae18b=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x43b308,'branch':_0x52379f})});if(!_0x9ae18b['ok']){const _0x16535f=await _0x9ae18b['json']()['catch'](()=>({'error':_0x9ae18b['statusText']})),_0x2a126d=new Error(_0x16535f['error']||_0x16535f['message']||_0x9ae18b['statusText']);if(_0x16535f['detail']!==undefined)_0x2a126d['detail']=_0x16535f['detail'];throw _0x2a126d;}return await _0x9ae18b['json']();},async 'importMarketplaceBundle'(_0x5925fc,_0x4b3157,_0x253924,_0x1396f2=null){const _0x5322c9=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5925fc,'branch':_0x4b3157,'bundleId':_0x253924,'selectedSkills':_0x1396f2})});if(!_0x5322c9['ok']){const _0x3a1ff7=await _0x5322c9['json']()['catch'](()=>({'error':_0x5322c9['statusText']})),_0x3e33e7=new Error(_0x3a1ff7['error']||_0x3a1ff7['message']||_0x5322c9['statusText']);if(_0x3a1ff7['detail']!==undefined)_0x3e33e7['detail']=_0x3a1ff7['detail'];throw _0x3e33e7;}return await _0x5322c9['json']();},async 'importSkillFromFolder'(_0x14360b,_0x4be6da=null){const _0x311815=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x14360b,'skillId':_0x4be6da})});if(!_0x311815['ok']){const _0x120302=await _0x311815['json']()['catch'](()=>({'error':_0x311815['statusText']})),_0x383bfb=new Error(_0x120302['error']||_0x120302['message']||_0x311815['statusText']);if(_0x120302['detail']!==undefined)_0x383bfb['detail']=_0x120302['detail'];throw _0x383bfb;}return await _0x311815['json']();},async 'importSkillFromNpm'(_0x37e28b,_0x2f99d1='latest',_0x34d819=null,_0x2d5138=null){const _0x1625e8=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x37e28b,'version':_0x2f99d1,'skillId':_0x34d819,'registry':_0x2d5138})});if(!_0x1625e8['ok']){const _0x55f81b=await _0x1625e8['json']()['catch'](()=>({'error':_0x1625e8['statusText']})),_0x352533=new Error(_0x55f81b['error']||_0x55f81b['message']||_0x1625e8['statusText']);if(_0x55f81b['detail']!==undefined)_0x352533['detail']=_0x55f81b['detail'];throw _0x352533;}return await _0x1625e8['json']();},async 'checkSkillUpdates'(_0x2efcdd){const _0x306459=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x2efcdd)+'/check-updates',{'method':'POST'});if(!_0x306459['ok']){const _0x49576a=await _0x306459['json']()['catch'](()=>({'error':_0x306459['statusText']})),_0x394534=new Error(_0x49576a['error']||_0x49576a['message']||_0x306459['statusText']);if(_0x49576a['detail']!==undefined)_0x394534['detail']=_0x49576a['detail'];throw _0x394534;}return await _0x306459['json']();},async 'updateExternalSkill'(_0x5f4ada){const _0x36c0a0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5f4ada)+'/update',{'method':'POST'});if(!_0x36c0a0['ok']){const _0x1856a6=await _0x36c0a0['json']()['catch'](()=>({'error':_0x36c0a0['statusText']})),_0x2d6a6b=new Error(_0x1856a6['error']||_0x1856a6['message']||_0x36c0a0['statusText']);if(_0x1856a6['detail']!==undefined)_0x2d6a6b['detail']=_0x1856a6['detail'];throw _0x2d6a6b;}return await _0x36c0a0['json']();},async 'updateSkillFlags'(_0x645152,_0x24646e){const _0x2413be=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x645152)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x24646e})});if(!_0x2413be['ok']){const _0x4475ab=await _0x2413be['json']()['catch'](()=>({'error':_0x2413be['statusText']})),_0x78da1=new Error(_0x4475ab['error']||_0x4475ab['message']||_0x2413be['statusText']);if(_0x4475ab['detail']!==undefined)_0x78da1['detail']=_0x4475ab['detail'];throw _0x78da1;}return await _0x2413be['json']();},async 'removeFromImportedRegistry'(_0x6f0344){const _0x2d9c36=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x6f0344)+'/registry',{'method':'DELETE'});if(!_0x2d9c36['ok']){const _0x388d28=await _0x2d9c36['json']()['catch'](()=>({'error':_0x2d9c36['statusText']})),_0x3e32b4=new Error(_0x388d28['error']||_0x388d28['message']||_0x2d9c36['statusText']);if(_0x388d28['detail']!==undefined)_0x3e32b4['detail']=_0x388d28['detail'];throw _0x3e32b4;}return await _0x2d9c36['json']();},async 'getTeams'(){const _0x171d55=await fetch(API_BASE+'/teams');if(!_0x171d55['ok']){const _0x5001f2=await _0x171d55['json']()['catch'](()=>({'message':_0x171d55['statusText']}));throw new Error(_0x5001f2['message']||'Failed\x20to\x20get\x20teams');}return await _0x171d55['json']();},async 'getTeam'(_0xc7ae11){const _0xb6a8c1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0xc7ae11));if(!_0xb6a8c1['ok']){const _0x2ed49f=await _0xb6a8c1['json']()['catch'](()=>({'message':_0xb6a8c1['statusText']}));throw new Error(_0x2ed49f['message']||'Failed\x20to\x20get\x20team');}return await _0xb6a8c1['json']();},async 'createTeam'(_0x57e80b){const _0x5512fa=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x57e80b)});if(!_0x5512fa['ok']){const _0x4714fd=await _0x5512fa['json']()['catch'](()=>({'message':_0x5512fa['statusText']}));throw new Error(_0x4714fd['message']||'Failed\x20to\x20create\x20team');}return await _0x5512fa['json']();},async 'updateTeam'(_0x55aa60,_0x51e86f){const _0x5d9694=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x55aa60),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x51e86f)});if(!_0x5d9694['ok']){const _0x3735d0=await _0x5d9694['json']()['catch'](()=>({'message':_0x5d9694['statusText']}));throw new Error(_0x3735d0['message']||'Failed\x20to\x20update\x20team');}return await _0x5d9694['json']();},async 'deleteTeam'(_0x5ca5f9){const _0x4dbaf7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x5ca5f9),{'method':'DELETE'});if(!_0x4dbaf7['ok']){const _0x567766=await _0x4dbaf7['json']()['catch'](()=>({'message':_0x4dbaf7['statusText']}));throw new Error(_0x567766['message']||'Failed\x20to\x20delete\x20team');}return await _0x4dbaf7['json']();},async 'addTeamMember'(_0x310992,_0x3da648){const _0x397681=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x310992)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3da648})});if(!_0x397681['ok']){const _0x20f2bf=await _0x397681['json']()['catch'](()=>({'message':_0x397681['statusText']}));throw new Error(_0x20f2bf['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x397681['json']();},async 'removeTeamMember'(_0x1df662,_0x2ff3b3){const _0x590790=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x1df662)+'/members/'+encodeURIComponent(_0x2ff3b3),{'method':'DELETE'});if(!_0x590790['ok']){const _0x223403=await _0x590790['json']()['catch'](()=>({'message':_0x590790['statusText']}));throw new Error(_0x223403['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x590790['json']();},async 'getBindings'(_0x10d91c={}){const _0x4ebf13=new URLSearchParams();if(_0x10d91c['resource_type'])_0x4ebf13['set']('resource_type',_0x10d91c['resource_type']);if(_0x10d91c['resource_id'])_0x4ebf13['set']('resource_id',_0x10d91c['resource_id']);if(_0x10d91c['subject_type'])_0x4ebf13['set']('subject_type',_0x10d91c['subject_type']);if(_0x10d91c['subject_id'])_0x4ebf13['set']('subject_id',_0x10d91c['subject_id']);const _0x13d343=_0x4ebf13['toString'](),_0x168104=await fetch(API_BASE+'/bindings'+(_0x13d343?'?'+_0x13d343:''));if(!_0x168104['ok']){const _0x4aa910=await _0x168104['json']()['catch'](()=>({'message':_0x168104['statusText']}));throw new Error(_0x4aa910['message']||'Failed\x20to\x20get\x20bindings');}return await _0x168104['json']();},async 'createBinding'(_0xb3af06){const _0x13c5bf=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb3af06)});if(!_0x13c5bf['ok']){const _0x452d7c=await _0x13c5bf['json']()['catch'](()=>({'message':_0x13c5bf['statusText']}));throw new Error(_0x452d7c['message']||'Failed\x20to\x20create\x20binding');}return await _0x13c5bf['json']();},async 'updateBinding'(_0x1babc6,_0x4af65a){const _0x522a6d=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x1babc6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4af65a)});if(!_0x522a6d['ok']){const _0x496e5b=await _0x522a6d['json']()['catch'](()=>({'message':_0x522a6d['statusText']}));throw new Error(_0x496e5b['message']||'Failed\x20to\x20update\x20binding');}return await _0x522a6d['json']();},async 'deleteBinding'(_0x101a8f){const _0x649a48=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x101a8f),{'method':'DELETE'});if(!_0x649a48['ok']){const _0x1e6825=await _0x649a48['json']()['catch'](()=>({'message':_0x649a48['statusText']}));throw new Error(_0x1e6825['message']||'Failed\x20to\x20delete\x20binding');}return await _0x649a48['json']();},async 'getRoleDefinitions'(){const _0x2a9a88=await fetch(API_BASE+'/roles');if(!_0x2a9a88['ok']){const _0x6480cd=await _0x2a9a88['json']()['catch'](()=>({'message':_0x2a9a88['statusText']}));throw new Error(_0x6480cd['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x2a9a88['json']();},async 'getRoleDefinition'(_0x1c1265){const _0x55cc8c=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1c1265));if(!_0x55cc8c['ok']){const _0xc32d4d=await _0x55cc8c['json']()['catch'](()=>({'message':_0x55cc8c['statusText']}));throw new Error(_0xc32d4d['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x55cc8c['json']();},async 'createRoleDefinition'(_0x125c93){const _0x3e98aa=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x125c93)});if(!_0x3e98aa['ok']){const _0x9a6103=await _0x3e98aa['json']()['catch'](()=>({'message':_0x3e98aa['statusText']}));throw new Error(_0x9a6103['message']||_0x9a6103['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x3e98aa['json']();},async 'updateRoleDefinition'(_0x31bb29,_0x4822d4){const _0x543d12=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x31bb29),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4822d4)});if(!_0x543d12['ok']){const _0x4d06dc=await _0x543d12['json']()['catch'](()=>({'message':_0x543d12['statusText']}));throw new Error(_0x4d06dc['message']||_0x4d06dc['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x543d12['json']();},async 'deleteRoleDefinition'(_0x2aaf4f){const _0x8f2823=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2aaf4f),{'method':'DELETE'});if(!_0x8f2823['ok']){const _0x549653=await _0x8f2823['json']()['catch'](()=>({'message':_0x8f2823['statusText']}));throw new Error(_0x549653['message']||_0x549653['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x8f2823['json']();},async 'getAvailablePermissions'(){const _0xe391b7=await fetch(API_BASE+'/roles/available-permissions');if(!_0xe391b7['ok']){const _0x18cbdf=await _0xe391b7['json']()['catch'](()=>({'message':_0xe391b7['statusText']}));throw new Error(_0x18cbdf['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xe391b7['json']();},async 'getGitProviderAllowedTeams'(_0x5b41ff){const _0x3e0878=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x5b41ff)+'/allowed-teams');if(!_0x3e0878['ok']){const _0x3e6b38=await _0x3e0878['json']()['catch'](()=>({'message':_0x3e0878['statusText']}));throw new Error(_0x3e6b38['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x3e0878['json']();},async 'setGitProviderAllowedTeams'(_0x185e36,_0x13e362){const _0x26f8b6=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x185e36)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x13e362})});if(!_0x26f8b6['ok']){const _0x4e3d99=await _0x26f8b6['json']()['catch'](()=>({'message':_0x26f8b6['statusText']}));throw new Error(_0x4e3d99['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x26f8b6['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 _0x134215=toastState['baseBottom'];toastState['toasts']['forEach'](_0x4c6769=>{_0x4c6769['el']['style']['bottom']=_0x134215+'px';const _0x2bef16=_0x4c6769['el']['offsetHeight']||toastState['defaultHeight'];_0x134215+=_0x2bef16+toastState['gap'];});});}function removeToastById(_0x1ed399){const _0x264b25=toastState['toasts']['findIndex'](_0x46c427=>_0x46c427['id']===_0x1ed399);if(_0x264b25===-0x1)return;const _0x1bd5f9=toastState['toasts'][_0x264b25];if(_0x1bd5f9['timeoutId'])clearTimeout(_0x1bd5f9['timeoutId']);_0x1bd5f9['el']['classList']['remove']('show'),setTimeout(()=>_0x1bd5f9['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x264b25,0x1),repositionAllToasts();}function registerToast(_0x4ff534){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x4ff534),repositionAllToasts(),_0x4ff534['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(_0x68d482){if(_0x68d482===null||_0x68d482===undefined)return'';return String(_0x68d482)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x155876,_0x1d8c3){if(_0x155876&&typeof _0x155876==='object'&&!Array['isArray'](_0x155876))return{'code':typeof _0x155876['text']==='string'?_0x155876['text']:'','language':typeof _0x155876['lang']==='string'?_0x155876['lang']:''};return{'code':typeof _0x155876==='string'?_0x155876:'','language':typeof _0x1d8c3==='string'?_0x1d8c3:''};}function buildMermaidBlock(_0x430bb7){const _0x2f8a2a=String(_0x430bb7||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x2f8a2a))+'\x22>'+escapeHtmlValue(_0x2f8a2a)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x319a02=new marked['Renderer'](),_0x275059=_0x319a02['code']['bind'](_0x319a02);return _0x319a02['code']=function(_0x31af25,_0x599359,..._0x16b6e6){const {code:_0x38836c,language:_0x45cbf2}=getMarkdownCodeBlockPayload(_0x31af25,_0x599359),_0x50acb6=String(_0x45cbf2||'')['trim']()['toLowerCase']();if(_0x50acb6==='mermaid')return buildMermaidBlock(_0x38836c);const _0x291704=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x291704&&_0x50acb6)try{const _0x1703cb=_0x291704['getLanguage'](_0x50acb6)?_0x50acb6:'plaintext',_0x43f5f4=_0x291704['highlight'](_0x38836c,{'language':_0x1703cb})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x50acb6)+'\x22>'+_0x43f5f4+'</code></pre>';}catch(_0x3b2eb3){console['error']('Syntax\x20highlighting\x20error:',_0x3b2eb3);}return _0x275059(_0x31af25,_0x599359,..._0x16b6e6);},sharedMarkedRenderer=_0x319a02,_0x319a02;}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 _0x237786=window['mermaid'];if(!_0x237786||typeof _0x237786['initialize']!=='function')return _0x237786||null;return _0x237786['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x237786;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x26e033,_0x27e551)=>{const _0x8c03ad=()=>_0x26e033(configureMermaidInstance()),_0x587279=()=>{mermaidLoadPromise=null,_0x27e551(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x3ce082=document['getElementById'](MERMAID_SCRIPT_ID);!_0x3ce082&&(_0x3ce082=document['createElement']('script'),_0x3ce082['id']=MERMAID_SCRIPT_ID,_0x3ce082['src']=MERMAID_SCRIPT_SRC,_0x3ce082['async']=!![],document['head']['appendChild'](_0x3ce082));if(window['mermaid']){_0x8c03ad();return;}_0x3ce082['addEventListener']('load',_0x8c03ad,{'once':!![]}),_0x3ce082['addEventListener']('error',_0x587279,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x2d7d01){const _0x29935f=_0x2d7d01['getAttribute']('data-mermaid-source');if(!_0x29935f)return null;let _0x5398a0=_0x29935f;try{_0x5398a0=decodeURIComponent(_0x29935f);}catch{}return _0x2d7d01['textContent']=_0x5398a0,_0x2d7d01['removeAttribute']('data-processed'),_0x2d7d01['removeAttribute']('aria-roledescription'),_0x2d7d01['removeAttribute']('role'),_0x2d7d01['removeAttribute']('aria-label'),_0x5398a0;}function collectMermaidNodes(_0x885b8d,_0x9c8bc9){if(!(_0x885b8d instanceof Element))return;_0x885b8d['matches']('.mermaid[data-mermaid-source]')&&_0x9c8bc9['add'](_0x885b8d),_0x885b8d['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x44b250=>{_0x9c8bc9['add'](_0x44b250);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x113338=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x266a1d=>setTimeout(_0x266a1d,0x0);_0x113338(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x12ca9e=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x12ca9e);});});}function queueMermaidRender(_0x12a3fd){const _0x1c797a=new Set();_0x12a3fd instanceof Document||_0x12a3fd instanceof DocumentFragment?_0x12a3fd['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x4ab498=>_0x1c797a['add'](_0x4ab498)):collectMermaidNodes(_0x12a3fd,_0x1c797a);if(_0x1c797a['size']===0x0)return;_0x1c797a['forEach'](_0x43fa30=>pendingMermaidNodes['add'](_0x43fa30)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0xd81e6e=Array['from'](pendingMermaidNodes)['filter'](_0x433224=>_0x433224['isConnected']);pendingMermaidNodes['clear']();if(_0xd81e6e['length']===0x0)return;const _0xbd22c4=await loadMermaid();if(!_0xbd22c4)return;configureMermaidInstance();const _0x513012=getMermaidTheme();for(const _0x32bb8f of _0xd81e6e){const _0x7e1815=_0x32bb8f['getAttribute']('data-mermaid-source');if(!_0x7e1815)continue;const _0x34645c=_0x32bb8f['getAttribute']('data-processed')==='true';if(_0x34645c&&_0x32bb8f['dataset']['mermaidTheme']===_0x513012)continue;restoreMermaidSource(_0x32bb8f);try{if(typeof _0xbd22c4['run']==='function')await _0xbd22c4['run']({'nodes':[_0x32bb8f]});else typeof _0xbd22c4['init']==='function'&&_0xbd22c4['init'](undefined,[_0x32bb8f]);_0x32bb8f['dataset']['mermaidTheme']=_0x513012,delete _0x32bb8f['dataset']['mermaidError'];}catch(_0x5a996a){console['error']('Mermaid\x20render\x20failed:',_0x5a996a),restoreMermaidSource(_0x32bb8f),_0x32bb8f['dataset']['mermaidError']='true',delete _0x32bb8f['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3e291=>{_0x3e291['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3e291);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x44f170=>{_0x44f170['forEach'](_0x29a66b=>{_0x29a66b['addedNodes']['forEach'](_0x3412f=>{_0x3412f['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x3412f);});});}),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'(_0x39b2ba){const _0x2eaaca=new Date(_0x39b2ba),_0x2bb7e1=new Date(),_0x298a6d=_0x2bb7e1-_0x2eaaca,_0x1e6c3c=Math['floor'](_0x298a6d/0x3e8),_0x558772=Math['floor'](_0x1e6c3c/0x3c),_0x20747f=Math['floor'](_0x558772/0x3c),_0x215117=Math['floor'](_0x20747f/0x18);if(_0x1e6c3c<0x3c)return'now';if(_0x558772<0x3c)return _0x558772+'m\x20ago';if(_0x20747f<0x18)return _0x20747f+'h\x20ago';return _0x215117+'d\x20ago';},'getStatusIcon'(_0xca8ae9){switch(_0xca8ae9){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x9abe22){switch(_0x9abe22){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'(_0x47c1b1,_0x28daa4=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x2b482e={};_0x2b482e['text/plain']=new Blob([_0x47c1b1],{'type':'text/plain'});_0x28daa4&&(_0x2b482e['text/html']=new Blob([_0x28daa4],{'type':'text/html'}));const _0x5ee33c=new ClipboardItem(_0x2b482e);return await navigator['clipboard']['write']([_0x5ee33c]),!![];}catch(_0x5b83e3){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5b83e3);}try{const _0xe53a78=_0x38ac2e=>{_0x38ac2e['preventDefault'](),_0x38ac2e['clipboardData']['setData']('text/plain',_0x47c1b1),_0x28daa4&&_0x38ac2e['clipboardData']['setData']('text/html',_0x28daa4);};document['addEventListener']('copy',_0xe53a78);const _0x33ee5d=document['execCommand']('copy');document['removeEventListener']('copy',_0xe53a78);if(_0x33ee5d)return!![];}catch(_0x403e54){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x403e54);}try{const _0x464cee=document['createElement']('textarea');_0x464cee['value']=_0x47c1b1,_0x464cee['style']['position']='fixed',_0x464cee['style']['opacity']='0',_0x464cee['style']['pointerEvents']='none',document['body']['appendChild'](_0x464cee),_0x464cee['select']();const _0x57526c=document['execCommand']('copy');return document['body']['removeChild'](_0x464cee),_0x57526c;}catch(_0x3e15ed){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x3e15ed),![];}},'showToast'(_0x5bdb0d,_0x46f26c='info'){const _0x5a2476=getNextToastId(),_0x11ec0e=document['createElement']('div');_0x11ec0e['className']='toast\x20toast-'+_0x46f26c,_0x11ec0e['textContent']=_0x5bdb0d,_0x11ec0e['dataset']['toastId']=_0x5a2476,document['body']['appendChild'](_0x11ec0e);const _0x5ba37e=_0x46f26c==='error'?0x2710:0xbb8,_0x4f2ea1=setTimeout(()=>{removeToastById(_0x5a2476);},_0x5ba37e),_0x5cf4a8={'id':_0x5a2476,'el':_0x11ec0e,'timeoutId':_0x4f2ea1};return registerToast(_0x5cf4a8),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x11ec0e['classList']['add']('show');});}),_0x5a2476;},'showError'(_0x126d21){console['error'](_0x126d21);const _0x44a60f=typeof _0x126d21==='string'?_0x126d21:_0x126d21['message']||'An\x20error\x20occurred';this['showToast'](_0x44a60f,'error');},'showSuccess'(_0x3b872f){this['showToast'](_0x3b872f,'success');},'capitalize'(_0x104433){if(!_0x104433)return'';return _0x104433['charAt'](0x0)['toUpperCase']()+_0x104433['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5aacb7){return escapeHtmlValue(_0x5aacb7);},'ansiToHtml'(_0x11f786){if(_0x11f786===null||_0x11f786===undefined)return'';let _0x1047ac=this['escapeHtml'](_0x11f786);const _0x360986={'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'},_0x23b4df={'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 _0x1182a6=0x0;return _0x1047ac=_0x1047ac['replace'](/\x1b\[([0-9;]*)m/g,(_0x26dde6,_0x3861bc)=>{if(!_0x3861bc||_0x3861bc==='0'){const _0x536af9='</span>'['repeat'](_0x1182a6);return _0x1182a6=0x0,_0x536af9;}const _0x25bc2d=_0x3861bc['split'](';'),_0x4f83e2=[];for(const _0x4b1728 of _0x25bc2d){if(_0x4b1728==='1')_0x4f83e2['push']('font-weight:bold');else{if(_0x4b1728==='2')_0x4f83e2['push']('opacity:0.7');else{if(_0x4b1728==='3')_0x4f83e2['push']('font-style:italic');else{if(_0x4b1728==='4')_0x4f83e2['push']('text-decoration:underline');else{if(_0x4b1728==='9')_0x4f83e2['push']('text-decoration:line-through');else{if(_0x360986[_0x4b1728])_0x4f83e2['push']('color:'+_0x360986[_0x4b1728]);else{if(_0x23b4df[_0x4b1728])_0x4f83e2['push']('background-color:'+_0x23b4df[_0x4b1728]);}}}}}}}if(_0x4f83e2['length']>0x0)return _0x1182a6++,'<span\x20style=\x22'+_0x4f83e2['join'](';')+'\x22>';return'';}),_0x1047ac+='</span>'['repeat'](_0x1182a6),_0x1047ac=_0x1047ac['replace'](/\\u001b\[([0-9;]*)m/g,(_0x1b25ee,_0x1aa331)=>{if(!_0x1aa331||_0x1aa331==='0')return'';const _0x4125ac=_0x1aa331['split'](';'),_0x592f05=[];for(const _0x2dd464 of _0x4125ac){if(_0x2dd464==='1')_0x592f05['push']('font-weight:bold');else{if(_0x360986[_0x2dd464])_0x592f05['push']('color:'+_0x360986[_0x2dd464]);else{if(_0x23b4df[_0x2dd464])_0x592f05['push']('background-color:'+_0x23b4df[_0x2dd464]);}}}if(_0x592f05['length']>0x0)return'<span\x20style=\x22'+_0x592f05['join'](';')+'\x22>';return'';}),_0x1047ac;},'showModal'({title:_0x2a3bb3,content:_0x518a18,buttons:buttons=[]}){const _0x54e1e6='\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'](_0x2a3bb3)+'</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'+_0x518a18+'\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']((_0x10a809,_0x3ca0da)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x10a809['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x3ca0da+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x10a809['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',_0x1696c2=document['createElement']('div');_0x1696c2['id']='utils-modal',_0x1696c2['className']='modal',_0x1696c2['innerHTML']=_0x54e1e6,document['body']['appendChild'](_0x1696c2);const _0x160f7d=document['getElementById']('utils-modal-close');_0x160f7d&&_0x160f7d['addEventListener']('click',()=>this['hideModal']());const _0x573c21=_0x1696c2['querySelectorAll']('[data-btn-index]');_0x573c21['forEach'](_0x15f6fc=>{const _0xc01008=parseInt(_0x15f6fc['dataset']['btnIndex']);buttons[_0xc01008]?.['onClick']&&_0x15f6fc['addEventListener']('click',buttons[_0xc01008]['onClick']);});const _0x7c7b4a=document['getElementById']('utils-modal-overlay');_0x7c7b4a&&_0x7c7b4a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x3072ad=document['getElementById']('utils-modal');_0x3072ad&&_0x3072ad['remove']();},'parseKeyValuePairs'(_0x1de37b){const _0x2c61c7={};if(!_0x1de37b)return _0x2c61c7;return _0x1de37b['split'](/\r?\n/)['map'](_0x32eee1=>_0x32eee1['trim']())['filter'](Boolean)['forEach'](_0x8571f6=>{const _0x43f5ca=_0x8571f6['indexOf']('=');if(_0x43f5ca>0x0){const _0x37a1b8=_0x8571f6['slice'](0x0,_0x43f5ca)['trim'](),_0x17e933=_0x8571f6['slice'](_0x43f5ca+0x1)['trim']();if(_0x37a1b8)_0x2c61c7[_0x37a1b8]=_0x17e933;}}),_0x2c61c7;},'debounce'(_0x20f77f,_0x3acc10=0xfa){let _0x498f7b=null;return(..._0x470d64)=>{clearTimeout(_0x498f7b),_0x498f7b=setTimeout(()=>_0x20f77f['apply'](this,_0x470d64),_0x3acc10);};},'formatTimestamp'(_0x123cde){if(!_0x123cde)return'N/A';const _0x26a2ab=new Date(_0x123cde);return _0x26a2ab['toLocaleDateString']()+'\x20'+_0x26a2ab['toLocaleTimeString']();},'getQueryParams'(){const _0xa4902d=new URLSearchParams(window['location']['search']),_0x4b8949={};for(const [_0x348280,_0x1d296a]of _0xa4902d){_0x4b8949[_0x348280]=_0x1d296a;}return _0x4b8949;},'formatDuration'(_0x4a492f,_0x461fc1){if(!_0x4a492f)return'N/A';const _0x392b34=new Date(_0x4a492f),_0x17a266=_0x461fc1?new Date(_0x461fc1):new Date(),_0x4064c5=_0x17a266-_0x392b34;if(_0x4064c5<0x0)return'0s';const _0x56330e=Math['floor'](_0x4064c5/0x3e8),_0x4e6913=Math['floor'](_0x56330e/0x3c),_0xf6076=Math['floor'](_0x4e6913/0x3c),_0x5166da=Math['floor'](_0xf6076/0x18);if(_0x56330e<0x3c)return _0x56330e+'s';if(_0x4e6913<0x3c)return _0x4e6913+'m\x20'+_0x56330e%0x3c+'s';if(_0xf6076<0x18)return _0xf6076+'h\x20'+_0x4e6913%0x3c+'m\x20'+_0x56330e%0x3c+'s';return _0x5166da+'d\x20'+_0xf6076%0x18+'h\x20'+_0x4e6913%0x3c+'m';},'renderMarkdown'(_0x553a6e,_0x406c36={}){if(!_0x553a6e)return'';_0x553a6e=this['rewriteAttachmentLinks'](_0x553a6e,_0x406c36),_0x553a6e=this['rewriteColorSyntax'](_0x553a6e);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x553a6e,_0x406c36);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x553a6e);}catch(_0x306e9c){return console['error']('Markdown\x20parsing\x20error:',_0x306e9c),this['renderMarkdownFallback'](_0x553a6e,_0x406c36);}},'rewriteAttachmentLinks'(_0x451a6f,_0x5aa48d={}){const _0x4c362a=typeof _0x5aa48d['resolveAttachmentUrl']==='function'?_0x5aa48d['resolveAttachmentUrl']:_0x5aa48d['taskId']?_0xff3825=>API_BASE+'/tasks/'+_0x5aa48d['taskId']+'/attachments/'+encodeURIComponent(_0xff3825):null;if(!_0x4c362a)return _0x451a6f;return String(_0x451a6f)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x156de5,_0x42b45c)=>{const _0x95112e=String(_0x42b45c||'')['trim']();if(!_0x95112e)return _0x156de5;let _0x475db9=_0x95112e;try{_0x475db9=decodeURIComponent(_0x95112e);}catch{}const _0x398033=_0x4c362a(_0x475db9);if(!_0x398033)return _0x156de5;return']('+_0x398033+')';});},'rewriteColorSyntax'(_0x5c2dbd){if(!_0x5c2dbd)return _0x5c2dbd;return String(_0x5c2dbd)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x247113,_0x4d7fad,_0x1b8572)=>{const _0x4370fe=this['rewriteColorSyntax'](_0x1b8572);return'<span\x20style=\x22color:\x20'+_0x4d7fad+'\x22>'+_0x4370fe+'</span>';});},'renderMarkdownFallback'(_0x3efb63,_0x3b908d={}){if(!_0x3efb63)return'';_0x3efb63=_0x3efb63['replace'](/\r\n/g,'\x0a'),_0x3efb63=_0x3efb63['replace'](/\r/g,'\x0a'),_0x3efb63=this['rewriteAttachmentLinks'](_0x3efb63,_0x3b908d);let _0x55db8f=this['escapeHtml'](_0x3efb63);return _0x55db8f=_0x55db8f['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x55db8f=_0x55db8f['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x55db8f=_0x55db8f['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x55db8f=_0x55db8f['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x55db8f=_0x55db8f['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x55db8f=_0x55db8f['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x55db8f=_0x55db8f['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x55db8f=_0x55db8f['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x55db8f=_0x55db8f['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x55db8f=_0x55db8f['replace'](/\n\n/g,'</p><p>'),_0x55db8f=_0x55db8f['replace'](/\n/g,'<br>'),'<p>'+_0x55db8f+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x4f786d=new Uint8Array(0x10);crypto['getRandomValues'](_0x4f786d),_0x4f786d[0x6]=_0x4f786d[0x6]&0xf|0x40,_0x4f786d[0x8]=_0x4f786d[0x8]&0x3f|0x80;const _0xb0a9a1=Array['from'](_0x4f786d,_0x2dd69d=>_0x2dd69d['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0xb0a9a1['slice'](0x0,0x8)+'-'+_0xb0a9a1['slice'](0x8,0xc)+'-'+_0xb0a9a1['slice'](0xc,0x10)+'-'+_0xb0a9a1['slice'](0x10,0x14)+'-'+_0xb0a9a1['slice'](0x14);}};export class CustomSelect{constructor(_0x56361d,_0x334ab5={}){this['nativeSelect']=_0x56361d,this['options']=_0x334ab5,this['isOpen']=![],this['selectedValue']=_0x56361d['value']||'',this['searchable']=_0x334ab5['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x15e720=document['createElement']('div');_0x15e720['className']='custom-select';const _0x26e6e0=document['createElement']('div');_0x26e6e0['className']='custom-select-trigger',_0x26e6e0['setAttribute']('tabindex','0'),_0x26e6e0['setAttribute']('role','button'),_0x26e6e0['setAttribute']('aria-haspopup','listbox');const _0x42b989=document['createElement']('span');_0x42b989['className']='custom-select-trigger-text';const _0x4b2f09=document['createElement']('span');_0x4b2f09['className']='custom-select-arrow',_0x4b2f09['textContent']='▼',_0x26e6e0['appendChild'](_0x42b989),_0x26e6e0['appendChild'](_0x4b2f09);const _0x635d95=document['createElement']('div');_0x635d95['className']='custom-select-dropdown',_0x635d95['setAttribute']('role','listbox');if(this['searchable']){const _0x3adbff=document['createElement']('div');_0x3adbff['className']='custom-select-search';const _0x3e58e8=document['createElement']('input');_0x3e58e8['type']='text',_0x3e58e8['className']='custom-select-search-input',_0x3e58e8['placeholder']='Type\x20to\x20search...',_0x3e58e8['setAttribute']('aria-label','Search\x20options'),_0x3e58e8['addEventListener']('input',_0x31ac0a=>{this['searchQuery']=_0x31ac0a['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x3e58e8['addEventListener']('keydown',_0x3e31be=>{if(_0x3e31be['key']==='Escape')_0x3e31be['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3e31be['key']==='Enter'){_0x3e31be['preventDefault'](),_0x3e31be['stopPropagation']();const _0x5925ee=_0x635d95['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x5925ee){const _0x4def0c=_0x5925ee['getAttribute']('data-value');this['select'](_0x4def0c);}}}}),_0x3adbff['appendChild'](_0x3e58e8),_0x635d95['appendChild'](_0x3adbff),this['searchInput']=_0x3e58e8;}const _0x33a568=document['createElement']('div');_0x33a568['className']='custom-select-options',_0x635d95['appendChild'](_0x33a568),_0x15e720['appendChild'](_0x26e6e0),_0x15e720['appendChild'](_0x635d95),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x15e720,this['nativeSelect']),this['wrapper']=_0x15e720,this['trigger']=_0x26e6e0,this['triggerText']=_0x42b989,this['dropdown']=_0x635d95,this['optionsContainer']=_0x33a568,_0x26e6e0['addEventListener']('click',()=>this['toggle']()),_0x26e6e0['addEventListener']('keydown',_0x5dde74=>this['handleKeydown'](_0x5dde74)),document['addEventListener']('click',_0xf58f8c=>{!_0x15e720['contains'](_0xf58f8c['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x302a91=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x302a91['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x4c9594=new MutationObserver(()=>{this['updateDisabledState']();});_0x4c9594['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x12da78=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x12da78['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x755040=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x755040),this['trigger']['setAttribute']('aria-disabled',_0x755040?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x755040?'-1':'0'),_0x755040&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0xe4043f=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x2c60f7=_0xe4043f['filter'](_0x49356f=>!_0x49356f['disabled']&&!_0x49356f['hidden']);_0xe4043f['forEach']((_0x312069,_0x11c55)=>{const _0x4ab254=document['createElement']('div');_0x4ab254['className']='custom-select-option',_0x4ab254['textContent']=_0x312069['textContent'],_0x4ab254['setAttribute']('data-value',_0x312069['value']),_0x4ab254['setAttribute']('data-index',_0x11c55),_0x4ab254['setAttribute']('role','option'),_0x312069['disabled']?_0x4ab254['classList']['add']('disabled'):_0x4ab254['addEventListener']('click',()=>this['select'](_0x312069['value'])),_0x312069['value']===this['selectedValue']&&_0x4ab254['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4ab254),this['allOptions']['push']({'element':_0x4ab254,'text':_0x312069['textContent']['toLowerCase'](),'value':_0x312069['value'],'disabled':_0x312069['disabled']});});if(this['searchable']&&this['searchInput']){const _0x32da5e=this['searchInput']['parentElement'];_0x2c60f7['length']>0x3?_0x32da5e['style']['display']='':_0x32da5e['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x5cc7f1=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x82ec5b=>{if(!_0x5cc7f1||_0x82ec5b['disabled'])_0x82ec5b['element']['style']['display']='';else{const _0x13e116=_0x82ec5b['text']['includes'](_0x5cc7f1);_0x82ec5b['element']['style']['display']=_0x13e116?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3405cf){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3405cf,this['nativeSelect']['value']=_0x3405cf;const _0x232ea3=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x232ea3),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x3c2673=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x3c2673&&(this['triggerText']['textContent']=_0x3c2673['textContent'],_0x3c2673['disabled']||_0x3c2673['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x123649=>{_0x123649['getAttribute']('data-value')===this['selectedValue']?_0x123649['classList']['add']('selected'):_0x123649['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 _0x1402cd=window['getComputedStyle'](this['dropdown']);if(_0x1402cd['position']==='fixed'){const _0x374204=this['trigger']['getBoundingClientRect'](),_0x56bcfc=parseInt(_0x1402cd['maxHeight'])||0xc8,_0x4e9353=window['innerHeight'],_0x33265f=_0x4e9353-_0x374204['bottom'],_0x1405ea=_0x374204['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x14a848;_0x33265f<_0x56bcfc&&_0x1405ea>_0x33265f?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4e9353-_0x374204['top']+'px',_0x14a848=Math['min'](_0x56bcfc,_0x1405ea-0xa),this['dropdown']['style']['maxHeight']=_0x14a848+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x374204['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x14a848=Math['min'](_0x56bcfc,_0x33265f-0xa),this['dropdown']['style']['maxHeight']=_0x14a848+'px');if(this['optionsContainer']){let _0x5e2d28=_0x14a848;if(this['searchInput']){const _0xd8ce3d=this['searchInput']['parentElement'];_0xd8ce3d&&(_0x5e2d28-=_0xd8ce3d['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x5e2d28)+'px';}this['dropdown']['style']['left']=_0x374204['left']+'px',this['dropdown']['style']['width']=_0x374204['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x29b84a=this['searchInput']['parentElement'];_0x29b84a&&_0x29b84a['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'](_0x1f47a0){if(this['nativeSelect']['disabled'])return;if(_0x1f47a0['key']==='Enter'||_0x1f47a0['key']==='\x20')_0x1f47a0['preventDefault'](),this['toggle']();else _0x1f47a0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x1c9ee8='\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',_0x1c9ee8),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x254613=document['getElementById']('confirm-dialog-close'),_0x18b8f9=document['getElementById']('confirm-dialog-cancel'),_0x528189=document['getElementById']('confirm-dialog-confirm'),_0x442a52=this['_modal']['querySelector']('.modal-overlay');_0x254613['addEventListener']('click',()=>this['_resolve'](![])),_0x18b8f9['addEventListener']('click',()=>this['_resolve'](![])),_0x528189['addEventListener']('click',()=>this['_resolve'](!![])),_0x442a52['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x498d23=>{if(_0x498d23['key']==='Escape')_0x498d23['preventDefault'](),this['_resolve'](![]);else _0x498d23['key']==='Enter'&&(_0x498d23['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x1d2b5b,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x436039=>{this['_resolvePromise']=_0x436039,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x1d2b5b;const _0x36b20a=document['getElementById']('confirm-dialog-cancel'),_0x130a33=document['getElementById']('confirm-dialog-confirm');_0x36b20a['textContent']=cancelText,_0x130a33['textContent']=confirmText,_0x130a33['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x130a33['focus']();});},'_resolve'(_0x50654e){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x50654e),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x29b9ae,_0x1a678b={}){this['container']=_0x29b9ae,this['options']={'placeholder':_0x1a678b['placeholder']||'Type\x20to\x20search...','maxItems':_0x1a678b['maxItems']||0x64,'loadItems':_0x1a678b['loadItems']||(async()=>[]),'renderItem':_0x1a678b['renderItem']||(_0x5a19e7=>({'primary':String(_0x5a19e7),'secondary':''})),'onSelect':_0x1a678b['onSelect']||(()=>{}),'filterItems':_0x1a678b['filterItems']||null,'getItemValue':_0x1a678b['getItemValue']||(_0x4b4c9a=>_0x4b4c9a),'sortItems':_0x1a678b['sortItems']||null,'debounceMs':_0x1a678b['debounceMs']||0xc8,'minCharsForSearch':_0x1a678b['minCharsForSearch']||0x0,'emptyMessage':_0x1a678b['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x1a678b['loadingMessage']||'Loading...','preload':_0x1a678b['preload']!==![],'searchMode':_0x1a678b['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',_0x2dc94c=>this['onBlur'](_0x2dc94c)),this['input']['addEventListener']('input',_0x402bcf=>this['onInput'](_0x402bcf)),this['input']['addEventListener']('keydown',_0x34e17f=>this['onKeydown'](_0x34e17f)),this['clearBtn']['addEventListener']('mousedown',_0x228246=>{_0x228246['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x1642bf=>{_0x1642bf['preventDefault']();}),document['addEventListener']('click',_0xb10e57=>{!this['wrapper']['contains'](_0xb10e57['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(_0x1feea7){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x1feea7);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x232efb){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x448109){const _0x5de2d7=_0x448109['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x5de2d7);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x5de2d7):this['loadAndShow'](_0x5de2d7);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x7625e9){switch(_0x7625e9['key']){case'ArrowDown':_0x7625e9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x7625e9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x7625e9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x7625e9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5d34a6){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x3787c3=this['selectedIndex']+_0x5d34a6;if(_0x3787c3>=0x0&&_0x3787c3<this['filteredItems']['length']){this['selectedIndex']=_0x3787c3,this['updateSelectionHighlight']();const _0x5223a6=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5223a6[this['selectedIndex']]&&_0x5223a6[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x958048=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x958048['forEach']((_0x5252fd,_0x2b42f1)=>{_0x5252fd['classList']['toggle']('keyboard-selected',_0x2b42f1===this['selectedIndex']);});}async['loadAndShow'](_0x2081ef){this['showLoading']();try{const _0x55354d=await this['options']['loadItems'](_0x2081ef);if(this['options']['searchMode']==='server'){let _0x1ccd76=_0x55354d;this['options']['sortItems']&&(_0x1ccd76=this['options']['sortItems']([..._0x55354d]));this['filteredItems']=_0x1ccd76;const _0x14f0e0=this['filteredItems']['length']>=this['options']['maxItems'];_0x14f0e0&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x14f0e0),this['open']();}else this['allItems']=_0x55354d,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x2081ef);}catch(_0x50de8e){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x50de8e),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x269825){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x269825):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x3dcfb1=this['filteredItems']['length']>=this['options']['maxItems'];_0x3dcfb1&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3dcfb1),this['open']();}['renderItems'](_0x68e085){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']((_0x4ec396,_0x1b9803)=>{const _0x25c094=document['createElement']('div');_0x25c094['className']='autocomplete-select-item',_0x25c094['setAttribute']('role','option'),_0x25c094['setAttribute']('data-index',_0x1b9803);const _0x151d4c=this['options']['renderItem'](_0x4ec396);let _0x1c8af3='';_0x151d4c['icon']&&(_0x1c8af3='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x151d4c['iconClass']||'')+'\x22>'+_0x151d4c['icon']+'</span>'),_0x25c094['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1c8af3+'\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'](_0x151d4c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x151d4c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x151d4c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x25c094['addEventListener']('click',()=>{this['selectItem'](_0x4ec396);}),_0x25c094['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x1b9803,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x25c094);}),_0x68e085?(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'](_0x109c54){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x109c54)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x3249ab){this['selectedItem']=_0x3249ab;const _0x4ba656=this['options']['renderItem'](_0x3249ab);this['input']['value']=_0x4ba656['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x3249ab);}['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'](_0x417fc6){if(_0x417fc6){this['selectedItem']=_0x417fc6;const _0x34afc=this['options']['renderItem'](_0x417fc6);this['input']['value']=_0x34afc['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x274337){this['allItems']=_0x274337,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'](_0x21859e){this['input']['placeholder']=_0x21859e;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x568946=null){const _0x5b860f=document['getElementById']('admin-menu-container'),_0x347e62=document['getElementById']('admin-menu-btn'),_0xdbed08=document['getElementById']('admin-menu');if(!_0x5b860f||!_0x347e62||!_0xdbed08)return;try{!_0x568946&&(_0x568946=await API['getCurrentUser']());if(_0x568946){const _0x27050c=window['Permissions'],_0x588bcd=_0x27050c['hasServerPermission'](_0x568946,'*')||_0x27050c['hasEnvPermission'](_0x568946,'environments:manage')||_0x27050c['hasServerPermission'](_0x568946,'users:create')||_0x27050c['hasTeamPermission'](_0x568946,'teams:manage')||_0x27050c['hasEnvPermission'](_0x568946,'environments:view_details');if(!_0x588bcd)return;_0x5b860f['hidden']=![];if(!_0x27050c['hasServerPermission'](_0x568946,'*')){const _0x8f290b=_0xdbed08['querySelectorAll']('.admin-menu-item');_0x8f290b['forEach'](_0x44d1a1=>{const _0x29135d=_0x44d1a1['querySelector']('.option-text')?.['textContent']?.['trim']();_0x29135d==='Users'&&!_0x27050c['hasServerPermission'](_0x568946,'users:create')&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Skills'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Server\x20Settings'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Server\x20Health'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Git\x20History'&&(_0x44d1a1['hidden']=!![]),_0x29135d==='Roles'&&(_0x44d1a1['hidden']=!![]);});}_0x347e62['addEventListener']('click',_0x5bc390=>{_0x5bc390['stopPropagation']();const _0x14d691=document['getElementById']('actions-menu');if(_0x14d691)_0x14d691['hidden']=!![];_0xdbed08['hidden']=!_0xdbed08['hidden'];}),document['addEventListener']('click',_0x5ed598=>{!_0xdbed08['hidden']&&!_0x347e62['contains'](_0x5ed598['target'])&&!_0xdbed08['contains'](_0x5ed598['target'])&&(_0xdbed08['hidden']=!![]);}),document['addEventListener']('keydown',_0x4e0fe2=>{_0x4e0fe2['key']==='Escape'&&!_0xdbed08['hidden']&&(_0xdbed08['hidden']=!![]);});const _0x47ca3d=document['getElementById']('server-health-btn');_0x47ca3d&&_0x47ca3d['addEventListener']('click',async()=>{_0xdbed08['hidden']=!![];const {openServerHealthModal:_0x3de4ad}=await import('./server-health.js');_0x3de4ad();});}}catch(_0x2c9149){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x2c9149['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 _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};