@profoundlogic/coderflow-server 0.6.4 → 0.6.6

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 (169) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  62. package/dist/lib/model-fetcher.js +1 -1
  63. package/dist/lib/notifications.js +1 -1
  64. package/dist/lib/objective-context.js +1 -1
  65. package/dist/lib/oidc-auth.js +1 -1
  66. package/dist/lib/oidc-device-flow.js +1 -1
  67. package/dist/lib/passwordTokens.js +1 -1
  68. package/dist/lib/permission-resolver.js +1 -1
  69. package/dist/lib/pin-cascade.js +1 -1
  70. package/dist/lib/provider-accounts.js +1 -1
  71. package/dist/lib/provider-oauth.js +1 -1
  72. package/dist/lib/provider-profile.js +1 -1
  73. package/dist/lib/provider-token-refresh.js +1 -1
  74. package/dist/lib/rbac-user-state.js +1 -1
  75. package/dist/lib/request-url.js +1 -1
  76. package/dist/lib/rewind.js +1 -1
  77. package/dist/lib/role-definitions.js +1 -1
  78. package/dist/lib/roles.js +1 -1
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-name-format.js +1 -1
  84. package/dist/lib/task-name-generator.js +1 -1
  85. package/dist/lib/task-source-metadata.js +1 -1
  86. package/dist/lib/teams.js +1 -1
  87. package/dist/lib/user-git-oauth.js +1 -1
  88. package/dist/lib/user-git-tokens.js +1 -1
  89. package/dist/lib/users.js +1 -1
  90. package/dist/middleware/requireAuth.js +1 -1
  91. package/dist/middleware/requireInit.js +1 -1
  92. package/dist/middleware/requirePermission.js +1 -1
  93. package/dist/package.json +1 -1
  94. package/dist/playwright.config.js +1 -1
  95. package/dist/playwright.task-terminal.config.js +1 -1
  96. package/dist/routes/apiKeys.js +1 -1
  97. package/dist/routes/auth-oidc.js +1 -1
  98. package/dist/routes/auth.js +1 -1
  99. package/dist/routes/automations.js +1 -1
  100. package/dist/routes/bindings.js +1 -1
  101. package/dist/routes/build.js +1 -1
  102. package/dist/routes/containers.js +1 -1
  103. package/dist/routes/deploy-task.js +1 -1
  104. package/dist/routes/environment-management.js +1 -1
  105. package/dist/routes/environments.js +1 -1
  106. package/dist/routes/external-skills.js +1 -1
  107. package/dist/routes/git-credentials.js +1 -1
  108. package/dist/routes/git-oauth.js +1 -1
  109. package/dist/routes/git-provider-setup.js +1 -1
  110. package/dist/routes/health.js +1 -1
  111. package/dist/routes/jira.js +1 -1
  112. package/dist/routes/objective-management.js +1 -1
  113. package/dist/routes/password.js +1 -1
  114. package/dist/routes/prompt.js +1 -1
  115. package/dist/routes/provider-auth.js +1 -1
  116. package/dist/routes/qa.js +1 -1
  117. package/dist/routes/roles.js +1 -1
  118. package/dist/routes/settings.js +1 -1
  119. package/dist/routes/skill-management.js +1 -1
  120. package/dist/routes/skills.js +1 -1
  121. package/dist/routes/tasks.js +1 -1
  122. package/dist/routes/teams.js +1 -1
  123. package/dist/routes/templates.js +1 -1
  124. package/dist/routes/test-task.js +1 -1
  125. package/dist/routes/test.js +1 -1
  126. package/dist/routes/users.js +1 -1
  127. package/dist/routes/visualizations.js +1 -1
  128. package/dist/scripts/create-user.js +1 -1
  129. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  130. package/dist/start.js +1 -1
  131. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  132. package/dist/web-ui/public/activity-feed.js +1 -1
  133. package/dist/web-ui/public/activity-formatters.js +1 -1
  134. package/dist/web-ui/public/agent-event-parser.js +1 -1
  135. package/dist/web-ui/public/app.js +1 -1
  136. package/dist/web-ui/public/approve-dialog.js +1 -1
  137. package/dist/web-ui/public/automation-links.js +1 -1
  138. package/dist/web-ui/public/automation-schedule.js +1 -1
  139. package/dist/web-ui/public/comments-widget.js +1 -1
  140. package/dist/web-ui/public/diff-utils.js +1 -1
  141. package/dist/web-ui/public/environments.js +1 -1
  142. package/dist/web-ui/public/feedback-widget.js +1 -1
  143. package/dist/web-ui/public/file-selection-tree.js +1 -1
  144. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  145. package/dist/web-ui/public/git-history.js +1 -1
  146. package/dist/web-ui/public/git-status.js +1 -1
  147. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  148. package/dist/web-ui/public/index.js +1 -1
  149. package/dist/web-ui/public/login.js +1 -1
  150. package/dist/web-ui/public/markdown-editor.js +1 -1
  151. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  152. package/dist/web-ui/public/modal-maximize.js +1 -1
  153. package/dist/web-ui/public/notifications.js +1 -1
  154. package/dist/web-ui/public/permissions.js +1 -1
  155. package/dist/web-ui/public/pr-dialog.js +1 -1
  156. package/dist/web-ui/public/roles.js +1 -1
  157. package/dist/web-ui/public/server-health.js +1 -1
  158. package/dist/web-ui/public/settings.js +1 -1
  159. package/dist/web-ui/public/setup-password.js +1 -1
  160. package/dist/web-ui/public/skills.js +1 -1
  161. package/dist/web-ui/public/sse-client.js +1 -1
  162. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  163. package/dist/web-ui/public/task.js +1 -1
  164. package/dist/web-ui/public/teams.js +1 -1
  165. package/dist/web-ui/public/terminal.js +1 -1
  166. package/dist/web-ui/public/theme.js +1 -1
  167. package/dist/web-ui/public/users.js +1 -1
  168. package/dist/web-ui/public/variant-grouping.js +1 -1
  169. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x558bfe=window['location']['pathname'],_0x1a621b=_0x558bfe['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x1a621b)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x1a621b[0x1]),_0x1a621b[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x54768b={}){const _0x3ad123=new URLSearchParams();_0x54768b['userId']&&_0x3ad123['set']('userId',String(_0x54768b['userId']));_0x54768b['automation']&&_0x3ad123['set']('automation',String(_0x54768b['automation']));const _0x37b635=API_BASE+'/tasks/stats'+(_0x3ad123['toString']()?'?'+_0x3ad123['toString']():''),_0x44ebcc=await fetch(_0x37b635);if(!_0x44ebcc['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x44ebcc['statusText']);return await _0x44ebcc['json']();},async 'getTasks'(_0x46df3f={}){const _0x4dd9ea=new URLSearchParams();_0x46df3f['status']&&_0x4dd9ea['set']('status',String(_0x46df3f['status']));_0x46df3f['environment']&&_0x4dd9ea['set']('environment',String(_0x46df3f['environment']));_0x46df3f['automation']&&_0x4dd9ea['set']('automation',String(_0x46df3f['automation']));if(_0x46df3f['include']){const _0x27d059=Array['isArray'](_0x46df3f['include'])?_0x46df3f['include']['join'](','):String(_0x46df3f['include']);_0x27d059&&_0x4dd9ea['set']('include',_0x27d059);}_0x46df3f['filter']&&_0x4dd9ea['set']('filter',String(_0x46df3f['filter']));_0x46df3f['page']&&_0x4dd9ea['set']('page',String(_0x46df3f['page']));_0x46df3f['limit']&&_0x4dd9ea['set']('limit',String(_0x46df3f['limit']));_0x46df3f['userId']&&_0x4dd9ea['set']('userId',String(_0x46df3f['userId']));_0x46df3f['search']&&_0x4dd9ea['set']('search',String(_0x46df3f['search']));_0x46df3f['includeChildTasks']&&_0x4dd9ea['set']('includeChildTasks','true');const _0x4d95a3=API_BASE+'/tasks'+(_0x4dd9ea['toString']()?'?'+_0x4dd9ea['toString']():''),_0x4600a0=await fetch(_0x4d95a3);if(!_0x4600a0['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4600a0['statusText']);return await _0x4600a0['json']();},async 'getAutomations'(_0xef3604={}){const _0x50fade=new URLSearchParams();_0xef3604['environment']&&_0x50fade['set']('environment',String(_0xef3604['environment']));const _0x585126=await fetch(API_BASE+'/api/automations'+(_0x50fade['toString']()?'?'+_0x50fade['toString']():''));if(!_0x585126['ok']){const _0x34f575=await _0x585126['json']()['catch'](()=>({}));throw new Error(_0x34f575['message']||_0x34f575['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x585126['statusText']);}return await _0x585126['json']();},async 'getAutomation'(_0x5d3f7b){const _0x4613fe=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5d3f7b));if(!_0x4613fe['ok']){const _0x5a167a=await _0x4613fe['json']()['catch'](()=>({}));throw new Error(_0x5a167a['message']||_0x5a167a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x4613fe['statusText']);}return await _0x4613fe['json']();},async 'createAutomation'(_0x1cf893){const _0x27fe61=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cf893||{})});if(!_0x27fe61['ok']){const _0x3b7add=await _0x27fe61['json']()['catch'](()=>({}));throw new Error(_0x3b7add['message']||_0x3b7add['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x27fe61['statusText']);}return await _0x27fe61['json']();},async 'updateAutomation'(_0x29a69a,_0x564f91){const _0x37ff5b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x29a69a),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x564f91||{})});if(!_0x37ff5b['ok']){const _0x544675=await _0x37ff5b['json']()['catch'](()=>({}));throw new Error(_0x544675['message']||_0x544675['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x37ff5b['statusText']);}return await _0x37ff5b['json']();},async 'deleteAutomation'(_0x56c48){const _0x1b6ade=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x56c48),{'method':'DELETE'});if(!_0x1b6ade['ok']){const _0x5d8955=await _0x1b6ade['json']()['catch'](()=>({}));throw new Error(_0x5d8955['message']||_0x5d8955['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x1b6ade['statusText']);}return await _0x1b6ade['json']();},async 'triggerAutomation'(_0x43e54c){const _0x16aa3a=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x43e54c)+'/trigger',{'method':'POST'});if(!_0x16aa3a['ok']){const _0x54442a=await _0x16aa3a['json']()['catch'](()=>({}));throw new Error(_0x54442a['message']||_0x54442a['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x16aa3a['statusText']);}return await _0x16aa3a['json']();},async 'setAutomationEnabled'(_0x3fb294,_0x212717){const _0x364d8b=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x3fb294)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x212717})});if(!_0x364d8b['ok']){const _0x3ce5a0=await _0x364d8b['json']()['catch'](()=>({}));throw new Error(_0x3ce5a0['message']||_0x3ce5a0['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x364d8b['statusText']);}return await _0x364d8b['json']();},async 'getAutomationHistory'(_0x2892b0,_0x11f16e=0x32){const _0x1560e0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2892b0)+'/history?limit='+encodeURIComponent(String(_0x11f16e)));if(!_0x1560e0['ok']){const _0x2fd163=await _0x1560e0['json']()['catch'](()=>({}));throw new Error(_0x2fd163['message']||_0x2fd163['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x1560e0['statusText']);}return await _0x1560e0['json']();},async 'getTask'(_0x370c2c,_0x3b5508={}){const _0x1d43f1=new URLSearchParams();if(_0x3b5508['include']){const _0x390f4b=Array['isArray'](_0x3b5508['include'])?_0x3b5508['include']['join'](','):String(_0x3b5508['include']);if(_0x390f4b)_0x1d43f1['set']('include',_0x390f4b);}const _0x3886f6=await fetch(API_BASE+'/tasks/'+_0x370c2c+(_0x1d43f1['toString']()?'?'+_0x1d43f1['toString']():''));if(!_0x3886f6['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x3886f6['statusText']);return await _0x3886f6['json']();},async 'getTaskResults'(_0x11021b){const _0x582f67=await fetch(API_BASE+'/tasks/'+_0x11021b+'/results');if(!_0x582f67['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x582f67['statusText']);return await _0x582f67['json']();},async 'getTaskPatches'(_0x5afbaa){const _0x310495=await fetch(API_BASE+'/tasks/'+_0x5afbaa+'/patches');if(!_0x310495['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x310495['statusText']);return await _0x310495['json']();},async 'getTaskAttachments'(_0x10572a){const _0x23ae5f=await fetch(API_BASE+'/tasks/'+_0x10572a+'/attachments');if(!_0x23ae5f['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x23ae5f['statusText']);return await _0x23ae5f['json']();},async 'uploadAttachments'(_0x4c2a2d,_0x16f212){const _0x4dc101=new FormData();for(const _0x88053d of _0x16f212){_0x4dc101['append']('attachments',_0x88053d);}const _0x44f016=await fetch(API_BASE+'/tasks/'+_0x4c2a2d+'/attachments',{'method':'POST','body':_0x4dc101});if(!_0x44f016['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x44f016['statusText']);return await _0x44f016['json']();},async 'isAINameGenerationAvailable'(){try{const _0x21d0dd=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x21d0dd['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x21d0dd['json']();}catch(_0x3afa8a){return{'available':![],'reason':_0x3afa8a['message']};}},async 'generateTaskName'(_0x45c767){try{const _0x4a8bac=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x45c767})});return await _0x4a8bac['json']();}catch(_0x1be9b6){return{'success':![],'error':_0x1be9b6['message']};}},async 'createTask'(_0x11a4e6){let _0x592c93,_0x2c8606={};if(_0x11a4e6['files']&&_0x11a4e6['files']['length']>0x0){const _0x43b22c=new FormData();for(const [_0x4283ae,_0x1b84ea]of Object['entries'](_0x11a4e6)){if(_0x4283ae!=='files'){if(_0x1b84ea==null)continue;typeof _0x1b84ea==='object'?_0x43b22c['append'](_0x4283ae,JSON['stringify'](_0x1b84ea)):_0x43b22c['append'](_0x4283ae,String(_0x1b84ea));}}for(const _0x2494ab of _0x11a4e6['files']){_0x43b22c['append']('attachments',_0x2494ab);}_0x592c93=_0x43b22c;}else _0x2c8606['Content-Type']='application/json',_0x592c93=JSON['stringify'](_0x11a4e6);const _0x2add2d=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x2c8606,'body':_0x592c93});if(!_0x2add2d['ok']){const _0x4fdbbe=await _0x2add2d['json'](),_0x460021=new Error(_0x4fdbbe['error']||'Failed\x20to\x20create\x20task:\x20'+_0x2add2d['statusText']),{message:_0x21993c,..._0xa57a02}=_0x4fdbbe;Object['assign'](_0x460021,_0xa57a02);throw _0x460021;}return await _0x2add2d['json']();},async 'createTestTask'(_0x1cb1ae){const _0x3c8a1e=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1cb1ae)});if(!_0x3c8a1e['ok']){const _0x1772ae=await _0x3c8a1e['json']();throw new Error(_0x1772ae['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c8a1e['statusText']);}return await _0x3c8a1e['json']();},async 'createEphemeralTest'(_0x102f51){const _0x3120ad=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x102f51)});if(!_0x3120ad['ok']){const _0x4f17fa=await _0x3120ad['json']();throw new Error(_0x4f17fa['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x3120ad['statusText']);}return await _0x3120ad['json']();},async 'createDeployTask'(_0x41ae1c){const _0x3c9168=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41ae1c)});if(!_0x3c9168['ok']){const _0x50264e=await _0x3c9168['json']();throw new Error(_0x50264e['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3c9168['statusText']);}return await _0x3c9168['json']();},async 'getEnvironments'(){const _0x372c30=await fetch(API_BASE+'/environments');if(!_0x372c30['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x372c30['statusText']);return await _0x372c30['json']();},async 'getEnvironment'(_0x53bcb8){const _0x16dfa2=await fetch(API_BASE+'/environments/'+_0x53bcb8);if(!_0x16dfa2['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x16dfa2['statusText']);return await _0x16dfa2['json']();},async 'getEnvironmentRepoHistory'(_0x4c7658,_0x40a561,_0x549aa9={}){if(!_0x4c7658||!_0x40a561)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x1c4748=new URLSearchParams();if(_0x549aa9['limit'])_0x1c4748['set']('limit',String(_0x549aa9['limit']));if(_0x549aa9['offset'])_0x1c4748['set']('offset',String(_0x549aa9['offset']));if(_0x549aa9['search'])_0x1c4748['set']('search',String(_0x549aa9['search']));if(_0x549aa9['branch'])_0x1c4748['set']('branch',String(_0x549aa9['branch']));const _0x5ae376=API_BASE+'/environments/'+encodeURIComponent(_0x4c7658)+'/repos/'+encodeURIComponent(_0x40a561)+'/git/history',_0x119c75=await fetch(''+_0x5ae376+(_0x1c4748['toString']()?'?'+_0x1c4748['toString']():''));if(!_0x119c75['ok']){const _0xc73c08=await _0x119c75['json']()['catch'](()=>({}));throw new Error(_0xc73c08['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x119c75['statusText']);}return await _0x119c75['json']();},async 'getEnvironmentRepoCommit'(_0x3b4fe9,_0x4a18e3,_0x267af0){if(!_0x3b4fe9||!_0x4a18e3||!_0x267af0)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x262ded=API_BASE+'/environments/'+encodeURIComponent(_0x3b4fe9)+'/repos/'+encodeURIComponent(_0x4a18e3)+'/git/commits/'+encodeURIComponent(_0x267af0),_0x356f95=await fetch(_0x262ded);if(!_0x356f95['ok']){const _0x4cb4ce=await _0x356f95['json']()['catch'](()=>({}));throw new Error(_0x4cb4ce['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x356f95['statusText']);}return await _0x356f95['json']();},async 'getEnvironmentRepoBranches'(_0x145907,_0x2bf629){if(!_0x145907||!_0x2bf629)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x316dc1=API_BASE+'/environments/'+encodeURIComponent(_0x145907)+'/repos/'+encodeURIComponent(_0x2bf629)+'/git/branches',_0xb04567=await fetch(_0x316dc1);if(!_0xb04567['ok']){const _0x318dfe=await _0xb04567['json']()['catch'](()=>({}));throw new Error(_0x318dfe['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0xb04567['statusText']);}return await _0xb04567['json']();},async 'revertEnvironmentRepoCommit'(_0x1ad243,_0x12d720,_0x3c243d,_0x10698a={}){if(!_0x1ad243||!_0x12d720||!_0x3c243d)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0xa41b7a=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x1ad243)+'/repos/'+encodeURIComponent(_0x12d720)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x3c243d,..._0x10698a})});if(!_0xa41b7a['ok']){const _0xd333a0=await _0xa41b7a['json']()['catch'](()=>({}));throw new Error(_0xd333a0['message']||_0xd333a0['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0xa41b7a['statusText']);}return await _0xa41b7a['json']();},async 'getTemplates'(_0x12dc59={}){const _0x4b5bcc=new URLSearchParams();if(_0x12dc59['include']){const _0x447c5e=Array['isArray'](_0x12dc59['include'])?_0x12dc59['include']['join'](','):String(_0x12dc59['include']);if(_0x447c5e)_0x4b5bcc['set']('include',_0x447c5e);}const _0x4889a2=await fetch(API_BASE+'/templates'+(_0x4b5bcc['toString']()?'?'+_0x4b5bcc['toString']():''));if(!_0x4889a2['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x4889a2['statusText']);return await _0x4889a2['json']();},async 'getTemplatesForEnvironment'(_0x23cfd4,_0x4ed2b3={}){if(!_0x23cfd4)throw new Error('Environment\x20name\x20is\x20required');const _0x1adab5=new URLSearchParams();if(_0x4ed2b3['include']){const _0x3a51b7=Array['isArray'](_0x4ed2b3['include'])?_0x4ed2b3['include']['join'](','):String(_0x4ed2b3['include']);if(_0x3a51b7)_0x1adab5['set']('include',_0x3a51b7);}const _0xd9187e=await fetch(API_BASE+'/templates/'+_0x23cfd4+(_0x1adab5['toString']()?'?'+_0x1adab5['toString']():''));if(!_0xd9187e['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x23cfd4+':\x20'+_0xd9187e['statusText']);return await _0xd9187e['json']();},async 'getTemplate'(_0x401727,_0x401e97,_0x35106b={}){if(!_0x401727||!_0x401e97)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x426764=new URLSearchParams();if(_0x35106b['include']){const _0x1993ed=Array['isArray'](_0x35106b['include'])?_0x35106b['include']['join'](','):String(_0x35106b['include']);if(_0x1993ed)_0x426764['set']('include',_0x1993ed);}const _0x503a1f=await fetch(API_BASE+'/templates/'+_0x401727+'/'+_0x401e97+(_0x426764['toString']()?'?'+_0x426764['toString']():''));if(!_0x503a1f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x503a1f['statusText']);return await _0x503a1f['json']();},async 'getTaskLogs'(_0x63639b,_0x225ffe={}){if(!_0x63639b)throw new Error('Task\x20ID\x20is\x20required');const _0x5082eb=new URLSearchParams();_0x225ffe['tail']&&_0x5082eb['set']('tail',String(_0x225ffe['tail']));const _0x34f739=await fetch(API_BASE+'/tasks/'+_0x63639b+'/logs'+(_0x5082eb['toString']()?'?'+_0x5082eb['toString']():''));if(!_0x34f739['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x34f739['statusText']);return await _0x34f739['text']();},async 'getContainers'(){const _0x416107=await fetch(API_BASE+'/containers');if(!_0x416107['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x416107['statusText']);return await _0x416107['json']();},async 'getContainer'(_0x48389e){const _0x5cdcaa=await fetch(API_BASE+'/containers/'+_0x48389e);if(!_0x5cdcaa['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x5cdcaa['statusText']);return await _0x5cdcaa['json']();},async 'startInteractiveContainer'(_0x300f92){const _0x40ca32=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x300f92)});if(!_0x40ca32['ok']){const _0x271852=await _0x40ca32['json']()['catch'](()=>({}));throw new Error(_0x271852['message']||'Failed\x20to\x20start\x20container:\x20'+_0x40ca32['statusText']);}return await _0x40ca32['json']();},async 'stopContainer'(_0x32e44d){const _0x8dad81=await fetch(API_BASE+'/containers/'+_0x32e44d,{'method':'DELETE'});if(!_0x8dad81['ok']){const _0x352248=await _0x8dad81['json']()['catch'](()=>({}));throw new Error(_0x352248['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x8dad81['statusText']);}return await _0x8dad81['json']();},async 'stopTask'(_0x26ad68){if(!_0x26ad68)throw new Error('Task\x20ID\x20is\x20required');const _0x4508e3=await fetch(API_BASE+'/tasks/'+_0x26ad68+'/stop',{'method':'POST'});if(!_0x4508e3['ok']){const _0x1d2c9e=await _0x4508e3['json']()['catch'](()=>({}));throw new Error(_0x1d2c9e['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x4508e3['statusText']);}return await _0x4508e3['json']();},async 'interruptTask'(_0x1da781){if(!_0x1da781)throw new Error('Task\x20ID\x20is\x20required');const _0x5bfd6c=await fetch(API_BASE+'/tasks/'+_0x1da781+'/interrupt',{'method':'POST'});if(!_0x5bfd6c['ok']){const _0x59cb1f=await _0x5bfd6c['json']()['catch'](()=>({}));throw new Error(_0x59cb1f['error']||_0x59cb1f['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x5bfd6c['statusText']);}return await _0x5bfd6c['json']();},async 'startTask'(_0x39cdb2){if(!_0x39cdb2)throw new Error('Task\x20ID\x20is\x20required');const _0xc2bccd=await fetch(API_BASE+'/tasks/'+_0x39cdb2+'/start',{'method':'POST'});if(!_0xc2bccd['ok']){const _0xc0a047=await _0xc2bccd['json']()['catch'](()=>({}));throw new Error(_0xc0a047['error']||'Failed\x20to\x20start\x20task:\x20'+_0xc2bccd['statusText']);}return await _0xc2bccd['json']();},async 'deleteTask'(_0x598615){if(!_0x598615)throw new Error('Task\x20ID\x20is\x20required');const _0x8ad427=await fetch(API_BASE+'/tasks/'+_0x598615,{'method':'DELETE'});if(!_0x8ad427['ok']){const _0x408ca6=await _0x8ad427['json']()['catch'](()=>({}));throw new Error(_0x408ca6['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x8ad427['statusText']);}return await _0x8ad427['json']();},async 'refreshTasksFromDisk'(){const _0x23eed2=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x23eed2['ok']){const _0x48095a=await _0x23eed2['json']()['catch'](()=>({}));throw new Error(_0x48095a['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x23eed2['statusText']);}return await _0x23eed2['json']();},async 'approveTask'(_0x21e26e,_0x2daffc={}){if(!_0x21e26e)throw new Error('Task\x20ID\x20is\x20required');const _0x2f2182={'commit_message':_0x2daffc['commit_message']||'','pull':_0x2daffc['pull']??![],'push':_0x2daffc['push']??![]};_0x2daffc['new_branch']&&(_0x2f2182['new_branch']=_0x2daffc['new_branch']);const _0x98aee3=await fetch(API_BASE+'/tasks/'+_0x21e26e+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2f2182)});if(!_0x98aee3['ok']){const _0x425838=await _0x98aee3['json']()['catch'](()=>({}));let _0xaa81f9=_0x425838['error']||_0x425838['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x98aee3['statusText'];if(_0x425838['results']&&Array['isArray'](_0x425838['results'])){const _0x5cc6da=_0x425838['results']['filter'](_0x4989f4=>!_0x4989f4['success']&&_0x4989f4['error']);_0x5cc6da['length']>0x0&&(_0xaa81f9=_0x5cc6da[0x0]['error']);}throw new Error(_0xaa81f9);}return await _0x98aee3['json']();},async 'getPullRequestInfo'(_0x387d50){if(!_0x387d50)throw new Error('Task\x20ID\x20is\x20required');const _0x4f8b11=await fetch(API_BASE+'/tasks/'+_0x387d50+'/pull-request-info');if(!_0x4f8b11['ok']){const _0x47ef77=await _0x4f8b11['json']()['catch'](()=>({}));throw new Error(_0x47ef77['error']||_0x47ef77['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x4f8b11['statusText']);}return await _0x4f8b11['json']();},async 'createPullRequests'(_0x5c589a,_0x177f21){if(!_0x5c589a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x177f21||!Array['isArray'](_0x177f21))throw new Error('repos\x20array\x20is\x20required');const _0x28dcb3=await fetch(API_BASE+'/tasks/'+_0x5c589a+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x177f21})});if(!_0x28dcb3['ok']){const _0x2db840=await _0x28dcb3['json']()['catch'](()=>({}));let _0x1dc302=_0x2db840['error']||_0x2db840['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x28dcb3['statusText'];if(_0x2db840['results']&&Array['isArray'](_0x2db840['results'])){const _0x5a3191=_0x2db840['results']['filter'](_0x1dd7a3=>!_0x1dd7a3['success']&&_0x1dd7a3['error']);_0x5a3191['length']>0x0&&(_0x1dc302=_0x5a3191[0x0]['error']);}throw new Error(_0x1dc302);}return await _0x28dcb3['json']();},async 'syncRepos'(_0x11456d){if(!_0x11456d)throw new Error('Task\x20ID\x20is\x20required');const _0x329278=await fetch(API_BASE+'/tasks/'+_0x11456d+'/sync-repos',{'method':'POST'});if(!_0x329278['ok']){const _0x16f771=await _0x329278['json']()['catch'](()=>({}));throw new Error(_0x16f771['error']||_0x16f771['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x329278['statusText']);}return await _0x329278['json']();},async 'getIbmiSyncInfo'(_0x43673f){if(!_0x43673f)throw new Error('Task\x20ID\x20is\x20required');const _0x1817c9=await fetch(API_BASE+'/tasks/'+_0x43673f+'/ibmi-sync-info');if(!_0x1817c9['ok']){const _0x36fe62=await _0x1817c9['json']()['catch'](()=>({}));throw new Error(_0x36fe62['error']||_0x36fe62['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x1817c9['json']();},async 'getSyncFiles'(_0x152573){if(!_0x152573)throw new Error('Task\x20ID\x20is\x20required');const _0x53cf19=await fetch(API_BASE+'/tasks/'+_0x152573+'/sync-to-ibmi/files');if(!_0x53cf19['ok']){const _0x5119b9=await _0x53cf19['json']()['catch'](()=>({}));throw new Error(_0x5119b9['error']||_0x5119b9['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x53cf19['json']();},async 'syncToIbmi'(_0x48916a,_0x2c1872,_0x5988ed=null,_0x1bbee7=null,_0x49ccdb=null){if(!_0x48916a)throw new Error('Task\x20ID\x20is\x20required');const _0x55651a={'library':_0x2c1872};if(_0x5988ed)_0x55651a['user']=_0x5988ed;if(_0x1bbee7)_0x55651a['password']=_0x1bbee7;if(_0x49ccdb)_0x55651a['files']=_0x49ccdb;const _0x280aec=await fetch(API_BASE+'/tasks/'+_0x48916a+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55651a)});if(!_0x280aec['ok']){const _0x2c46b3=await _0x280aec['json']()['catch'](()=>({}));throw new Error(_0x2c46b3['error']||_0x2c46b3['message']||'Sync\x20failed');}return await _0x280aec['json']();},async 'getIbmiSyncLog'(_0x378669){if(!_0x378669)throw new Error('Task\x20ID\x20is\x20required');const _0x55b045=await fetch(API_BASE+'/tasks/'+_0x378669+'/ibmi-sync-log');if(!_0x55b045['ok']){const _0x23be01=await _0x55b045['json']()['catch'](()=>({}));throw new Error(_0x23be01['error']||_0x23be01['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x55b045['json']();},async 'pullChanges'(_0x526975){if(!_0x526975)throw new Error('Task\x20ID\x20is\x20required');const _0x45c4b5=await fetch(API_BASE+'/tasks/'+_0x526975+'/pull-changes',{'method':'POST'});if(!_0x45c4b5['ok']){const _0x12fd71=await _0x45c4b5['json']()['catch'](()=>({}));throw new Error(_0x12fd71['error']||_0x12fd71['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x45c4b5['statusText']);}return await _0x45c4b5['json']();},async 'readFile'(_0x4bba86,_0x53b60a){if(!_0x4bba86)throw new Error('Task\x20ID\x20is\x20required');if(!_0x53b60a)throw new Error('File\x20path\x20is\x20required');const _0x4b3aee=await fetch(API_BASE+'/tasks/'+_0x4bba86+'/files?path='+encodeURIComponent(_0x53b60a));if(!_0x4b3aee['ok']){const _0x4b9fca=await _0x4b3aee['json']()['catch'](()=>({}));throw new Error(_0x4b9fca['error']||_0x4b9fca['message']||'Failed\x20to\x20read\x20file:\x20'+_0x4b3aee['statusText']);}return await _0x4b3aee['json']();},'getTaskFileDownloadUrl'(_0x2c1429,_0xac2afb){if(!_0x2c1429)throw new Error('Task\x20ID\x20is\x20required');if(!_0xac2afb)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2c1429+'/files/download?path='+encodeURIComponent(_0xac2afb);},async 'writeFile'(_0x2cf831,_0x3c09b9,_0x48cb6d){if(!_0x2cf831)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3c09b9)throw new Error('File\x20path\x20is\x20required');if(_0x48cb6d===undefined)throw new Error('Content\x20is\x20required');const _0x1c5294=await fetch(API_BASE+'/tasks/'+_0x2cf831+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3c09b9,'content':_0x48cb6d})});if(!_0x1c5294['ok']){const _0x1628f0=await _0x1c5294['json']()['catch'](()=>({}));throw new Error(_0x1628f0['error']||_0x1628f0['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1c5294['statusText']);}return await _0x1c5294['json']();},async 'uploadTaskFiles'(_0x734798,_0x27caac,_0xc6bc61){if(!_0x734798)throw new Error('Task\x20ID\x20is\x20required');if(!_0x27caac)throw new Error('Target\x20directory\x20is\x20required');if(!_0xc6bc61||_0xc6bc61['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x1b6798=new FormData();_0x1b6798['append']('targetDir',_0x27caac);for(const _0x20ad26 of _0xc6bc61){_0x1b6798['append']('files',_0x20ad26,_0x20ad26['name']);}const _0xa702ee=await fetch(API_BASE+'/tasks/'+_0x734798+'/files/upload',{'method':'POST','body':_0x1b6798});if(!_0xa702ee['ok']){const _0x2c12cf=await _0xa702ee['json']()['catch'](()=>({}));throw new Error(_0x2c12cf['error']||_0x2c12cf['message']||'Failed\x20to\x20upload\x20files:\x20'+_0xa702ee['statusText']);}return await _0xa702ee['json']();},async 'deleteFile'(_0x4ade78,_0x351ad1){if(!_0x4ade78)throw new Error('Task\x20ID\x20is\x20required');if(!_0x351ad1)throw new Error('File\x20path\x20is\x20required');const _0x29faa4=await fetch(API_BASE+'/tasks/'+_0x4ade78+'/files?path='+encodeURIComponent(_0x351ad1),{'method':'DELETE'});if(!_0x29faa4['ok']){const _0x45aee3=await _0x29faa4['json']()['catch'](()=>({}));throw new Error(_0x45aee3['error']||_0x45aee3['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x29faa4['statusText']);}return await _0x29faa4['json']();},async 'discardFile'(_0x5ef92,_0x268b48,_0x206ab9){if(!_0x5ef92)throw new Error('Task\x20ID\x20is\x20required');if(!_0x268b48)throw new Error('File\x20path\x20is\x20required');if(!_0x206ab9)throw new Error('Repository\x20path\x20is\x20required');const _0x3793a6=await fetch(API_BASE+'/tasks/'+_0x5ef92+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x268b48,'repoPath':_0x206ab9})});if(!_0x3793a6['ok']){const _0x4f10a9=await _0x3793a6['json']()['catch'](()=>({}));throw new Error(_0x4f10a9['error']||_0x4f10a9['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x3793a6['statusText']);}return await _0x3793a6['json']();},async 'followUpTask'(_0x1483d4,_0x555b9c={}){if(!_0x1483d4)throw new Error('Task\x20ID\x20is\x20required');if(!_0x555b9c['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x594997,_0x5c5b6f={};if(_0x555b9c['files']&&_0x555b9c['files']['length']>0x0){const _0x4a83bd=new FormData();_0x4a83bd['append']('instructions',_0x555b9c['instructions']);for(const _0x325b65 of _0x555b9c['files']){_0x4a83bd['append']('attachments',_0x325b65);}_0x594997=_0x4a83bd;}else _0x5c5b6f['Content-Type']='application/json',_0x594997=JSON['stringify']({'instructions':_0x555b9c['instructions']});const _0x2b2fea=await fetch(API_BASE+'/tasks/'+_0x1483d4+'/follow-up',{'method':'POST','headers':_0x5c5b6f,'body':_0x594997});if(!_0x2b2fea['ok']){const _0x29b08a=await _0x2b2fea['json']()['catch'](()=>({}));throw new Error(_0x29b08a['error']||_0x29b08a['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x2b2fea['statusText']);}return await _0x2b2fea['json']();},async 'getTaskRewindPoints'(_0x1be989){if(!_0x1be989)throw new Error('Task\x20ID\x20is\x20required');const _0x39a915=await fetch(API_BASE+'/tasks/'+_0x1be989+'/rewind-points');if(!_0x39a915['ok']){const _0x460500=await _0x39a915['json']()['catch'](()=>({}));throw new Error(_0x460500['error']||_0x460500['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x39a915['statusText']);}return await _0x39a915['json']();},async 'rewindTask'(_0x35ecde,_0x359395={}){if(!_0x35ecde)throw new Error('Task\x20ID\x20is\x20required');const _0x66eaf1=Number['isInteger'](_0x359395['targetFollowUpCount'])?_0x359395['targetFollowUpCount']:0x0,_0x2507f5={'targetFollowUpCount':_0x66eaf1};typeof _0x359395['instructions']==='string'&&_0x359395['instructions']['trim']()&&(_0x2507f5['instructions']=_0x359395['instructions']['trim']());typeof _0x359395['rewindFiles']==='boolean'&&(_0x2507f5['rewindFiles']=_0x359395['rewindFiles']);const _0x217df5=await fetch(API_BASE+'/tasks/'+_0x35ecde+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2507f5)});if(!_0x217df5['ok']){const _0x22c95c=await _0x217df5['json']()['catch'](()=>({}));throw new Error(_0x22c95c['error']||_0x22c95c['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x217df5['statusText']);}return await _0x217df5['json']();},async 'login'(_0x2bc830,_0x4a98d3){const _0x7f24fe=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x2bc830,'password':_0x4a98d3})});if(!_0x7f24fe['ok']){const _0x2c2bc8=await _0x7f24fe['json']();throw new Error(_0x2c2bc8['message']||'Login\x20failed');}return await _0x7f24fe['json']();},async 'logout'(){const _0xe82141=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0xe82141['ok']){const _0x38248a=await _0xe82141['json']();throw new Error(_0x38248a['message']||'Logout\x20failed');}return await _0xe82141['json']();},async 'getCurrentUser'(){const _0x4c0ac2=await fetch(API_BASE+'/auth/me');if(!_0x4c0ac2['ok'])throw new Error('Not\x20authenticated');const _0x2ec907=await _0x4c0ac2['json']();return _0x2ec907['user'];},async 'getRolesInfo'(){const _0x5d718d=await fetch(API_BASE+'/users/roles');if(!_0x5d718d['ok']){const _0x41ed46=await _0x5d718d['json']();throw new Error(_0x41ed46['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x5d718d['json']();},async 'getUsers'(){const _0x582e5b=await fetch(API_BASE+'/users');if(!_0x582e5b['ok']){const _0x8b6aaa=await _0x582e5b['json']();throw new Error(_0x8b6aaa['message']||'Failed\x20to\x20get\x20users');}return await _0x582e5b['json']();},async 'getUser'(_0x14e744){const _0x4af1c2=await fetch(API_BASE+'/users/'+_0x14e744);if(!_0x4af1c2['ok']){const _0x66c734=await _0x4af1c2['json']();throw new Error(_0x66c734['message']||'Failed\x20to\x20get\x20user');}return await _0x4af1c2['json']();},async 'createUser'(_0x11b61a){const _0x57fb14=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x11b61a)});if(!_0x57fb14['ok']){const _0x139799=await _0x57fb14['json']();throw new Error(_0x139799['message']||'Failed\x20to\x20create\x20user');}return await _0x57fb14['json']();},async 'updateUser'(_0x5baeb6,_0x4e6cd6){const _0xbada10=await fetch(API_BASE+'/users/'+_0x5baeb6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e6cd6)});if(!_0xbada10['ok']){const _0x3b8f70=await _0xbada10['json']();throw new Error(_0x3b8f70['message']||'Failed\x20to\x20update\x20user');}return await _0xbada10['json']();},async 'deleteUser'(_0x5b486d){const _0x47432e=await fetch(API_BASE+'/users/'+_0x5b486d,{'method':'DELETE'});if(!_0x47432e['ok']){const _0x30f626=await _0x47432e['json']();throw new Error(_0x30f626['message']||'Failed\x20to\x20delete\x20user');}return await _0x47432e['json']();},async 'stopAllContainers'(){const _0x4811c6=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1b0bf1=await _0x4811c6['json']()['catch'](()=>({}));if(!_0x4811c6['ok'])throw new Error(_0x1b0bf1['message']||_0x1b0bf1['error']||'Failed\x20to\x20stop\x20containers');return _0x1b0bf1;},async 'removeStoppedContainers'(){const _0x2ec3ff=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x351316=await _0x2ec3ff['json']()['catch'](()=>({}));if(!_0x2ec3ff['ok'])throw new Error(_0x351316['message']||_0x351316['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x351316;},async 'pruneDockerResources'(){const _0x55e702=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x395d14=await _0x55e702['json']()['catch'](()=>({}));if(!_0x55e702['ok'])throw new Error(_0x395d14['message']||_0x395d14['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x395d14;},async 'createPasswordToken'(_0x348513,_0x1dfbc5='setup',_0x589353=![]){const _0x5bbd1e=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x348513,'type':_0x1dfbc5,'sendEmail':_0x589353})});if(!_0x5bbd1e['ok']){const _0x414261=await _0x5bbd1e['json']();throw new Error(_0x414261['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5bbd1e['json']();},async 'getEmailConfig'(){const _0x3a6ee2=await fetch(API_BASE+'/password/email-config');if(!_0x3a6ee2['ok']){const _0x1a76fc=await _0x3a6ee2['json']();throw new Error(_0x1a76fc['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x3a6ee2['json']();},async 'updateTaskName'(_0xa306d,_0x2b8900){const _0x2130b6=await fetch(API_BASE+'/tasks/'+_0xa306d,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x2b8900})});if(!_0x2130b6['ok']){const _0x3a5865=await _0x2130b6['json']();throw new Error(_0x3a5865['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x2130b6['json']();},async 'pinTask'(_0x1428fa,_0x480bd5,_0xf41c10=null){if(!_0x1428fa)throw new Error('Task\x20ID\x20is\x20required');const _0xc7b15e={'pinned':_0x480bd5};_0xf41c10&&_0xf41c10['length']>0x0&&(_0xc7b15e['additionalTaskIds']=_0xf41c10);const _0x708a12=await fetch(API_BASE+'/tasks/'+_0x1428fa+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc7b15e)});if(!_0x708a12['ok']){const _0x21d7f2=await _0x708a12['json']();throw new Error(_0x21d7f2['error']||'Failed\x20to\x20pin\x20task');}return await _0x708a12['json']();},async 'setTaskWinner'(_0x1d6dc8,_0x43b60e,_0x3a5adb=[]){if(!_0x1d6dc8)throw new Error('Task\x20ID\x20is\x20required');const _0x28dfd0=await fetch(API_BASE+'/tasks/'+_0x1d6dc8+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x43b60e,'siblings':_0x3a5adb})});if(!_0x28dfd0['ok']){const _0x272119=await _0x28dfd0['json']();throw new Error(_0x272119['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x28dfd0['json']();},async 'setTaskLoser'(_0x3a34b6,_0x2fcb85){if(!_0x3a34b6)throw new Error('Task\x20ID\x20is\x20required');const _0x1e95c6=await fetch(API_BASE+'/tasks/'+_0x3a34b6+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x2fcb85})});if(!_0x1e95c6['ok']){const _0x51ce72=await _0x1e95c6['json']();throw new Error(_0x51ce72['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x1e95c6['json']();},async 'createTaskGroup'(_0x1473a6){const _0x144392=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1473a6)});if(!_0x144392['ok']){const _0x224603=await _0x144392['json']();throw new Error(_0x224603['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x144392['json']();},async 'getTaskGroups'(_0xb34e3f={}){const _0x549bec=new URLSearchParams();if(_0xb34e3f['userId'])_0x549bec['set']('userId',String(_0xb34e3f['userId']));if(_0xb34e3f['status'])_0x549bec['set']('status',String(_0xb34e3f['status']));if(_0xb34e3f['limit'])_0x549bec['set']('limit',String(_0xb34e3f['limit']));const _0x4a15e3=API_BASE+'/tasks/groups'+(_0x549bec['toString']()?'?'+_0x549bec['toString']():''),_0x3769be=await fetch(_0x4a15e3);if(!_0x3769be['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x3769be['json']();},async 'getTaskGroup'(_0xbb155){const _0x5cc2cc=await fetch(API_BASE+'/tasks/groups/'+_0xbb155);if(!_0x5cc2cc['ok']){const _0x576aca=await _0x5cc2cc['json']();throw new Error(_0x576aca['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x5cc2cc['json']();},async 'updateTaskGroup'(_0x1ad128,_0x32804b,_0x44eb7a){const _0x366d58=await fetch(API_BASE+'/tasks/'+_0x1ad128+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x32804b,'groupIndex':_0x44eb7a})});if(!_0x366d58['ok']){const _0x429c17=await _0x366d58['json']();throw new Error(_0x429c17['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x366d58['json']();},async 'removeTaskFromGroup'(_0x29cc77){return this['updateTaskGroup'](_0x29cc77,null,null);},async 'deleteTaskGroup'(_0x1646d9,_0xf6658=![]){const _0x38b06b=_0xf6658?'?deleteTasks=true':'',_0x5c7f95=await fetch(API_BASE+'/tasks/groups/'+_0x1646d9+_0x38b06b,{'method':'DELETE'});if(!_0x5c7f95['ok']){const _0x38e8c9=await _0x5c7f95['json']();throw new Error(_0x38e8c9['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x58107d,_0x29b880){const _0x362565=await fetch(API_BASE+'/tasks/groups/'+_0x58107d+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x29b880})});if(!_0x362565['ok']){const _0x538e40=await _0x362565['json']();throw new Error(_0x538e40['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x362565['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x57339d){if(!_0x57339d)throw new Error('Task\x20ID\x20is\x20required');const _0x24b153=await fetch(API_BASE+'/tasks/'+_0x57339d+'/comments');if(!_0x24b153['ok']){const _0x226c2b=await _0x24b153['json']()['catch'](()=>({}));throw new Error(_0x226c2b['error']||'Failed\x20to\x20get\x20comments');}return await _0x24b153['json']();},async 'addComment'(_0x519b34,_0x446a2f){if(!_0x519b34)throw new Error('Task\x20ID\x20is\x20required');if(!_0x446a2f)throw new Error('Comment\x20content\x20is\x20required');const _0x481a5f=await fetch(API_BASE+'/tasks/'+_0x519b34+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x446a2f})});if(!_0x481a5f['ok']){const _0x3b1fec=await _0x481a5f['json']()['catch'](()=>({}));throw new Error(_0x3b1fec['error']||'Failed\x20to\x20add\x20comment');}return await _0x481a5f['json']();},async 'updateComment'(_0x2e4d88,_0x1a5bcb,_0xd556da){if(!_0x2e4d88)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a5bcb)throw new Error('Comment\x20ID\x20is\x20required');if(!_0xd556da)throw new Error('Comment\x20content\x20is\x20required');const _0x579261=await fetch(API_BASE+'/tasks/'+_0x2e4d88+'/comments/'+_0x1a5bcb,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xd556da})});if(!_0x579261['ok']){const _0x9b227a=await _0x579261['json']()['catch'](()=>({}));throw new Error(_0x9b227a['error']||'Failed\x20to\x20update\x20comment');}return await _0x579261['json']();},async 'deleteComment'(_0x164d08,_0x4869b6){if(!_0x164d08)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4869b6)throw new Error('Comment\x20ID\x20is\x20required');const _0x413791=await fetch(API_BASE+'/tasks/'+_0x164d08+'/comments/'+_0x4869b6,{'method':'DELETE'});if(!_0x413791['ok']){const _0x250a39=await _0x413791['json']()['catch'](()=>({}));throw new Error(_0x250a39['error']||'Failed\x20to\x20delete\x20comment');}return await _0x413791['json']();},async 'createObjective'(_0x250546){const _0x287cad={'objective':!![],'name':_0x250546['name']||'','environment':_0x250546['environment']||null,'agents':_0x250546['agents']||[],'branches':_0x250546['branches']||{},'isPinned':_0x250546['isPinned']||![],'parentObjectiveId':_0x250546['parentObjectiveId']||null,'env_vars':_0x250546['envVars']||{},'parameters':{'instructions':_0x250546['instructions']||''},'files':_0x250546['files']||[],'jira':_0x250546['jira']||null};return this['createTask'](_0x287cad);},async 'updateObjective'(_0x336930,_0x381af7,_0x419f33=[],_0x5137e1=[]){let _0xc17e57,_0x164eb1={};const _0x2b2d1b={..._0x381af7};_0x5137e1&&_0x5137e1['length']>0x0&&(_0x2b2d1b['removeAttachments']=_0x5137e1);if(_0x419f33&&_0x419f33['length']>0x0){const _0x3b1408=new FormData();for(const [_0x38f8f4,_0x564e46]of Object['entries'](_0x2b2d1b)){if(_0x564e46==null)continue;typeof _0x564e46==='object'?_0x3b1408['append'](_0x38f8f4,JSON['stringify'](_0x564e46)):_0x3b1408['append'](_0x38f8f4,String(_0x564e46));}for(const _0x5a0c0b of _0x419f33){_0x3b1408['append']('attachments',_0x5a0c0b);}_0xc17e57=_0x3b1408;}else _0x164eb1['Content-Type']='application/json',_0xc17e57=JSON['stringify'](_0x2b2d1b);const _0xb8309c=await fetch(API_BASE+'/tasks/'+_0x336930,{'method':'PATCH','headers':_0x164eb1,'body':_0xc17e57});if(!_0xb8309c['ok']){const _0x56eef8=await _0xb8309c['json']();throw new Error(_0x56eef8['error']||'Failed\x20to\x20update\x20objective');}return await _0xb8309c['json']();},async 'deleteObjective'(_0x5e37d7){return this['deleteTask'](_0x5e37d7);},async 'launchObjective'(_0x3a84dd,_0x3d6fcb={}){const _0x4e5e8d=await fetch(API_BASE+'/tasks/'+_0x3a84dd+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3d6fcb)});if(!_0x4e5e8d['ok']){const _0x58069d=await _0x4e5e8d['json']();throw new Error(_0x58069d['error']||'Failed\x20to\x20launch\x20objective');}return await _0x4e5e8d['json']();},async 'getObjectiveAttachments'(_0x3ac773){return this['getTaskAttachments'](_0x3ac773);},async 'createJudgeTask'({environment:_0x5667eb,judgeAgent:_0x23e7e1,groupId:_0x3a151f,taskIds:_0x3e7573,judgeCustomInstructions:_0x297b6b,isPinned:_0x2722c1}){const _0x2106e1=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5667eb,'judgeAgent':_0x23e7e1,'groupId':_0x3a151f,'taskIds':_0x3e7573,'judgeCustomInstructions':_0x297b6b,'isPinned':_0x2722c1})});if(!_0x2106e1['ok']){const _0x1c9b7d=await _0x2106e1['json']();throw new Error(_0x1c9b7d['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x2106e1['json']();},async 'getJudgeTasks'(_0x3f4461){const _0x50c664=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3f4461));if(!_0x50c664['ok']){const _0x3c6465=await _0x50c664['json']();throw new Error(_0x3c6465['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x50c664['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x232583,_0x3c2e0f,_0x3859d7=''){const _0x1aaa54=await fetch(API_BASE+'/tasks/'+_0x232583+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x3c2e0f,'customPreamble':_0x3859d7})});if(!_0x1aaa54['ok']){const _0x597e3e=await _0x1aaa54['json']();throw new Error(_0x597e3e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1aaa54['json']();},async 'getJiraConfig'(){const _0x31dc2e=await fetch(API_BASE+'/jira/config');if(!_0x31dc2e['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x31dc2e['json']();},async 'getJiraIssue'(_0x1645b3){const _0x270e06=await fetch(API_BASE+'/jira/issues/'+_0x1645b3);if(!_0x270e06['ok']){const _0x8ba9ad=await _0x270e06['json']()['catch'](()=>({}));throw new Error(_0x8ba9ad['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x270e06['statusText']);}return await _0x270e06['json']();},async 'searchJiraIssues'(_0x2ad7cb,_0x2271fb=0x14){const _0x161d06=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x2ad7cb,'maxResults':_0x2271fb})});if(!_0x161d06['ok']){const _0x34379d=await _0x161d06['json']()['catch'](()=>({}));throw new Error(_0x34379d['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x161d06['statusText']);}return await _0x161d06['json']();},async 'postJiraComment'(_0xe5ab53,_0x4ad2ec){const _0x46d971=await fetch(API_BASE+'/jira/issues/'+_0xe5ab53+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x4ad2ec})});if(!_0x46d971['ok']){const _0x19b13f=await _0x46d971['json']()['catch'](()=>({}));throw new Error(_0x19b13f['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x46d971['statusText']);}return await _0x46d971['json']();},async 'getJiraComments'(_0xcc4d7a){const _0x42cfb8=await fetch(API_BASE+'/jira/issues/'+_0xcc4d7a+'/comments');if(!_0x42cfb8['ok']){const _0x1f3f11=await _0x42cfb8['json']()['catch'](()=>({}));throw new Error(_0x1f3f11['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x42cfb8['statusText']);}return await _0x42cfb8['json']();},async 'promptParameter'({environment:_0x34a12f,command:_0x1b4179,parser:parser='json'}){const _0x1f49e6=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x34a12f,'command':_0x1b4179,'parser':parser})});if(!_0x1f49e6['ok']){const _0x37aef0=await _0x1f49e6['json']()['catch'](()=>({}));throw new Error(_0x37aef0['message']||_0x37aef0['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x1f49e6['statusText']);}return await _0x1f49e6['json']();},async 'promptParameterStream'(_0x555975,_0xeb6387){const _0x4ca344=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x555975)});if(!_0x4ca344['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4ca344['statusText']);const _0x1c2592=_0x4ca344['body']['getReader'](),_0x1b56c9=new TextDecoder();let _0x1ff70d='';return new Promise((_0x2dca22,_0x127fda)=>{const _0x41b032=async()=>{try{const {done:_0x176b27,value:_0x55fec5}=await _0x1c2592['read']();if(_0x176b27)return;_0x1ff70d+=_0x1b56c9['decode'](_0x55fec5,{'stream':!![]});const _0x151e01=_0x1ff70d['split']('\x0a\x0a');_0x1ff70d=_0x151e01['pop']()||'';for(const _0x4c80ea of _0x151e01){if(!_0x4c80ea['trim']())continue;const _0x341314=_0x4c80ea['split']('\x0a');let _0x700e35='message',_0x3ab34f='';for(const _0x12683b of _0x341314){if(_0x12683b['startsWith']('event:'))_0x700e35=_0x12683b['substring'](0x6)['trim']();else _0x12683b['startsWith']('data:')&&(_0x3ab34f=_0x12683b['substring'](0x5)['trim']());}if(!_0x3ab34f)continue;try{const _0x7e452=JSON['parse'](_0x3ab34f);if(_0x700e35==='progress'&&_0xeb6387)_0xeb6387(_0x7e452['stage'],_0x7e452['message']);else{if(_0x700e35==='result'){_0x2dca22(_0x7e452);return;}else{if(_0x700e35==='error'){let _0x2b68ef=_0x7e452['message']||_0x7e452['error']||'Prompt\x20command\x20failed';_0x7e452['rawOutput']&&(_0x2b68ef+='\x0a\x0aRaw\x20output:\x0a'+_0x7e452['rawOutput']);_0x127fda(new Error(_0x2b68ef));return;}}}}catch(_0x3eea2e){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x3eea2e),console['error']('Event\x20type:',_0x700e35),console['error']('Event\x20data:',_0x3ab34f),console['error']('First\x20200\x20chars:',_0x3ab34f['substring'](0x0,0xc8)),_0x127fda(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x3eea2e['message']+'\x0a\x0aData:\x20'+_0x3ab34f['substring'](0x0,0x1f4)));return;}}_0x41b032();}catch(_0x16f500){_0x127fda(_0x16f500);}};_0x41b032();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x527cf4){const _0x1d7587=await fetch(''+API_BASE+_0x527cf4);if(!_0x1d7587['ok']){const _0x5a729b=await _0x1d7587['json']()['catch'](()=>({'error':_0x1d7587['statusText']})),_0x5c752a=new Error(_0x5a729b['error']||_0x5a729b['message']||_0x1d7587['statusText']);if(_0x5a729b['detail']!==undefined)_0x5c752a['detail']=_0x5a729b['detail'];throw _0x5c752a;}return await _0x1d7587['json']();},async 'post'(_0x50f56b,_0x1dd3d1){const _0x7d483b=await fetch(''+API_BASE+_0x50f56b,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1dd3d1)});if(!_0x7d483b['ok']){const _0x28627a=await _0x7d483b['json']()['catch'](()=>({'error':_0x7d483b['statusText']})),_0x1fb2af=new Error(_0x28627a['error']||_0x28627a['message']||_0x7d483b['statusText']);if(_0x28627a['detail']!==undefined)_0x1fb2af['detail']=_0x28627a['detail'];throw _0x1fb2af;}return await _0x7d483b['json']();},async 'put'(_0x2d575f,_0x1d1ae7){const _0x13db45=await fetch(''+API_BASE+_0x2d575f,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1d1ae7)});if(!_0x13db45['ok']){const _0x52ac51=await _0x13db45['json']()['catch'](()=>({'error':_0x13db45['statusText']})),_0xbff5c3=new Error(_0x52ac51['error']||_0x52ac51['message']||_0x13db45['statusText']);if(_0x52ac51['detail']!==undefined)_0xbff5c3['detail']=_0x52ac51['detail'];throw _0xbff5c3;}return await _0x13db45['json']();},async 'delete'(_0x2ffde6,_0x27dd36){const _0x2fe189={'method':'DELETE'};_0x27dd36&&(_0x2fe189['headers']={'Content-Type':'application/json'},_0x2fe189['body']=JSON['stringify'](_0x27dd36));const _0x1166a5=await fetch(''+API_BASE+_0x2ffde6,_0x2fe189);if(!_0x1166a5['ok']){const _0x2bfe2c=await _0x1166a5['json']()['catch'](()=>({'error':_0x1166a5['statusText']})),_0x1c2aba=new Error(_0x2bfe2c['error']||_0x2bfe2c['message']||_0x1166a5['statusText']);if(_0x2bfe2c['detail']!==undefined)_0x1c2aba['detail']=_0x2bfe2c['detail'];throw _0x1c2aba;}return await _0x1166a5['json']();},async 'getSkills'(){const _0xb35c36=await fetch(API_BASE+'/skills');if(!_0xb35c36['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0xb35c36['statusText']);return await _0xb35c36['json']();},async 'getSkill'(_0x56ed35){const _0x5f44e3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x56ed35));if(!_0x5f44e3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x5f44e3['statusText']);return await _0x5f44e3['json']();},async 'createSkill'(_0x580821){const _0x5e5f05=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x580821)});if(!_0x5e5f05['ok']){const _0x23dca1=await _0x5e5f05['json']()['catch'](()=>({'error':_0x5e5f05['statusText']})),_0x116be9=new Error(_0x23dca1['error']||_0x23dca1['message']||_0x5e5f05['statusText']);if(_0x23dca1['detail']!==undefined)_0x116be9['detail']=_0x23dca1['detail'];throw _0x116be9;}return await _0x5e5f05['json']();},async 'updateSkill'(_0x35262b,_0x26c0ce){const _0x267195=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35262b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x26c0ce)});if(!_0x267195['ok']){const _0x3059ba=await _0x267195['json']()['catch'](()=>({'error':_0x267195['statusText']})),_0xf61abc=new Error(_0x3059ba['error']||_0x3059ba['message']||_0x267195['statusText']);if(_0x3059ba['detail']!==undefined)_0xf61abc['detail']=_0x3059ba['detail'];throw _0xf61abc;}return await _0x267195['json']();},async 'deleteSkill'(_0x3f7f06){const _0x284571=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x3f7f06),{'method':'DELETE'});if(!_0x284571['ok']){const _0x5580fc=await _0x284571['json']()['catch'](()=>({'error':_0x284571['statusText']})),_0x581673=new Error(_0x5580fc['error']||_0x5580fc['message']||_0x284571['statusText']);if(_0x5580fc['detail']!==undefined)_0x581673['detail']=_0x5580fc['detail'];throw _0x581673;}return await _0x284571['json']();},async 'getSkillFile'(_0xf53b25,_0x1fca5e){const _0x5ed941=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0xf53b25)+'/files/'+_0x1fca5e);if(!_0x5ed941['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x5ed941['statusText']);return await _0x5ed941['json']();},async 'saveSkillFile'(_0x53c0c2,_0x32a7a8,_0x37e214){const _0x529493=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x53c0c2)+'/files/'+_0x32a7a8,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x37e214})});if(!_0x529493['ok']){const _0x3c4bd8=await _0x529493['json']()['catch'](()=>({'error':_0x529493['statusText']})),_0x100ca5=new Error(_0x3c4bd8['error']||_0x3c4bd8['message']||_0x529493['statusText']);if(_0x3c4bd8['detail']!==undefined)_0x100ca5['detail']=_0x3c4bd8['detail'];throw _0x100ca5;}return await _0x529493['json']();},async 'deleteSkillFile'(_0x269481,_0x4a4d01){const _0xd94318=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x269481)+'/files/'+_0x4a4d01,{'method':'DELETE'});if(!_0xd94318['ok']){const _0x2247a3=await _0xd94318['json']()['catch'](()=>({'error':_0xd94318['statusText']})),_0x237eb5=new Error(_0x2247a3['error']||_0x2247a3['message']||_0xd94318['statusText']);if(_0x2247a3['detail']!==undefined)_0x237eb5['detail']=_0x2247a3['detail'];throw _0x237eb5;}return await _0xd94318['json']();},async 'pullSkills'(){const _0x284bda=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x284bda['ok']){const _0x59973f=await _0x284bda['json']()['catch'](()=>({'error':_0x284bda['statusText']})),_0x1255ed=new Error(_0x59973f['error']||_0x59973f['message']||_0x284bda['statusText']);if(_0x59973f['detail']!==undefined)_0x1255ed['detail']=_0x59973f['detail'];throw _0x1255ed;}return await _0x284bda['json']();},async 'commitSkills'(_0xea081,_0x344a0d={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x344a0d,_0x272e76=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0xea081,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x272e76['ok']){const _0x343383=await _0x272e76['json']()['catch'](()=>({'error':_0x272e76['statusText']})),_0x1052bf=new Error(_0x343383['error']||_0x343383['message']||_0x272e76['statusText']);if(_0x343383['detail']!==undefined)_0x1052bf['detail']=_0x343383['detail'];throw _0x1052bf;}return await _0x272e76['json']();},async 'discardSkillsChanges'(){const _0x47e053=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x47e053['ok']){const _0x301f13=await _0x47e053['json']()['catch'](()=>({'error':_0x47e053['statusText']})),_0x33357d=new Error(_0x301f13['error']||_0x301f13['message']||_0x47e053['statusText']);if(_0x301f13['detail']!==undefined)_0x33357d['detail']=_0x301f13['detail'];throw _0x33357d;}return await _0x47e053['json']();},async 'getSkillCatalog'(){const _0x2134b2=await fetch(API_BASE+'/external-skills/catalog');if(!_0x2134b2['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x2134b2['statusText']);return await _0x2134b2['json']();},async 'getImportedSkillsRegistry'(){const _0x192ef5=await fetch(API_BASE+'/external-skills/registry');if(!_0x192ef5['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x192ef5['statusText']);return await _0x192ef5['json']();},async 'importCatalogSkill'(_0x5dc864){const _0x2eb75a=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x5dc864})});if(!_0x2eb75a['ok']){const _0x1f14dd=await _0x2eb75a['json']()['catch'](()=>({'error':_0x2eb75a['statusText']})),_0x2479b1=new Error(_0x1f14dd['error']||_0x1f14dd['message']||_0x2eb75a['statusText']);if(_0x1f14dd['detail']!==undefined)_0x2479b1['detail']=_0x1f14dd['detail'];throw _0x2479b1;}return await _0x2eb75a['json']();},async 'importSkillFromGit'(_0x5217c1,_0x3a146c,_0x2971d7='main',_0x2c1d87=null){const _0x448454=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5217c1,'skillPath':_0x3a146c,'branch':_0x2971d7,'skillId':_0x2c1d87})});if(!_0x448454['ok']){const _0x442471=await _0x448454['json']()['catch'](()=>({'error':_0x448454['statusText']})),_0x238622=new Error(_0x442471['error']||_0x442471['message']||_0x448454['statusText']);if(_0x442471['detail']!==undefined)_0x238622['detail']=_0x442471['detail'];throw _0x238622;}return await _0x448454['json']();},async 'probeMarketplace'(_0x5f5524,_0x4c5d5e='main'){const _0xb140bd=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5f5524,'branch':_0x4c5d5e})});if(!_0xb140bd['ok']){const _0x16848d=await _0xb140bd['json']()['catch'](()=>({'error':_0xb140bd['statusText']})),_0x1ad425=new Error(_0x16848d['error']||_0x16848d['message']||_0xb140bd['statusText']);if(_0x16848d['detail']!==undefined)_0x1ad425['detail']=_0x16848d['detail'];throw _0x1ad425;}return await _0xb140bd['json']();},async 'importMarketplaceBundle'(_0x29a8dd,_0x1651f8,_0x2f3c9c,_0x4f6042=null){const _0xe828c7=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x29a8dd,'branch':_0x1651f8,'bundleId':_0x2f3c9c,'selectedSkills':_0x4f6042})});if(!_0xe828c7['ok']){const _0x576dd1=await _0xe828c7['json']()['catch'](()=>({'error':_0xe828c7['statusText']})),_0x116d41=new Error(_0x576dd1['error']||_0x576dd1['message']||_0xe828c7['statusText']);if(_0x576dd1['detail']!==undefined)_0x116d41['detail']=_0x576dd1['detail'];throw _0x116d41;}return await _0xe828c7['json']();},async 'importSkillFromFolder'(_0x35a84a,_0x1d12ce=null){const _0x493a3a=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x35a84a,'skillId':_0x1d12ce})});if(!_0x493a3a['ok']){const _0x19f8ee=await _0x493a3a['json']()['catch'](()=>({'error':_0x493a3a['statusText']})),_0x7b4048=new Error(_0x19f8ee['error']||_0x19f8ee['message']||_0x493a3a['statusText']);if(_0x19f8ee['detail']!==undefined)_0x7b4048['detail']=_0x19f8ee['detail'];throw _0x7b4048;}return await _0x493a3a['json']();},async 'importSkillFromNpm'(_0x105657,_0x12ce67='latest',_0x402144=null,_0x2e1a6b=null){const _0x15c4be=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x105657,'version':_0x12ce67,'skillId':_0x402144,'registry':_0x2e1a6b})});if(!_0x15c4be['ok']){const _0x54974d=await _0x15c4be['json']()['catch'](()=>({'error':_0x15c4be['statusText']})),_0x291464=new Error(_0x54974d['error']||_0x54974d['message']||_0x15c4be['statusText']);if(_0x54974d['detail']!==undefined)_0x291464['detail']=_0x54974d['detail'];throw _0x291464;}return await _0x15c4be['json']();},async 'checkSkillUpdates'(_0x451e1f){const _0x2d3535=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x451e1f)+'/check-updates',{'method':'POST'});if(!_0x2d3535['ok']){const _0xd33bed=await _0x2d3535['json']()['catch'](()=>({'error':_0x2d3535['statusText']})),_0x23f348=new Error(_0xd33bed['error']||_0xd33bed['message']||_0x2d3535['statusText']);if(_0xd33bed['detail']!==undefined)_0x23f348['detail']=_0xd33bed['detail'];throw _0x23f348;}return await _0x2d3535['json']();},async 'updateExternalSkill'(_0x4b47fb){const _0xbafea0=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4b47fb)+'/update',{'method':'POST'});if(!_0xbafea0['ok']){const _0x1aeabc=await _0xbafea0['json']()['catch'](()=>({'error':_0xbafea0['statusText']})),_0xe6b817=new Error(_0x1aeabc['error']||_0x1aeabc['message']||_0xbafea0['statusText']);if(_0x1aeabc['detail']!==undefined)_0xe6b817['detail']=_0x1aeabc['detail'];throw _0xe6b817;}return await _0xbafea0['json']();},async 'updateSkillFlags'(_0x4efb03,_0x135dd1){const _0x248374=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4efb03)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x135dd1})});if(!_0x248374['ok']){const _0x494149=await _0x248374['json']()['catch'](()=>({'error':_0x248374['statusText']})),_0x477a98=new Error(_0x494149['error']||_0x494149['message']||_0x248374['statusText']);if(_0x494149['detail']!==undefined)_0x477a98['detail']=_0x494149['detail'];throw _0x477a98;}return await _0x248374['json']();},async 'removeFromImportedRegistry'(_0x140b14){const _0x1e0abd=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x140b14)+'/registry',{'method':'DELETE'});if(!_0x1e0abd['ok']){const _0x1a2295=await _0x1e0abd['json']()['catch'](()=>({'error':_0x1e0abd['statusText']})),_0x565da4=new Error(_0x1a2295['error']||_0x1a2295['message']||_0x1e0abd['statusText']);if(_0x1a2295['detail']!==undefined)_0x565da4['detail']=_0x1a2295['detail'];throw _0x565da4;}return await _0x1e0abd['json']();},async 'getTeams'(){const _0x26d917=await fetch(API_BASE+'/teams');if(!_0x26d917['ok']){const _0x2047f9=await _0x26d917['json']()['catch'](()=>({'message':_0x26d917['statusText']}));throw new Error(_0x2047f9['message']||'Failed\x20to\x20get\x20teams');}return await _0x26d917['json']();},async 'getTeam'(_0x4cfdd9){const _0xf5b59=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4cfdd9));if(!_0xf5b59['ok']){const _0x2a5af1=await _0xf5b59['json']()['catch'](()=>({'message':_0xf5b59['statusText']}));throw new Error(_0x2a5af1['message']||'Failed\x20to\x20get\x20team');}return await _0xf5b59['json']();},async 'createTeam'(_0x21f13){const _0x1bb835=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x21f13)});if(!_0x1bb835['ok']){const _0x385eed=await _0x1bb835['json']()['catch'](()=>({'message':_0x1bb835['statusText']}));throw new Error(_0x385eed['message']||'Failed\x20to\x20create\x20team');}return await _0x1bb835['json']();},async 'updateTeam'(_0x4066e2,_0x5a24b9){const _0x5b517b=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4066e2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5a24b9)});if(!_0x5b517b['ok']){const _0x231e5c=await _0x5b517b['json']()['catch'](()=>({'message':_0x5b517b['statusText']}));throw new Error(_0x231e5c['message']||'Failed\x20to\x20update\x20team');}return await _0x5b517b['json']();},async 'deleteTeam'(_0x2e34f7){const _0x206201=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2e34f7),{'method':'DELETE'});if(!_0x206201['ok']){const _0x4a04fd=await _0x206201['json']()['catch'](()=>({'message':_0x206201['statusText']}));throw new Error(_0x4a04fd['message']||'Failed\x20to\x20delete\x20team');}return await _0x206201['json']();},async 'addTeamMember'(_0x3a4d86,_0x3b0376){const _0x3773e9=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3a4d86)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x3b0376})});if(!_0x3773e9['ok']){const _0x662a3c=await _0x3773e9['json']()['catch'](()=>({'message':_0x3773e9['statusText']}));throw new Error(_0x662a3c['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x3773e9['json']();},async 'removeTeamMember'(_0x596b1b,_0x277929){const _0x39949f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x596b1b)+'/members/'+encodeURIComponent(_0x277929),{'method':'DELETE'});if(!_0x39949f['ok']){const _0x4bb1a2=await _0x39949f['json']()['catch'](()=>({'message':_0x39949f['statusText']}));throw new Error(_0x4bb1a2['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x39949f['json']();},async 'getBindings'(_0x5772ce={}){const _0x3d4af6=new URLSearchParams();if(_0x5772ce['resource_type'])_0x3d4af6['set']('resource_type',_0x5772ce['resource_type']);if(_0x5772ce['resource_id'])_0x3d4af6['set']('resource_id',_0x5772ce['resource_id']);if(_0x5772ce['subject_type'])_0x3d4af6['set']('subject_type',_0x5772ce['subject_type']);if(_0x5772ce['subject_id'])_0x3d4af6['set']('subject_id',_0x5772ce['subject_id']);const _0x5c4d97=_0x3d4af6['toString'](),_0x47f5de=await fetch(API_BASE+'/bindings'+(_0x5c4d97?'?'+_0x5c4d97:''));if(!_0x47f5de['ok']){const _0x422492=await _0x47f5de['json']()['catch'](()=>({'message':_0x47f5de['statusText']}));throw new Error(_0x422492['message']||'Failed\x20to\x20get\x20bindings');}return await _0x47f5de['json']();},async 'createBinding'(_0x6e7e96){const _0x606c3d=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x6e7e96)});if(!_0x606c3d['ok']){const _0x4787a3=await _0x606c3d['json']()['catch'](()=>({'message':_0x606c3d['statusText']}));throw new Error(_0x4787a3['message']||'Failed\x20to\x20create\x20binding');}return await _0x606c3d['json']();},async 'updateBinding'(_0x41d760,_0x1e9a20){const _0x2fae38=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x41d760),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e9a20)});if(!_0x2fae38['ok']){const _0x4012b0=await _0x2fae38['json']()['catch'](()=>({'message':_0x2fae38['statusText']}));throw new Error(_0x4012b0['message']||'Failed\x20to\x20update\x20binding');}return await _0x2fae38['json']();},async 'deleteBinding'(_0x2e9bbe){const _0x1fecb5=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x2e9bbe),{'method':'DELETE'});if(!_0x1fecb5['ok']){const _0x3f12e0=await _0x1fecb5['json']()['catch'](()=>({'message':_0x1fecb5['statusText']}));throw new Error(_0x3f12e0['message']||'Failed\x20to\x20delete\x20binding');}return await _0x1fecb5['json']();},async 'getRoleDefinitions'(){const _0xc5e418=await fetch(API_BASE+'/roles');if(!_0xc5e418['ok']){const _0x3ed57d=await _0xc5e418['json']()['catch'](()=>({'message':_0xc5e418['statusText']}));throw new Error(_0x3ed57d['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0xc5e418['json']();},async 'getRoleDefinition'(_0x2e2885){const _0x160333=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2e2885));if(!_0x160333['ok']){const _0x74b6dd=await _0x160333['json']()['catch'](()=>({'message':_0x160333['statusText']}));throw new Error(_0x74b6dd['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x160333['json']();},async 'createRoleDefinition'(_0x264216){const _0x565039=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x264216)});if(!_0x565039['ok']){const _0x27112c=await _0x565039['json']()['catch'](()=>({'message':_0x565039['statusText']}));throw new Error(_0x27112c['message']||_0x27112c['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x565039['json']();},async 'updateRoleDefinition'(_0x579866,_0x20909b){const _0x53a165=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x579866),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x20909b)});if(!_0x53a165['ok']){const _0x59f7b3=await _0x53a165['json']()['catch'](()=>({'message':_0x53a165['statusText']}));throw new Error(_0x59f7b3['message']||_0x59f7b3['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x53a165['json']();},async 'deleteRoleDefinition'(_0x1743bd){const _0x4612c1=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x1743bd),{'method':'DELETE'});if(!_0x4612c1['ok']){const _0x4595ea=await _0x4612c1['json']()['catch'](()=>({'message':_0x4612c1['statusText']}));throw new Error(_0x4595ea['message']||_0x4595ea['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x4612c1['json']();},async 'getAvailablePermissions'(){const _0xb0e895=await fetch(API_BASE+'/roles/available-permissions');if(!_0xb0e895['ok']){const _0x357a3e=await _0xb0e895['json']()['catch'](()=>({'message':_0xb0e895['statusText']}));throw new Error(_0x357a3e['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0xb0e895['json']();},async 'getGitProviderAllowedTeams'(_0x26feac){const _0x427707=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x26feac)+'/allowed-teams');if(!_0x427707['ok']){const _0x553eb8=await _0x427707['json']()['catch'](()=>({'message':_0x427707['statusText']}));throw new Error(_0x553eb8['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x427707['json']();},async 'setGitProviderAllowedTeams'(_0x53a7df,_0x128727){const _0x23eec1=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x53a7df)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x128727})});if(!_0x23eec1['ok']){const _0x16f3a7=await _0x23eec1['json']()['catch'](()=>({'message':_0x23eec1['statusText']}));throw new Error(_0x16f3a7['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x23eec1['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 _0x31d284=toastState['baseBottom'];toastState['toasts']['forEach'](_0x569f1a=>{_0x569f1a['el']['style']['bottom']=_0x31d284+'px';const _0x167d89=_0x569f1a['el']['offsetHeight']||toastState['defaultHeight'];_0x31d284+=_0x167d89+toastState['gap'];});});}function removeToastById(_0x5cd6fc){const _0x3c0eaf=toastState['toasts']['findIndex'](_0x54a476=>_0x54a476['id']===_0x5cd6fc);if(_0x3c0eaf===-0x1)return;const _0x1dc22f=toastState['toasts'][_0x3c0eaf];if(_0x1dc22f['timeoutId'])clearTimeout(_0x1dc22f['timeoutId']);_0x1dc22f['el']['classList']['remove']('show'),setTimeout(()=>_0x1dc22f['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x3c0eaf,0x1),repositionAllToasts();}function registerToast(_0x53a68c){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x53a68c),repositionAllToasts(),_0x53a68c['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(_0x1c066e){if(_0x1c066e===null||_0x1c066e===undefined)return'';return String(_0x1c066e)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x64bae3,_0x587c7f){if(_0x64bae3&&typeof _0x64bae3==='object'&&!Array['isArray'](_0x64bae3))return{'code':typeof _0x64bae3['text']==='string'?_0x64bae3['text']:'','language':typeof _0x64bae3['lang']==='string'?_0x64bae3['lang']:''};return{'code':typeof _0x64bae3==='string'?_0x64bae3:'','language':typeof _0x587c7f==='string'?_0x587c7f:''};}function buildMermaidBlock(_0x14540d){const _0x8c3470=String(_0x14540d||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x8c3470))+'\x22>'+escapeHtmlValue(_0x8c3470)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x225f4f=new marked['Renderer'](),_0x476435=_0x225f4f['code']['bind'](_0x225f4f);return _0x225f4f['code']=function(_0x129a09,_0x1247b1,..._0x554666){const {code:_0x3351ab,language:_0x15a77b}=getMarkdownCodeBlockPayload(_0x129a09,_0x1247b1),_0x4d27c1=String(_0x15a77b||'')['trim']()['toLowerCase']();if(_0x4d27c1==='mermaid')return buildMermaidBlock(_0x3351ab);const _0x508da9=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x508da9&&_0x4d27c1)try{const _0x3f1c72=_0x508da9['getLanguage'](_0x4d27c1)?_0x4d27c1:'plaintext',_0x37f60a=_0x508da9['highlight'](_0x3351ab,{'language':_0x3f1c72})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x4d27c1)+'\x22>'+_0x37f60a+'</code></pre>';}catch(_0x3e71ff){console['error']('Syntax\x20highlighting\x20error:',_0x3e71ff);}return _0x476435(_0x129a09,_0x1247b1,..._0x554666);},sharedMarkedRenderer=_0x225f4f,_0x225f4f;}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 _0x3c6ebc=window['mermaid'];if(!_0x3c6ebc||typeof _0x3c6ebc['initialize']!=='function')return _0x3c6ebc||null;return _0x3c6ebc['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x3c6ebc;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x5241a5,_0xfd67c6)=>{const _0x100185=()=>_0x5241a5(configureMermaidInstance()),_0x1a5d4f=()=>{mermaidLoadPromise=null,_0xfd67c6(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x7db1ab=document['getElementById'](MERMAID_SCRIPT_ID);!_0x7db1ab&&(_0x7db1ab=document['createElement']('script'),_0x7db1ab['id']=MERMAID_SCRIPT_ID,_0x7db1ab['src']=MERMAID_SCRIPT_SRC,_0x7db1ab['async']=!![],document['head']['appendChild'](_0x7db1ab));if(window['mermaid']){_0x100185();return;}_0x7db1ab['addEventListener']('load',_0x100185,{'once':!![]}),_0x7db1ab['addEventListener']('error',_0x1a5d4f,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x588bb0){const _0x1a516a=_0x588bb0['getAttribute']('data-mermaid-source');if(!_0x1a516a)return null;let _0x3ffb4a=_0x1a516a;try{_0x3ffb4a=decodeURIComponent(_0x1a516a);}catch{}return _0x588bb0['textContent']=_0x3ffb4a,_0x588bb0['removeAttribute']('data-processed'),_0x588bb0['removeAttribute']('aria-roledescription'),_0x588bb0['removeAttribute']('role'),_0x588bb0['removeAttribute']('aria-label'),_0x3ffb4a;}function collectMermaidNodes(_0xbdfd95,_0xc3f09){if(!(_0xbdfd95 instanceof Element))return;_0xbdfd95['matches']('.mermaid[data-mermaid-source]')&&_0xc3f09['add'](_0xbdfd95),_0xbdfd95['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x5f07fd=>{_0xc3f09['add'](_0x5f07fd);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x3693bf=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x50adc6=>setTimeout(_0x50adc6,0x0);_0x3693bf(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x49642d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x49642d);});});}function queueMermaidRender(_0x5eb7ea){const _0x4d480e=new Set();_0x5eb7ea instanceof Document||_0x5eb7ea instanceof DocumentFragment?_0x5eb7ea['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27613a=>_0x4d480e['add'](_0x27613a)):collectMermaidNodes(_0x5eb7ea,_0x4d480e);if(_0x4d480e['size']===0x0)return;_0x4d480e['forEach'](_0x44dc1d=>pendingMermaidNodes['add'](_0x44dc1d)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x34cc07=Array['from'](pendingMermaidNodes)['filter'](_0x225ced=>_0x225ced['isConnected']);pendingMermaidNodes['clear']();if(_0x34cc07['length']===0x0)return;const _0x7ea092=await loadMermaid();if(!_0x7ea092)return;configureMermaidInstance();const _0x531be0=getMermaidTheme();for(const _0x3a154a of _0x34cc07){const _0x4535ad=_0x3a154a['getAttribute']('data-mermaid-source');if(!_0x4535ad)continue;const _0x5d17d1=_0x3a154a['getAttribute']('data-processed')==='true';if(_0x5d17d1&&_0x3a154a['dataset']['mermaidTheme']===_0x531be0)continue;restoreMermaidSource(_0x3a154a);try{if(typeof _0x7ea092['run']==='function')await _0x7ea092['run']({'nodes':[_0x3a154a]});else typeof _0x7ea092['init']==='function'&&_0x7ea092['init'](undefined,[_0x3a154a]);_0x3a154a['dataset']['mermaidTheme']=_0x531be0,delete _0x3a154a['dataset']['mermaidError'];}catch(_0x2feb34){console['error']('Mermaid\x20render\x20failed:',_0x2feb34),restoreMermaidSource(_0x3a154a),_0x3a154a['dataset']['mermaidError']='true',delete _0x3a154a['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3278ff=>{_0x3278ff['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x3278ff);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2e227d=>{_0x2e227d['forEach'](_0x32c572=>{_0x32c572['addedNodes']['forEach'](_0x54fd93=>{_0x54fd93['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x54fd93);});});}),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'(_0x302283){const _0x393c5e=new Date(_0x302283),_0x1b0cf1=new Date(),_0x5d7a57=_0x1b0cf1-_0x393c5e,_0x1c6e16=Math['floor'](_0x5d7a57/0x3e8),_0x5a6d83=Math['floor'](_0x1c6e16/0x3c),_0x4ea138=Math['floor'](_0x5a6d83/0x3c),_0x146f9b=Math['floor'](_0x4ea138/0x18);if(_0x1c6e16<0x3c)return'now';if(_0x5a6d83<0x3c)return _0x5a6d83+'m\x20ago';if(_0x4ea138<0x18)return _0x4ea138+'h\x20ago';return _0x146f9b+'d\x20ago';},'getStatusIcon'(_0x3a8dec){switch(_0x3a8dec){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x408e06){switch(_0x408e06){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'(_0x33e6c7,_0x4dfcb9=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x21c2c6={};_0x21c2c6['text/plain']=new Blob([_0x33e6c7],{'type':'text/plain'});_0x4dfcb9&&(_0x21c2c6['text/html']=new Blob([_0x4dfcb9],{'type':'text/html'}));const _0x114145=new ClipboardItem(_0x21c2c6);return await navigator['clipboard']['write']([_0x114145]),!![];}catch(_0x1dce73){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x1dce73);}try{const _0x5e3990=_0x392101=>{_0x392101['preventDefault'](),_0x392101['clipboardData']['setData']('text/plain',_0x33e6c7),_0x4dfcb9&&_0x392101['clipboardData']['setData']('text/html',_0x4dfcb9);};document['addEventListener']('copy',_0x5e3990);const _0x11a761=document['execCommand']('copy');document['removeEventListener']('copy',_0x5e3990);if(_0x11a761)return!![];}catch(_0xbd53b6){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0xbd53b6);}try{const _0x5022c7=document['createElement']('textarea');_0x5022c7['value']=_0x33e6c7,_0x5022c7['style']['position']='fixed',_0x5022c7['style']['opacity']='0',_0x5022c7['style']['pointerEvents']='none',document['body']['appendChild'](_0x5022c7),_0x5022c7['select']();const _0x3d1636=document['execCommand']('copy');return document['body']['removeChild'](_0x5022c7),_0x3d1636;}catch(_0x373351){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x373351),![];}},'showToast'(_0x523a47,_0x533531='info'){const _0x1d44c8=getNextToastId(),_0x27c04f=document['createElement']('div');_0x27c04f['className']='toast\x20toast-'+_0x533531,_0x27c04f['textContent']=_0x523a47,_0x27c04f['dataset']['toastId']=_0x1d44c8,document['body']['appendChild'](_0x27c04f);const _0x12ac43=_0x533531==='error'?0x2710:0xbb8,_0x1850d1=setTimeout(()=>{removeToastById(_0x1d44c8);},_0x12ac43),_0x5a2e9f={'id':_0x1d44c8,'el':_0x27c04f,'timeoutId':_0x1850d1};return registerToast(_0x5a2e9f),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x27c04f['classList']['add']('show');});}),_0x1d44c8;},'showError'(_0x11ff59){console['error'](_0x11ff59);const _0x54ef53=typeof _0x11ff59==='string'?_0x11ff59:_0x11ff59['message']||'An\x20error\x20occurred';this['showToast'](_0x54ef53,'error');},'showSuccess'(_0x294326){this['showToast'](_0x294326,'success');},'capitalize'(_0x4d3265){if(!_0x4d3265)return'';return _0x4d3265['charAt'](0x0)['toUpperCase']()+_0x4d3265['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x168289){return escapeHtmlValue(_0x168289);},'ansiToHtml'(_0x2e1baf){if(_0x2e1baf===null||_0x2e1baf===undefined)return'';let _0x1f65d2=this['escapeHtml'](_0x2e1baf);const _0x2b9137={'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'},_0x45af36={'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 _0x11f463=0x0;return _0x1f65d2=_0x1f65d2['replace'](/\x1b\[([0-9;]*)m/g,(_0x3a3b3e,_0x351aa0)=>{if(!_0x351aa0||_0x351aa0==='0'){const _0x588b40='</span>'['repeat'](_0x11f463);return _0x11f463=0x0,_0x588b40;}const _0x1abd65=_0x351aa0['split'](';'),_0x546f28=[];for(const _0xaad550 of _0x1abd65){if(_0xaad550==='1')_0x546f28['push']('font-weight:bold');else{if(_0xaad550==='2')_0x546f28['push']('opacity:0.7');else{if(_0xaad550==='3')_0x546f28['push']('font-style:italic');else{if(_0xaad550==='4')_0x546f28['push']('text-decoration:underline');else{if(_0xaad550==='9')_0x546f28['push']('text-decoration:line-through');else{if(_0x2b9137[_0xaad550])_0x546f28['push']('color:'+_0x2b9137[_0xaad550]);else{if(_0x45af36[_0xaad550])_0x546f28['push']('background-color:'+_0x45af36[_0xaad550]);}}}}}}}if(_0x546f28['length']>0x0)return _0x11f463++,'<span\x20style=\x22'+_0x546f28['join'](';')+'\x22>';return'';}),_0x1f65d2+='</span>'['repeat'](_0x11f463),_0x1f65d2=_0x1f65d2['replace'](/\\u001b\[([0-9;]*)m/g,(_0x569579,_0x16bb4d)=>{if(!_0x16bb4d||_0x16bb4d==='0')return'';const _0x4ee087=_0x16bb4d['split'](';'),_0x1c4a69=[];for(const _0x6e9c77 of _0x4ee087){if(_0x6e9c77==='1')_0x1c4a69['push']('font-weight:bold');else{if(_0x2b9137[_0x6e9c77])_0x1c4a69['push']('color:'+_0x2b9137[_0x6e9c77]);else{if(_0x45af36[_0x6e9c77])_0x1c4a69['push']('background-color:'+_0x45af36[_0x6e9c77]);}}}if(_0x1c4a69['length']>0x0)return'<span\x20style=\x22'+_0x1c4a69['join'](';')+'\x22>';return'';}),_0x1f65d2;},'showModal'({title:_0x40a829,content:_0x25ae0c,buttons:buttons=[]}){const _0x55420a='\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'](_0x40a829)+'</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'+_0x25ae0c+'\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']((_0x129bf2,_0x589292)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x129bf2['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x589292+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x129bf2['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',_0xa1ec72=document['createElement']('div');_0xa1ec72['id']='utils-modal',_0xa1ec72['className']='modal',_0xa1ec72['innerHTML']=_0x55420a,document['body']['appendChild'](_0xa1ec72);const _0x45b5ef=document['getElementById']('utils-modal-close');_0x45b5ef&&_0x45b5ef['addEventListener']('click',()=>this['hideModal']());const _0x427570=_0xa1ec72['querySelectorAll']('[data-btn-index]');_0x427570['forEach'](_0x3c9b8d=>{const _0x1d52d9=parseInt(_0x3c9b8d['dataset']['btnIndex']);buttons[_0x1d52d9]?.['onClick']&&_0x3c9b8d['addEventListener']('click',buttons[_0x1d52d9]['onClick']);});const _0xf6466f=document['getElementById']('utils-modal-overlay');_0xf6466f&&_0xf6466f['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x602cd8=document['getElementById']('utils-modal');_0x602cd8&&_0x602cd8['remove']();},'parseKeyValuePairs'(_0x3ca8c6){const _0xfc7b9d={};if(!_0x3ca8c6)return _0xfc7b9d;return _0x3ca8c6['split'](/\r?\n/)['map'](_0x2f3ea6=>_0x2f3ea6['trim']())['filter'](Boolean)['forEach'](_0x10f489=>{const _0x4d92d3=_0x10f489['indexOf']('=');if(_0x4d92d3>0x0){const _0x3565a0=_0x10f489['slice'](0x0,_0x4d92d3)['trim'](),_0x6556c7=_0x10f489['slice'](_0x4d92d3+0x1)['trim']();if(_0x3565a0)_0xfc7b9d[_0x3565a0]=_0x6556c7;}}),_0xfc7b9d;},'debounce'(_0xaac3cc,_0x1298a1=0xfa){let _0x4ade1d=null;return(..._0x5ce7a1)=>{clearTimeout(_0x4ade1d),_0x4ade1d=setTimeout(()=>_0xaac3cc['apply'](this,_0x5ce7a1),_0x1298a1);};},'formatTimestamp'(_0x15979f){if(!_0x15979f)return'N/A';const _0x4e62f2=new Date(_0x15979f);return _0x4e62f2['toLocaleDateString']()+'\x20'+_0x4e62f2['toLocaleTimeString']();},'getQueryParams'(){const _0x2dcd0c=new URLSearchParams(window['location']['search']),_0x525c37={};for(const [_0x99a533,_0x2655e3]of _0x2dcd0c){_0x525c37[_0x99a533]=_0x2655e3;}return _0x525c37;},'formatDuration'(_0x4a4f56,_0x46900c){if(!_0x4a4f56)return'N/A';const _0x28d4bd=new Date(_0x4a4f56),_0x96d078=_0x46900c?new Date(_0x46900c):new Date(),_0x461f70=_0x96d078-_0x28d4bd;if(_0x461f70<0x0)return'0s';const _0x1b1f73=Math['floor'](_0x461f70/0x3e8),_0x341f20=Math['floor'](_0x1b1f73/0x3c),_0xebf4d3=Math['floor'](_0x341f20/0x3c),_0x2f17c8=Math['floor'](_0xebf4d3/0x18);if(_0x1b1f73<0x3c)return _0x1b1f73+'s';if(_0x341f20<0x3c)return _0x341f20+'m\x20'+_0x1b1f73%0x3c+'s';if(_0xebf4d3<0x18)return _0xebf4d3+'h\x20'+_0x341f20%0x3c+'m\x20'+_0x1b1f73%0x3c+'s';return _0x2f17c8+'d\x20'+_0xebf4d3%0x18+'h\x20'+_0x341f20%0x3c+'m';},'renderMarkdown'(_0x4e8942,_0x180861={}){if(!_0x4e8942)return'';_0x4e8942=this['rewriteAttachmentLinks'](_0x4e8942,_0x180861),_0x4e8942=this['rewriteColorSyntax'](_0x4e8942);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x4e8942,_0x180861);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x4e8942);}catch(_0x3e148c){return console['error']('Markdown\x20parsing\x20error:',_0x3e148c),this['renderMarkdownFallback'](_0x4e8942,_0x180861);}},'rewriteAttachmentLinks'(_0x47a58b,_0x17dc08={}){const _0x545db6=typeof _0x17dc08['resolveAttachmentUrl']==='function'?_0x17dc08['resolveAttachmentUrl']:_0x17dc08['taskId']?_0x15b45e=>API_BASE+'/tasks/'+_0x17dc08['taskId']+'/attachments/'+encodeURIComponent(_0x15b45e):null;if(!_0x545db6)return _0x47a58b;return String(_0x47a58b)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x3bdc69,_0x17d07a)=>{const _0x21a29a=String(_0x17d07a||'')['trim']();if(!_0x21a29a)return _0x3bdc69;let _0x14784e=_0x21a29a;try{_0x14784e=decodeURIComponent(_0x21a29a);}catch{}const _0x5e693b=_0x545db6(_0x14784e);if(!_0x5e693b)return _0x3bdc69;return']('+_0x5e693b+')';});},'rewriteColorSyntax'(_0x514932){if(!_0x514932)return _0x514932;return String(_0x514932)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x406cc6,_0xd4ee65,_0x437d0e)=>{const _0x3047d4=this['rewriteColorSyntax'](_0x437d0e);return'<span\x20style=\x22color:\x20'+_0xd4ee65+'\x22>'+_0x3047d4+'</span>';});},'renderMarkdownFallback'(_0x28d9e2,_0x260c8f={}){if(!_0x28d9e2)return'';_0x28d9e2=_0x28d9e2['replace'](/\r\n/g,'\x0a'),_0x28d9e2=_0x28d9e2['replace'](/\r/g,'\x0a'),_0x28d9e2=this['rewriteAttachmentLinks'](_0x28d9e2,_0x260c8f);let _0x536ab1=this['escapeHtml'](_0x28d9e2);return _0x536ab1=_0x536ab1['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x536ab1=_0x536ab1['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x536ab1=_0x536ab1['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x536ab1=_0x536ab1['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x536ab1=_0x536ab1['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x536ab1=_0x536ab1['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x536ab1=_0x536ab1['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x536ab1=_0x536ab1['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x536ab1=_0x536ab1['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x536ab1=_0x536ab1['replace'](/\n\n/g,'</p><p>'),_0x536ab1=_0x536ab1['replace'](/\n/g,'<br>'),'<p>'+_0x536ab1+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x456807=new Uint8Array(0x10);crypto['getRandomValues'](_0x456807),_0x456807[0x6]=_0x456807[0x6]&0xf|0x40,_0x456807[0x8]=_0x456807[0x8]&0x3f|0x80;const _0x5581e0=Array['from'](_0x456807,_0x37c459=>_0x37c459['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x5581e0['slice'](0x0,0x8)+'-'+_0x5581e0['slice'](0x8,0xc)+'-'+_0x5581e0['slice'](0xc,0x10)+'-'+_0x5581e0['slice'](0x10,0x14)+'-'+_0x5581e0['slice'](0x14);}};export class CustomSelect{constructor(_0x2f06cb,_0x3afb34={}){this['nativeSelect']=_0x2f06cb,this['options']=_0x3afb34,this['isOpen']=![],this['selectedValue']=_0x2f06cb['value']||'',this['searchable']=_0x3afb34['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x5ee939=document['createElement']('div');_0x5ee939['className']='custom-select';const _0xda7444=document['createElement']('div');_0xda7444['className']='custom-select-trigger',_0xda7444['setAttribute']('tabindex','0'),_0xda7444['setAttribute']('role','button'),_0xda7444['setAttribute']('aria-haspopup','listbox');const _0x7b9d7f=document['createElement']('span');_0x7b9d7f['className']='custom-select-trigger-text';const _0x396d5f=document['createElement']('span');_0x396d5f['className']='custom-select-arrow',_0x396d5f['textContent']='▼',_0xda7444['appendChild'](_0x7b9d7f),_0xda7444['appendChild'](_0x396d5f);const _0x2d7cb0=document['createElement']('div');_0x2d7cb0['className']='custom-select-dropdown',_0x2d7cb0['setAttribute']('role','listbox');if(this['searchable']){const _0x2d44ee=document['createElement']('div');_0x2d44ee['className']='custom-select-search';const _0xac3e0b=document['createElement']('input');_0xac3e0b['type']='text',_0xac3e0b['className']='custom-select-search-input',_0xac3e0b['placeholder']='Type\x20to\x20search...',_0xac3e0b['setAttribute']('aria-label','Search\x20options'),_0xac3e0b['addEventListener']('input',_0x3fe270=>{this['searchQuery']=_0x3fe270['target']['value']['toLowerCase'](),this['filterOptions']();}),_0xac3e0b['addEventListener']('keydown',_0xf64154=>{if(_0xf64154['key']==='Escape')_0xf64154['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0xf64154['key']==='Enter'){_0xf64154['preventDefault'](),_0xf64154['stopPropagation']();const _0x1e6350=_0x2d7cb0['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1e6350){const _0x379154=_0x1e6350['getAttribute']('data-value');this['select'](_0x379154);}}}}),_0x2d44ee['appendChild'](_0xac3e0b),_0x2d7cb0['appendChild'](_0x2d44ee),this['searchInput']=_0xac3e0b;}const _0x346634=document['createElement']('div');_0x346634['className']='custom-select-options',_0x2d7cb0['appendChild'](_0x346634),_0x5ee939['appendChild'](_0xda7444),_0x5ee939['appendChild'](_0x2d7cb0),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x5ee939,this['nativeSelect']),this['wrapper']=_0x5ee939,this['trigger']=_0xda7444,this['triggerText']=_0x7b9d7f,this['dropdown']=_0x2d7cb0,this['optionsContainer']=_0x346634,_0xda7444['addEventListener']('click',()=>this['toggle']()),_0xda7444['addEventListener']('keydown',_0x295b51=>this['handleKeydown'](_0x295b51)),document['addEventListener']('click',_0x5bcb71=>{!_0x5ee939['contains'](_0x5bcb71['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x31810f=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x31810f['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x397bb0=new MutationObserver(()=>{this['updateDisabledState']();});_0x397bb0['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x58195c=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x58195c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x3217ab=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x3217ab),this['trigger']['setAttribute']('aria-disabled',_0x3217ab?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x3217ab?'-1':'0'),_0x3217ab&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x25bf92=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x23d308=_0x25bf92['filter'](_0xfb4b3f=>!_0xfb4b3f['disabled']&&!_0xfb4b3f['hidden']);_0x25bf92['forEach']((_0x209b7b,_0x32aeb5)=>{const _0x4d7681=document['createElement']('div');_0x4d7681['className']='custom-select-option',_0x4d7681['textContent']=_0x209b7b['textContent'],_0x4d7681['setAttribute']('data-value',_0x209b7b['value']),_0x4d7681['setAttribute']('data-index',_0x32aeb5),_0x4d7681['setAttribute']('role','option'),_0x209b7b['disabled']?_0x4d7681['classList']['add']('disabled'):_0x4d7681['addEventListener']('click',()=>this['select'](_0x209b7b['value'])),_0x209b7b['value']===this['selectedValue']&&_0x4d7681['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x4d7681),this['allOptions']['push']({'element':_0x4d7681,'text':_0x209b7b['textContent']['toLowerCase'](),'value':_0x209b7b['value'],'disabled':_0x209b7b['disabled']});});if(this['searchable']&&this['searchInput']){const _0x32ca7f=this['searchInput']['parentElement'];_0x23d308['length']>0x3?_0x32ca7f['style']['display']='':_0x32ca7f['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xd680a6=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x10d15a=>{if(!_0xd680a6||_0x10d15a['disabled'])_0x10d15a['element']['style']['display']='';else{const _0x435071=_0x10d15a['text']['includes'](_0xd680a6);_0x10d15a['element']['style']['display']=_0x435071?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x59f0a7){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x59f0a7,this['nativeSelect']['value']=_0x59f0a7;const _0x5de539=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x5de539),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x1d9ecd=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x1d9ecd&&(this['triggerText']['textContent']=_0x1d9ecd['textContent'],_0x1d9ecd['disabled']||_0x1d9ecd['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x284b73=>{_0x284b73['getAttribute']('data-value')===this['selectedValue']?_0x284b73['classList']['add']('selected'):_0x284b73['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 _0x13e452=window['getComputedStyle'](this['dropdown']);if(_0x13e452['position']==='fixed'){const _0x4b6a5c=this['trigger']['getBoundingClientRect'](),_0x272328=parseInt(_0x13e452['maxHeight'])||0xc8,_0x274a68=window['innerHeight'],_0xf60f0c=_0x274a68-_0x4b6a5c['bottom'],_0x4b7cdf=_0x4b6a5c['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x21d58d;_0xf60f0c<_0x272328&&_0x4b7cdf>_0xf60f0c?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x274a68-_0x4b6a5c['top']+'px',_0x21d58d=Math['min'](_0x272328,_0x4b7cdf-0xa),this['dropdown']['style']['maxHeight']=_0x21d58d+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4b6a5c['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x21d58d=Math['min'](_0x272328,_0xf60f0c-0xa),this['dropdown']['style']['maxHeight']=_0x21d58d+'px');if(this['optionsContainer']){let _0x1a1b82=_0x21d58d;if(this['searchInput']){const _0x5d0b74=this['searchInput']['parentElement'];_0x5d0b74&&(_0x1a1b82-=_0x5d0b74['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x1a1b82)+'px';}this['dropdown']['style']['left']=_0x4b6a5c['left']+'px',this['dropdown']['style']['width']=_0x4b6a5c['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x3de21d=this['searchInput']['parentElement'];_0x3de21d&&_0x3de21d['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'](_0xa0b8eb){if(this['nativeSelect']['disabled'])return;if(_0xa0b8eb['key']==='Enter'||_0xa0b8eb['key']==='\x20')_0xa0b8eb['preventDefault'](),this['toggle']();else _0xa0b8eb['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x169778='\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',_0x169778),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x4bbce2=document['getElementById']('confirm-dialog-close'),_0x493180=document['getElementById']('confirm-dialog-cancel'),_0x50a0f9=document['getElementById']('confirm-dialog-confirm'),_0x1f2517=this['_modal']['querySelector']('.modal-overlay');_0x4bbce2['addEventListener']('click',()=>this['_resolve'](![])),_0x493180['addEventListener']('click',()=>this['_resolve'](![])),_0x50a0f9['addEventListener']('click',()=>this['_resolve'](!![])),_0x1f2517['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x104e9c=>{if(_0x104e9c['key']==='Escape')_0x104e9c['preventDefault'](),this['_resolve'](![]);else _0x104e9c['key']==='Enter'&&(_0x104e9c['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x4a70f8,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x185c43=>{this['_resolvePromise']=_0x185c43,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x4a70f8;const _0x3d99be=document['getElementById']('confirm-dialog-cancel'),_0x8f4ab9=document['getElementById']('confirm-dialog-confirm');_0x3d99be['textContent']=cancelText,_0x8f4ab9['textContent']=confirmText,_0x8f4ab9['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x8f4ab9['focus']();});},'_resolve'(_0x18ba77){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x18ba77),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x1313b1,_0x443699={}){this['container']=_0x1313b1,this['options']={'placeholder':_0x443699['placeholder']||'Type\x20to\x20search...','maxItems':_0x443699['maxItems']||0x64,'loadItems':_0x443699['loadItems']||(async()=>[]),'renderItem':_0x443699['renderItem']||(_0x3fe1a9=>({'primary':String(_0x3fe1a9),'secondary':''})),'onSelect':_0x443699['onSelect']||(()=>{}),'filterItems':_0x443699['filterItems']||null,'getItemValue':_0x443699['getItemValue']||(_0x562983=>_0x562983),'sortItems':_0x443699['sortItems']||null,'debounceMs':_0x443699['debounceMs']||0xc8,'minCharsForSearch':_0x443699['minCharsForSearch']||0x0,'emptyMessage':_0x443699['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x443699['loadingMessage']||'Loading...','preload':_0x443699['preload']!==![],'searchMode':_0x443699['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',_0x215421=>this['onBlur'](_0x215421)),this['input']['addEventListener']('input',_0x3548ea=>this['onInput'](_0x3548ea)),this['input']['addEventListener']('keydown',_0xefbf10=>this['onKeydown'](_0xefbf10)),this['clearBtn']['addEventListener']('mousedown',_0x1321ff=>{_0x1321ff['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x4e34fa=>{_0x4e34fa['preventDefault']();}),document['addEventListener']('click',_0x1b8ee8=>{!this['wrapper']['contains'](_0x1b8ee8['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(_0x409203){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x409203);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2b3ab2){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x544beb){const _0x28c53b=_0x544beb['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x28c53b);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x28c53b):this['loadAndShow'](_0x28c53b);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0xb401c9){switch(_0xb401c9['key']){case'ArrowDown':_0xb401c9['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0xb401c9['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0xb401c9['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0xb401c9['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x18c7d3){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2226af=this['selectedIndex']+_0x18c7d3;if(_0x2226af>=0x0&&_0x2226af<this['filteredItems']['length']){this['selectedIndex']=_0x2226af,this['updateSelectionHighlight']();const _0x2450fd=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x2450fd[this['selectedIndex']]&&_0x2450fd[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x44c3ff=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x44c3ff['forEach']((_0x3b530b,_0x533ec8)=>{_0x3b530b['classList']['toggle']('keyboard-selected',_0x533ec8===this['selectedIndex']);});}async['loadAndShow'](_0x343e97){this['showLoading']();try{const _0x4a69eb=await this['options']['loadItems'](_0x343e97);if(this['options']['searchMode']==='server'){let _0x3a6389=_0x4a69eb;this['options']['sortItems']&&(_0x3a6389=this['options']['sortItems']([..._0x4a69eb]));this['filteredItems']=_0x3a6389;const _0x5b6846=this['filteredItems']['length']>=this['options']['maxItems'];_0x5b6846&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x5b6846),this['open']();}else this['allItems']=_0x4a69eb,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x343e97);}catch(_0x38d1ff){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x38d1ff),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x55a744){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x55a744):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2ca873=this['filteredItems']['length']>=this['options']['maxItems'];_0x2ca873&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2ca873),this['open']();}['renderItems'](_0x37e452){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']((_0x7977e7,_0x2a77c3)=>{const _0x85cce0=document['createElement']('div');_0x85cce0['className']='autocomplete-select-item',_0x85cce0['setAttribute']('role','option'),_0x85cce0['setAttribute']('data-index',_0x2a77c3);const _0x14f56c=this['options']['renderItem'](_0x7977e7);let _0xbb2ac1='';_0x14f56c['icon']&&(_0xbb2ac1='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x14f56c['iconClass']||'')+'\x22>'+_0x14f56c['icon']+'</span>'),_0x85cce0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xbb2ac1+'\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'](_0x14f56c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x14f56c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x14f56c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x85cce0['addEventListener']('click',()=>{this['selectItem'](_0x7977e7);}),_0x85cce0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x2a77c3,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x85cce0);}),_0x37e452?(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'](_0x982c7f){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x982c7f)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x2e6985){this['selectedItem']=_0x2e6985;const _0x2816f6=this['options']['renderItem'](_0x2e6985);this['input']['value']=_0x2816f6['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x2e6985);}['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'](_0x3ced21){if(_0x3ced21){this['selectedItem']=_0x3ced21;const _0x27e227=this['options']['renderItem'](_0x3ced21);this['input']['value']=_0x27e227['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x4bafe7){this['allItems']=_0x4bafe7,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'](_0x132dc3){this['input']['placeholder']=_0x132dc3;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x1d6b08=null){const _0x53a60b=document['getElementById']('admin-menu-container'),_0x1482b6=document['getElementById']('admin-menu-btn'),_0x209e14=document['getElementById']('admin-menu');if(!_0x53a60b||!_0x1482b6||!_0x209e14)return;try{!_0x1d6b08&&(_0x1d6b08=await API['getCurrentUser']());if(_0x1d6b08){const _0x5e3baa=window['Permissions'],_0x395aca=_0x5e3baa['hasServerPermission'](_0x1d6b08,'*')||_0x5e3baa['hasEnvPermission'](_0x1d6b08,'environments:manage')||_0x5e3baa['hasServerPermission'](_0x1d6b08,'users:create')||_0x5e3baa['hasTeamPermission'](_0x1d6b08,'teams:manage')||_0x5e3baa['hasEnvPermission'](_0x1d6b08,'environments:view_details');if(!_0x395aca)return;_0x53a60b['hidden']=![];if(!_0x5e3baa['hasServerPermission'](_0x1d6b08,'*')){const _0x36a349=_0x209e14['querySelectorAll']('.admin-menu-item');_0x36a349['forEach'](_0x18f6f6=>{const _0x28054f=_0x18f6f6['querySelector']('.option-text')?.['textContent']?.['trim']();_0x28054f==='Users'&&!_0x5e3baa['hasServerPermission'](_0x1d6b08,'users:create')&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Skills'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Server\x20Settings'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Server\x20Health'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Git\x20History'&&(_0x18f6f6['hidden']=!![]),_0x28054f==='Roles'&&(_0x18f6f6['hidden']=!![]);});}_0x1482b6['addEventListener']('click',_0x27ebf6=>{_0x27ebf6['stopPropagation']();const _0x1f10b1=document['getElementById']('actions-menu');if(_0x1f10b1)_0x1f10b1['hidden']=!![];_0x209e14['hidden']=!_0x209e14['hidden'];}),document['addEventListener']('click',_0x52caf7=>{!_0x209e14['hidden']&&!_0x1482b6['contains'](_0x52caf7['target'])&&!_0x209e14['contains'](_0x52caf7['target'])&&(_0x209e14['hidden']=!![]);}),document['addEventListener']('keydown',_0x5c0718=>{_0x5c0718['key']==='Escape'&&!_0x209e14['hidden']&&(_0x209e14['hidden']=!![]);});const _0xcd6129=document['getElementById']('server-health-btn');_0xcd6129&&_0xcd6129['addEventListener']('click',async()=>{_0x209e14['hidden']=!![];const {openServerHealthModal:_0x3418b7}=await import('./server-health.js');_0x3418b7();});}}catch(_0x18bb55){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x18bb55['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 _0x4fe770=window['location']['pathname'],_0x3b101e=_0x4fe770['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x3b101e)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x3b101e[0x1]),_0x3b101e[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x1d181b={}){const _0x2d1a19=new URLSearchParams();_0x1d181b['userId']&&_0x2d1a19['set']('userId',String(_0x1d181b['userId']));_0x1d181b['automation']&&_0x2d1a19['set']('automation',String(_0x1d181b['automation']));const _0x412f1c=API_BASE+'/tasks/stats'+(_0x2d1a19['toString']()?'?'+_0x2d1a19['toString']():''),_0x11cc2e=await fetch(_0x412f1c);if(!_0x11cc2e['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x11cc2e['statusText']);return await _0x11cc2e['json']();},async 'getTasks'(_0x2707a5={}){const _0x3c2eb4=new URLSearchParams();_0x2707a5['status']&&_0x3c2eb4['set']('status',String(_0x2707a5['status']));_0x2707a5['environment']&&_0x3c2eb4['set']('environment',String(_0x2707a5['environment']));_0x2707a5['automation']&&_0x3c2eb4['set']('automation',String(_0x2707a5['automation']));if(_0x2707a5['include']){const _0x5f2104=Array['isArray'](_0x2707a5['include'])?_0x2707a5['include']['join'](','):String(_0x2707a5['include']);_0x5f2104&&_0x3c2eb4['set']('include',_0x5f2104);}_0x2707a5['filter']&&_0x3c2eb4['set']('filter',String(_0x2707a5['filter']));_0x2707a5['page']&&_0x3c2eb4['set']('page',String(_0x2707a5['page']));_0x2707a5['limit']&&_0x3c2eb4['set']('limit',String(_0x2707a5['limit']));_0x2707a5['userId']&&_0x3c2eb4['set']('userId',String(_0x2707a5['userId']));_0x2707a5['search']&&_0x3c2eb4['set']('search',String(_0x2707a5['search']));_0x2707a5['includeChildTasks']&&_0x3c2eb4['set']('includeChildTasks','true');const _0x41aeb8=API_BASE+'/tasks'+(_0x3c2eb4['toString']()?'?'+_0x3c2eb4['toString']():''),_0x14e538=await fetch(_0x41aeb8);if(!_0x14e538['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x14e538['statusText']);return await _0x14e538['json']();},async 'getAutomations'(_0x3e607b={}){const _0x264b21=new URLSearchParams();_0x3e607b['environment']&&_0x264b21['set']('environment',String(_0x3e607b['environment']));const _0x38f2e0=await fetch(API_BASE+'/api/automations'+(_0x264b21['toString']()?'?'+_0x264b21['toString']():''));if(!_0x38f2e0['ok']){const _0x1d4f55=await _0x38f2e0['json']()['catch'](()=>({}));throw new Error(_0x1d4f55['message']||_0x1d4f55['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x38f2e0['statusText']);}return await _0x38f2e0['json']();},async 'getAutomation'(_0x4b429f){const _0x2221f2=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4b429f));if(!_0x2221f2['ok']){const _0x4e9157=await _0x2221f2['json']()['catch'](()=>({}));throw new Error(_0x4e9157['message']||_0x4e9157['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x2221f2['statusText']);}return await _0x2221f2['json']();},async 'createAutomation'(_0x4fd69e){const _0x36403b=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4fd69e||{})});if(!_0x36403b['ok']){const _0x192a20=await _0x36403b['json']()['catch'](()=>({}));throw new Error(_0x192a20['message']||_0x192a20['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x36403b['statusText']);}return await _0x36403b['json']();},async 'updateAutomation'(_0x22f5a5,_0x19d4fe){const _0xb104c4=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x22f5a5),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19d4fe||{})});if(!_0xb104c4['ok']){const _0x6e0d63=await _0xb104c4['json']()['catch'](()=>({}));throw new Error(_0x6e0d63['message']||_0x6e0d63['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xb104c4['statusText']);}return await _0xb104c4['json']();},async 'deleteAutomation'(_0xf1d970){const _0x4881c5=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xf1d970),{'method':'DELETE'});if(!_0x4881c5['ok']){const _0x2ccdfa=await _0x4881c5['json']()['catch'](()=>({}));throw new Error(_0x2ccdfa['message']||_0x2ccdfa['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x4881c5['statusText']);}return await _0x4881c5['json']();},async 'triggerAutomation'(_0x1dd83b){const _0x369ceb=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1dd83b)+'/trigger',{'method':'POST'});if(!_0x369ceb['ok']){const _0x21717b=await _0x369ceb['json']()['catch'](()=>({}));throw new Error(_0x21717b['message']||_0x21717b['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x369ceb['statusText']);}return await _0x369ceb['json']();},async 'setAutomationEnabled'(_0x5c800d,_0x54038a){const _0x5ea481=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c800d)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x54038a})});if(!_0x5ea481['ok']){const _0x25c9c7=await _0x5ea481['json']()['catch'](()=>({}));throw new Error(_0x25c9c7['message']||_0x25c9c7['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x5ea481['statusText']);}return await _0x5ea481['json']();},async 'getAutomationHistory'(_0x439264,_0x45aafe=0x32){const _0x289510=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x439264)+'/history?limit='+encodeURIComponent(String(_0x45aafe)));if(!_0x289510['ok']){const _0xdda5d=await _0x289510['json']()['catch'](()=>({}));throw new Error(_0xdda5d['message']||_0xdda5d['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x289510['statusText']);}return await _0x289510['json']();},async 'getTask'(_0x489865,_0x2fa525={}){const _0x2a7070=new URLSearchParams();if(_0x2fa525['include']){const _0x5000e8=Array['isArray'](_0x2fa525['include'])?_0x2fa525['include']['join'](','):String(_0x2fa525['include']);if(_0x5000e8)_0x2a7070['set']('include',_0x5000e8);}const _0x19a00f=await fetch(API_BASE+'/tasks/'+_0x489865+(_0x2a7070['toString']()?'?'+_0x2a7070['toString']():''));if(!_0x19a00f['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x19a00f['statusText']);return await _0x19a00f['json']();},async 'getTaskResults'(_0xa29c37){const _0x551de2=await fetch(API_BASE+'/tasks/'+_0xa29c37+'/results');if(!_0x551de2['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x551de2['statusText']);return await _0x551de2['json']();},async 'getTaskPatches'(_0x7c9f86){const _0x306b8d=await fetch(API_BASE+'/tasks/'+_0x7c9f86+'/patches');if(!_0x306b8d['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x306b8d['statusText']);return await _0x306b8d['json']();},async 'getTaskAttachments'(_0x19a961){const _0x54691d=await fetch(API_BASE+'/tasks/'+_0x19a961+'/attachments');if(!_0x54691d['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x54691d['statusText']);return await _0x54691d['json']();},async 'uploadAttachments'(_0x36cbc5,_0x45e985){const _0x578404=new FormData();for(const _0x463651 of _0x45e985){_0x578404['append']('attachments',_0x463651);}const _0x7ba045=await fetch(API_BASE+'/tasks/'+_0x36cbc5+'/attachments',{'method':'POST','body':_0x578404});if(!_0x7ba045['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x7ba045['statusText']);return await _0x7ba045['json']();},async 'isAINameGenerationAvailable'(){try{const _0x3efa2f=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x3efa2f['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x3efa2f['json']();}catch(_0x4fde84){return{'available':![],'reason':_0x4fde84['message']};}},async 'generateTaskName'(_0x358e0e){try{const _0x41d21b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x358e0e})});return await _0x41d21b['json']();}catch(_0x5e34fb){return{'success':![],'error':_0x5e34fb['message']};}},async 'createTask'(_0x18cd3f){let _0xa8bfc,_0x35a53b={};if(_0x18cd3f['files']&&_0x18cd3f['files']['length']>0x0){const _0x122a92=new FormData();for(const [_0x12edc5,_0x347c80]of Object['entries'](_0x18cd3f)){if(_0x12edc5!=='files'){if(_0x347c80==null)continue;typeof _0x347c80==='object'?_0x122a92['append'](_0x12edc5,JSON['stringify'](_0x347c80)):_0x122a92['append'](_0x12edc5,String(_0x347c80));}}for(const _0x26c77d of _0x18cd3f['files']){_0x122a92['append']('attachments',_0x26c77d);}_0xa8bfc=_0x122a92;}else _0x35a53b['Content-Type']='application/json',_0xa8bfc=JSON['stringify'](_0x18cd3f);const _0x213d54=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x35a53b,'body':_0xa8bfc});if(!_0x213d54['ok']){const _0x5b104f=await _0x213d54['json'](),_0x27a3b7=new Error(_0x5b104f['error']||'Failed\x20to\x20create\x20task:\x20'+_0x213d54['statusText']),{message:_0x2c4355,..._0x316d56}=_0x5b104f;Object['assign'](_0x27a3b7,_0x316d56);throw _0x27a3b7;}return await _0x213d54['json']();},async 'createTestTask'(_0x3b5a17){const _0x184d8d=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3b5a17)});if(!_0x184d8d['ok']){const _0x1b8603=await _0x184d8d['json']();throw new Error(_0x1b8603['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x184d8d['statusText']);}return await _0x184d8d['json']();},async 'createEphemeralTest'(_0x523fcb){const _0x2290d6=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x523fcb)});if(!_0x2290d6['ok']){const _0x1556b6=await _0x2290d6['json']();throw new Error(_0x1556b6['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x2290d6['statusText']);}return await _0x2290d6['json']();},async 'createDeployTask'(_0x41d36b){const _0x4f3801=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41d36b)});if(!_0x4f3801['ok']){const _0x109dce=await _0x4f3801['json']();throw new Error(_0x109dce['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x4f3801['statusText']);}return await _0x4f3801['json']();},async 'getEnvironments'(){const _0xd36410=await fetch(API_BASE+'/environments');if(!_0xd36410['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xd36410['statusText']);return await _0xd36410['json']();},async 'getEnvironment'(_0x14e7d5){const _0x4da938=await fetch(API_BASE+'/environments/'+_0x14e7d5);if(!_0x4da938['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x4da938['statusText']);return await _0x4da938['json']();},async 'getEnvironmentRepoHistory'(_0x15eb80,_0x38a8fc,_0x293816={}){if(!_0x15eb80||!_0x38a8fc)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x41da89=new URLSearchParams();if(_0x293816['limit'])_0x41da89['set']('limit',String(_0x293816['limit']));if(_0x293816['offset'])_0x41da89['set']('offset',String(_0x293816['offset']));if(_0x293816['search'])_0x41da89['set']('search',String(_0x293816['search']));if(_0x293816['branch'])_0x41da89['set']('branch',String(_0x293816['branch']));const _0x4133e3=API_BASE+'/environments/'+encodeURIComponent(_0x15eb80)+'/repos/'+encodeURIComponent(_0x38a8fc)+'/git/history',_0x3e6ac8=await fetch(''+_0x4133e3+(_0x41da89['toString']()?'?'+_0x41da89['toString']():''));if(!_0x3e6ac8['ok']){const _0x3e0a68=await _0x3e6ac8['json']()['catch'](()=>({}));throw new Error(_0x3e0a68['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x3e6ac8['statusText']);}return await _0x3e6ac8['json']();},async 'getEnvironmentRepoCommit'(_0x1c627f,_0xc90db2,_0x52dd59){if(!_0x1c627f||!_0xc90db2||!_0x52dd59)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1ea94f=API_BASE+'/environments/'+encodeURIComponent(_0x1c627f)+'/repos/'+encodeURIComponent(_0xc90db2)+'/git/commits/'+encodeURIComponent(_0x52dd59),_0x5299df=await fetch(_0x1ea94f);if(!_0x5299df['ok']){const _0x1b0a89=await _0x5299df['json']()['catch'](()=>({}));throw new Error(_0x1b0a89['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5299df['statusText']);}return await _0x5299df['json']();},async 'getEnvironmentRepoBranches'(_0xd9158,_0x53c363){if(!_0xd9158||!_0x53c363)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x3f2343=API_BASE+'/environments/'+encodeURIComponent(_0xd9158)+'/repos/'+encodeURIComponent(_0x53c363)+'/git/branches',_0x2b8139=await fetch(_0x3f2343);if(!_0x2b8139['ok']){const _0x40c8b3=await _0x2b8139['json']()['catch'](()=>({}));throw new Error(_0x40c8b3['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x2b8139['statusText']);}return await _0x2b8139['json']();},async 'revertEnvironmentRepoCommit'(_0x8447a,_0x27d150,_0x1af147,_0x3a98a1={}){if(!_0x8447a||!_0x27d150||!_0x1af147)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1dc5ff=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x8447a)+'/repos/'+encodeURIComponent(_0x27d150)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x1af147,..._0x3a98a1})});if(!_0x1dc5ff['ok']){const _0x1d097f=await _0x1dc5ff['json']()['catch'](()=>({}));throw new Error(_0x1d097f['message']||_0x1d097f['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1dc5ff['statusText']);}return await _0x1dc5ff['json']();},async 'getTemplates'(_0x1f94c={}){const _0x3f3f03=new URLSearchParams();if(_0x1f94c['include']){const _0x57e1bf=Array['isArray'](_0x1f94c['include'])?_0x1f94c['include']['join'](','):String(_0x1f94c['include']);if(_0x57e1bf)_0x3f3f03['set']('include',_0x57e1bf);}const _0x3d57d9=await fetch(API_BASE+'/templates'+(_0x3f3f03['toString']()?'?'+_0x3f3f03['toString']():''));if(!_0x3d57d9['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x3d57d9['statusText']);return await _0x3d57d9['json']();},async 'getTemplatesForEnvironment'(_0x2226a7,_0x1edce5={}){if(!_0x2226a7)throw new Error('Environment\x20name\x20is\x20required');const _0x367b8d=new URLSearchParams();if(_0x1edce5['include']){const _0x39413f=Array['isArray'](_0x1edce5['include'])?_0x1edce5['include']['join'](','):String(_0x1edce5['include']);if(_0x39413f)_0x367b8d['set']('include',_0x39413f);}const _0x559fcd=await fetch(API_BASE+'/templates/'+_0x2226a7+(_0x367b8d['toString']()?'?'+_0x367b8d['toString']():''));if(!_0x559fcd['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x2226a7+':\x20'+_0x559fcd['statusText']);return await _0x559fcd['json']();},async 'getTemplate'(_0xb05df8,_0x40378d,_0x397614={}){if(!_0xb05df8||!_0x40378d)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x50693a=new URLSearchParams();if(_0x397614['include']){const _0x4b21d2=Array['isArray'](_0x397614['include'])?_0x397614['include']['join'](','):String(_0x397614['include']);if(_0x4b21d2)_0x50693a['set']('include',_0x4b21d2);}const _0x210388=await fetch(API_BASE+'/templates/'+_0xb05df8+'/'+_0x40378d+(_0x50693a['toString']()?'?'+_0x50693a['toString']():''));if(!_0x210388['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x210388['statusText']);return await _0x210388['json']();},async 'getTaskLogs'(_0x243639,_0x210002={}){if(!_0x243639)throw new Error('Task\x20ID\x20is\x20required');const _0x4542d8=new URLSearchParams();_0x210002['tail']&&_0x4542d8['set']('tail',String(_0x210002['tail']));const _0x24fb9b=await fetch(API_BASE+'/tasks/'+_0x243639+'/logs'+(_0x4542d8['toString']()?'?'+_0x4542d8['toString']():''));if(!_0x24fb9b['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x24fb9b['statusText']);return await _0x24fb9b['text']();},async 'getContainers'(){const _0x5e7a7e=await fetch(API_BASE+'/containers');if(!_0x5e7a7e['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x5e7a7e['statusText']);return await _0x5e7a7e['json']();},async 'getContainer'(_0x3fa82b){const _0x41ba7a=await fetch(API_BASE+'/containers/'+_0x3fa82b);if(!_0x41ba7a['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x41ba7a['statusText']);return await _0x41ba7a['json']();},async 'startInteractiveContainer'(_0x19fdb5){const _0x5b86ce=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19fdb5)});if(!_0x5b86ce['ok']){const _0x50266d=await _0x5b86ce['json']()['catch'](()=>({}));throw new Error(_0x50266d['message']||'Failed\x20to\x20start\x20container:\x20'+_0x5b86ce['statusText']);}return await _0x5b86ce['json']();},async 'stopContainer'(_0x10b994){const _0x42f516=await fetch(API_BASE+'/containers/'+_0x10b994,{'method':'DELETE'});if(!_0x42f516['ok']){const _0x10cb07=await _0x42f516['json']()['catch'](()=>({}));throw new Error(_0x10cb07['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x42f516['statusText']);}return await _0x42f516['json']();},async 'stopTask'(_0x522b02){if(!_0x522b02)throw new Error('Task\x20ID\x20is\x20required');const _0x1dd206=await fetch(API_BASE+'/tasks/'+_0x522b02+'/stop',{'method':'POST'});if(!_0x1dd206['ok']){const _0x408260=await _0x1dd206['json']()['catch'](()=>({}));throw new Error(_0x408260['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x1dd206['statusText']);}return await _0x1dd206['json']();},async 'interruptTask'(_0x3f0697){if(!_0x3f0697)throw new Error('Task\x20ID\x20is\x20required');const _0x558686=await fetch(API_BASE+'/tasks/'+_0x3f0697+'/interrupt',{'method':'POST'});if(!_0x558686['ok']){const _0x49be3c=await _0x558686['json']()['catch'](()=>({}));throw new Error(_0x49be3c['error']||_0x49be3c['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x558686['statusText']);}return await _0x558686['json']();},async 'startTask'(_0x5509b7){if(!_0x5509b7)throw new Error('Task\x20ID\x20is\x20required');const _0x217614=await fetch(API_BASE+'/tasks/'+_0x5509b7+'/start',{'method':'POST'});if(!_0x217614['ok']){const _0x3ea34a=await _0x217614['json']()['catch'](()=>({}));throw new Error(_0x3ea34a['error']||'Failed\x20to\x20start\x20task:\x20'+_0x217614['statusText']);}return await _0x217614['json']();},async 'deleteTask'(_0x2c014c){if(!_0x2c014c)throw new Error('Task\x20ID\x20is\x20required');const _0x92718a=await fetch(API_BASE+'/tasks/'+_0x2c014c,{'method':'DELETE'});if(!_0x92718a['ok']){const _0x24f7f0=await _0x92718a['json']()['catch'](()=>({}));throw new Error(_0x24f7f0['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x92718a['statusText']);}return await _0x92718a['json']();},async 'refreshTasksFromDisk'(){const _0x57c805=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x57c805['ok']){const _0x44d1ac=await _0x57c805['json']()['catch'](()=>({}));throw new Error(_0x44d1ac['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x57c805['statusText']);}return await _0x57c805['json']();},async 'approveTask'(_0x4a0b91,_0x434d10={}){if(!_0x4a0b91)throw new Error('Task\x20ID\x20is\x20required');const _0x2676e8={'commit_message':_0x434d10['commit_message']||'','pull':_0x434d10['pull']??![],'push':_0x434d10['push']??![]};_0x434d10['new_branch']&&(_0x2676e8['new_branch']=_0x434d10['new_branch']);const _0x175656=await fetch(API_BASE+'/tasks/'+_0x4a0b91+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2676e8)});if(!_0x175656['ok']){const _0x34fe26=await _0x175656['json']()['catch'](()=>({}));let _0x402f12=_0x34fe26['error']||_0x34fe26['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x175656['statusText'];if(_0x34fe26['results']&&Array['isArray'](_0x34fe26['results'])){const _0x4949ad=_0x34fe26['results']['filter'](_0x25fea4=>!_0x25fea4['success']&&_0x25fea4['error']);_0x4949ad['length']>0x0&&(_0x402f12=_0x4949ad[0x0]['error']);}throw new Error(_0x402f12);}return await _0x175656['json']();},async 'getPullRequestInfo'(_0x2352bf){if(!_0x2352bf)throw new Error('Task\x20ID\x20is\x20required');const _0x3a6c35=await fetch(API_BASE+'/tasks/'+_0x2352bf+'/pull-request-info');if(!_0x3a6c35['ok']){const _0x3495a8=await _0x3a6c35['json']()['catch'](()=>({}));throw new Error(_0x3495a8['error']||_0x3495a8['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x3a6c35['statusText']);}return await _0x3a6c35['json']();},async 'createPullRequests'(_0x199c03,_0x37e30c){if(!_0x199c03)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37e30c||!Array['isArray'](_0x37e30c))throw new Error('repos\x20array\x20is\x20required');const _0x57819b=await fetch(API_BASE+'/tasks/'+_0x199c03+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x37e30c})});if(!_0x57819b['ok']){const _0x411d54=await _0x57819b['json']()['catch'](()=>({}));let _0x17fde0=_0x411d54['error']||_0x411d54['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x57819b['statusText'];if(_0x411d54['results']&&Array['isArray'](_0x411d54['results'])){const _0x184575=_0x411d54['results']['filter'](_0x26e0a7=>!_0x26e0a7['success']&&_0x26e0a7['error']);_0x184575['length']>0x0&&(_0x17fde0=_0x184575[0x0]['error']);}throw new Error(_0x17fde0);}return await _0x57819b['json']();},async 'syncRepos'(_0x428198){if(!_0x428198)throw new Error('Task\x20ID\x20is\x20required');const _0x9aca6a=await fetch(API_BASE+'/tasks/'+_0x428198+'/sync-repos',{'method':'POST'});if(!_0x9aca6a['ok']){const _0x2a63ef=await _0x9aca6a['json']()['catch'](()=>({}));throw new Error(_0x2a63ef['error']||_0x2a63ef['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x9aca6a['statusText']);}return await _0x9aca6a['json']();},async 'getIbmiSyncInfo'(_0x370f49){if(!_0x370f49)throw new Error('Task\x20ID\x20is\x20required');const _0x451e77=await fetch(API_BASE+'/tasks/'+_0x370f49+'/ibmi-sync-info');if(!_0x451e77['ok']){const _0x42ac5f=await _0x451e77['json']()['catch'](()=>({}));throw new Error(_0x42ac5f['error']||_0x42ac5f['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x451e77['json']();},async 'getSyncFiles'(_0x443ea0){if(!_0x443ea0)throw new Error('Task\x20ID\x20is\x20required');const _0x23ea8c=await fetch(API_BASE+'/tasks/'+_0x443ea0+'/sync-to-ibmi/files');if(!_0x23ea8c['ok']){const _0x54f715=await _0x23ea8c['json']()['catch'](()=>({}));throw new Error(_0x54f715['error']||_0x54f715['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x23ea8c['json']();},async 'syncToIbmi'(_0x585979,_0x4b09a2,_0x4495c0=null,_0x2df63d=null,_0x787820=null){if(!_0x585979)throw new Error('Task\x20ID\x20is\x20required');const _0x5ba663={'library':_0x4b09a2};if(_0x4495c0)_0x5ba663['user']=_0x4495c0;if(_0x2df63d)_0x5ba663['password']=_0x2df63d;if(_0x787820)_0x5ba663['files']=_0x787820;const _0x32a0fb=await fetch(API_BASE+'/tasks/'+_0x585979+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5ba663)});if(!_0x32a0fb['ok']){const _0x8c1942=await _0x32a0fb['json']()['catch'](()=>({}));throw new Error(_0x8c1942['error']||_0x8c1942['message']||'Sync\x20failed');}return await _0x32a0fb['json']();},async 'getIbmiSyncLog'(_0x43c194){if(!_0x43c194)throw new Error('Task\x20ID\x20is\x20required');const _0x20cf95=await fetch(API_BASE+'/tasks/'+_0x43c194+'/ibmi-sync-log');if(!_0x20cf95['ok']){const _0x2ead0b=await _0x20cf95['json']()['catch'](()=>({}));throw new Error(_0x2ead0b['error']||_0x2ead0b['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x20cf95['json']();},async 'pullChanges'(_0x30eb6a){if(!_0x30eb6a)throw new Error('Task\x20ID\x20is\x20required');const _0x4d397f=await fetch(API_BASE+'/tasks/'+_0x30eb6a+'/pull-changes',{'method':'POST'});if(!_0x4d397f['ok']){const _0x560c4e=await _0x4d397f['json']()['catch'](()=>({}));throw new Error(_0x560c4e['error']||_0x560c4e['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x4d397f['statusText']);}return await _0x4d397f['json']();},async 'readFile'(_0x1342f5,_0x5d48c8){if(!_0x1342f5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d48c8)throw new Error('File\x20path\x20is\x20required');const _0x41ec4c=await fetch(API_BASE+'/tasks/'+_0x1342f5+'/files?path='+encodeURIComponent(_0x5d48c8));if(!_0x41ec4c['ok']){const _0x2f060f=await _0x41ec4c['json']()['catch'](()=>({}));throw new Error(_0x2f060f['error']||_0x2f060f['message']||'Failed\x20to\x20read\x20file:\x20'+_0x41ec4c['statusText']);}return await _0x41ec4c['json']();},'getTaskFileDownloadUrl'(_0x2a3f50,_0x1a6b81){if(!_0x2a3f50)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1a6b81)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x2a3f50+'/files/download?path='+encodeURIComponent(_0x1a6b81);},async 'writeFile'(_0x1a4b52,_0x3a41f6,_0x1b699a){if(!_0x1a4b52)throw new Error('Task\x20ID\x20is\x20required');if(!_0x3a41f6)throw new Error('File\x20path\x20is\x20required');if(_0x1b699a===undefined)throw new Error('Content\x20is\x20required');const _0x17f007=await fetch(API_BASE+'/tasks/'+_0x1a4b52+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x3a41f6,'content':_0x1b699a})});if(!_0x17f007['ok']){const _0x3f2c69=await _0x17f007['json']()['catch'](()=>({}));throw new Error(_0x3f2c69['error']||_0x3f2c69['message']||'Failed\x20to\x20write\x20file:\x20'+_0x17f007['statusText']);}return await _0x17f007['json']();},async 'uploadTaskFiles'(_0x52c58b,_0x5d000a,_0x234f7a){if(!_0x52c58b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5d000a)throw new Error('Target\x20directory\x20is\x20required');if(!_0x234f7a||_0x234f7a['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x56849f=new FormData();_0x56849f['append']('targetDir',_0x5d000a);for(const _0x556ffe of _0x234f7a){_0x56849f['append']('files',_0x556ffe,_0x556ffe['name']);}const _0x3c9aa2=await fetch(API_BASE+'/tasks/'+_0x52c58b+'/files/upload',{'method':'POST','body':_0x56849f});if(!_0x3c9aa2['ok']){const _0x3dc29e=await _0x3c9aa2['json']()['catch'](()=>({}));throw new Error(_0x3dc29e['error']||_0x3dc29e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x3c9aa2['statusText']);}return await _0x3c9aa2['json']();},async 'deleteFile'(_0x13bd0d,_0x2043e2){if(!_0x13bd0d)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2043e2)throw new Error('File\x20path\x20is\x20required');const _0x335da6=await fetch(API_BASE+'/tasks/'+_0x13bd0d+'/files?path='+encodeURIComponent(_0x2043e2),{'method':'DELETE'});if(!_0x335da6['ok']){const _0x476bbe=await _0x335da6['json']()['catch'](()=>({}));throw new Error(_0x476bbe['error']||_0x476bbe['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x335da6['statusText']);}return await _0x335da6['json']();},async 'discardFile'(_0x4a0381,_0x2005f6,_0x49d17c){if(!_0x4a0381)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2005f6)throw new Error('File\x20path\x20is\x20required');if(!_0x49d17c)throw new Error('Repository\x20path\x20is\x20required');const _0x2aa913=await fetch(API_BASE+'/tasks/'+_0x4a0381+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x2005f6,'repoPath':_0x49d17c})});if(!_0x2aa913['ok']){const _0x12dd8c=await _0x2aa913['json']()['catch'](()=>({}));throw new Error(_0x12dd8c['error']||_0x12dd8c['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x2aa913['statusText']);}return await _0x2aa913['json']();},async 'followUpTask'(_0x12bcf5,_0x50dc8a={}){if(!_0x12bcf5)throw new Error('Task\x20ID\x20is\x20required');if(!_0x50dc8a['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x537e66,_0x37b354={};if(_0x50dc8a['files']&&_0x50dc8a['files']['length']>0x0){const _0x2a0bef=new FormData();_0x2a0bef['append']('instructions',_0x50dc8a['instructions']);for(const _0x5962de of _0x50dc8a['files']){_0x2a0bef['append']('attachments',_0x5962de);}_0x537e66=_0x2a0bef;}else _0x37b354['Content-Type']='application/json',_0x537e66=JSON['stringify']({'instructions':_0x50dc8a['instructions']});const _0x9a48a0=await fetch(API_BASE+'/tasks/'+_0x12bcf5+'/follow-up',{'method':'POST','headers':_0x37b354,'body':_0x537e66});if(!_0x9a48a0['ok']){const _0x52a9f5=await _0x9a48a0['json']()['catch'](()=>({}));throw new Error(_0x52a9f5['error']||_0x52a9f5['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x9a48a0['statusText']);}return await _0x9a48a0['json']();},async 'getTaskRewindPoints'(_0x47aee8){if(!_0x47aee8)throw new Error('Task\x20ID\x20is\x20required');const _0x46a73b=await fetch(API_BASE+'/tasks/'+_0x47aee8+'/rewind-points');if(!_0x46a73b['ok']){const _0x4fd940=await _0x46a73b['json']()['catch'](()=>({}));throw new Error(_0x4fd940['error']||_0x4fd940['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x46a73b['statusText']);}return await _0x46a73b['json']();},async 'rewindTask'(_0x44bd4e,_0x3072de={}){if(!_0x44bd4e)throw new Error('Task\x20ID\x20is\x20required');const _0x24d05b=Number['isInteger'](_0x3072de['targetFollowUpCount'])?_0x3072de['targetFollowUpCount']:0x0,_0x252b2d={'targetFollowUpCount':_0x24d05b};typeof _0x3072de['instructions']==='string'&&_0x3072de['instructions']['trim']()&&(_0x252b2d['instructions']=_0x3072de['instructions']['trim']());typeof _0x3072de['rewindFiles']==='boolean'&&(_0x252b2d['rewindFiles']=_0x3072de['rewindFiles']);const _0x30f2ea=await fetch(API_BASE+'/tasks/'+_0x44bd4e+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x252b2d)});if(!_0x30f2ea['ok']){const _0x3151ce=await _0x30f2ea['json']()['catch'](()=>({}));throw new Error(_0x3151ce['error']||_0x3151ce['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x30f2ea['statusText']);}return await _0x30f2ea['json']();},async 'login'(_0x208c81,_0x2ef321){const _0x4edf0e=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x208c81,'password':_0x2ef321})});if(!_0x4edf0e['ok']){const _0x2295b2=await _0x4edf0e['json']();throw new Error(_0x2295b2['message']||'Login\x20failed');}return await _0x4edf0e['json']();},async 'logout'(){const _0x5d3748=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5d3748['ok']){const _0x15dcd0=await _0x5d3748['json']();throw new Error(_0x15dcd0['message']||'Logout\x20failed');}return await _0x5d3748['json']();},async 'getCurrentUser'(){const _0x781d21=await fetch(API_BASE+'/auth/me');if(!_0x781d21['ok'])throw new Error('Not\x20authenticated');const _0x4683ff=await _0x781d21['json']();return _0x4683ff['user'];},async 'getRolesInfo'(){const _0x2edaf4=await fetch(API_BASE+'/users/roles');if(!_0x2edaf4['ok']){const _0x2415b0=await _0x2edaf4['json']();throw new Error(_0x2415b0['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x2edaf4['json']();},async 'getUsers'(){const _0x1749fb=await fetch(API_BASE+'/users');if(!_0x1749fb['ok']){const _0x1dff47=await _0x1749fb['json']();throw new Error(_0x1dff47['message']||'Failed\x20to\x20get\x20users');}return await _0x1749fb['json']();},async 'getUser'(_0x4a73ba){const _0x8ce92e=await fetch(API_BASE+'/users/'+_0x4a73ba);if(!_0x8ce92e['ok']){const _0x475ebe=await _0x8ce92e['json']();throw new Error(_0x475ebe['message']||'Failed\x20to\x20get\x20user');}return await _0x8ce92e['json']();},async 'createUser'(_0x296328){const _0x4f6c48=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x296328)});if(!_0x4f6c48['ok']){const _0x3fc6cd=await _0x4f6c48['json']();throw new Error(_0x3fc6cd['message']||'Failed\x20to\x20create\x20user');}return await _0x4f6c48['json']();},async 'updateUser'(_0x441af6,_0x2d3acd){const _0x3e585b=await fetch(API_BASE+'/users/'+_0x441af6,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d3acd)});if(!_0x3e585b['ok']){const _0x757987=await _0x3e585b['json']();throw new Error(_0x757987['message']||'Failed\x20to\x20update\x20user');}return await _0x3e585b['json']();},async 'deleteUser'(_0x393ea1){const _0x5054de=await fetch(API_BASE+'/users/'+_0x393ea1,{'method':'DELETE'});if(!_0x5054de['ok']){const _0x45cc2b=await _0x5054de['json']();throw new Error(_0x45cc2b['message']||'Failed\x20to\x20delete\x20user');}return await _0x5054de['json']();},async 'stopAllContainers'(){const _0x1e270b=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x4cfbcf=await _0x1e270b['json']()['catch'](()=>({}));if(!_0x1e270b['ok'])throw new Error(_0x4cfbcf['message']||_0x4cfbcf['error']||'Failed\x20to\x20stop\x20containers');return _0x4cfbcf;},async 'removeStoppedContainers'(){const _0x1b7abe=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x1387dd=await _0x1b7abe['json']()['catch'](()=>({}));if(!_0x1b7abe['ok'])throw new Error(_0x1387dd['message']||_0x1387dd['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x1387dd;},async 'pruneDockerResources'(){const _0x1f8874=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x4b2ddd=await _0x1f8874['json']()['catch'](()=>({}));if(!_0x1f8874['ok'])throw new Error(_0x4b2ddd['message']||_0x4b2ddd['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x4b2ddd;},async 'createPasswordToken'(_0x30b9ae,_0x153fe8='setup',_0x17d1e7=![]){const _0x5f20a8=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x30b9ae,'type':_0x153fe8,'sendEmail':_0x17d1e7})});if(!_0x5f20a8['ok']){const _0x53aea6=await _0x5f20a8['json']();throw new Error(_0x53aea6['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x5f20a8['json']();},async 'getEmailConfig'(){const _0x5dfe1b=await fetch(API_BASE+'/password/email-config');if(!_0x5dfe1b['ok']){const _0x3a631e=await _0x5dfe1b['json']();throw new Error(_0x3a631e['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5dfe1b['json']();},async 'updateTaskName'(_0x39d3e3,_0x6492b0){const _0x30a1d9=await fetch(API_BASE+'/tasks/'+_0x39d3e3,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x6492b0})});if(!_0x30a1d9['ok']){const _0x1355e3=await _0x30a1d9['json']();throw new Error(_0x1355e3['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x30a1d9['json']();},async 'pinTask'(_0x528b5a,_0x2af4b8,_0x18b135=null){if(!_0x528b5a)throw new Error('Task\x20ID\x20is\x20required');const _0x4e344a={'pinned':_0x2af4b8};_0x18b135&&_0x18b135['length']>0x0&&(_0x4e344a['additionalTaskIds']=_0x18b135);const _0x142324=await fetch(API_BASE+'/tasks/'+_0x528b5a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e344a)});if(!_0x142324['ok']){const _0x3d1ca2=await _0x142324['json']();throw new Error(_0x3d1ca2['error']||'Failed\x20to\x20pin\x20task');}return await _0x142324['json']();},async 'setTaskWinner'(_0x591a3e,_0x83393e,_0x471f30=[]){if(!_0x591a3e)throw new Error('Task\x20ID\x20is\x20required');const _0x3c393a=await fetch(API_BASE+'/tasks/'+_0x591a3e+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x83393e,'siblings':_0x471f30})});if(!_0x3c393a['ok']){const _0x9a838d=await _0x3c393a['json']();throw new Error(_0x9a838d['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x3c393a['json']();},async 'setTaskLoser'(_0x25276f,_0x9e79ed){if(!_0x25276f)throw new Error('Task\x20ID\x20is\x20required');const _0x16ba02=await fetch(API_BASE+'/tasks/'+_0x25276f+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x9e79ed})});if(!_0x16ba02['ok']){const _0x28a04e=await _0x16ba02['json']();throw new Error(_0x28a04e['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x16ba02['json']();},async 'createTaskGroup'(_0x7ef07c){const _0x71c4=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x7ef07c)});if(!_0x71c4['ok']){const _0x1ea09a=await _0x71c4['json']();throw new Error(_0x1ea09a['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x71c4['json']();},async 'getTaskGroups'(_0x5ca62e={}){const _0x349410=new URLSearchParams();if(_0x5ca62e['userId'])_0x349410['set']('userId',String(_0x5ca62e['userId']));if(_0x5ca62e['status'])_0x349410['set']('status',String(_0x5ca62e['status']));if(_0x5ca62e['limit'])_0x349410['set']('limit',String(_0x5ca62e['limit']));const _0x202e64=API_BASE+'/tasks/groups'+(_0x349410['toString']()?'?'+_0x349410['toString']():''),_0x4018aa=await fetch(_0x202e64);if(!_0x4018aa['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x4018aa['json']();},async 'getTaskGroup'(_0x5b3155){const _0x23e315=await fetch(API_BASE+'/tasks/groups/'+_0x5b3155);if(!_0x23e315['ok']){const _0x47ee29=await _0x23e315['json']();throw new Error(_0x47ee29['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x23e315['json']();},async 'updateTaskGroup'(_0x34ca32,_0x381499,_0x253111){const _0x3812a6=await fetch(API_BASE+'/tasks/'+_0x34ca32+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x381499,'groupIndex':_0x253111})});if(!_0x3812a6['ok']){const _0x20b2f9=await _0x3812a6['json']();throw new Error(_0x20b2f9['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x3812a6['json']();},async 'removeTaskFromGroup'(_0x93409c){return this['updateTaskGroup'](_0x93409c,null,null);},async 'deleteTaskGroup'(_0x2776ed,_0x20670a=![]){const _0x52fc59=_0x20670a?'?deleteTasks=true':'',_0xa695cc=await fetch(API_BASE+'/tasks/groups/'+_0x2776ed+_0x52fc59,{'method':'DELETE'});if(!_0xa695cc['ok']){const _0x3a700c=await _0xa695cc['json']();throw new Error(_0x3a700c['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x409903,_0x3cc98e){const _0x2a3f5c=await fetch(API_BASE+'/tasks/groups/'+_0x409903+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x3cc98e})});if(!_0x2a3f5c['ok']){const _0x4f13b4=await _0x2a3f5c['json']();throw new Error(_0x4f13b4['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x2a3f5c['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x4f98a6){if(!_0x4f98a6)throw new Error('Task\x20ID\x20is\x20required');const _0x50782c=await fetch(API_BASE+'/tasks/'+_0x4f98a6+'/comments');if(!_0x50782c['ok']){const _0x23d420=await _0x50782c['json']()['catch'](()=>({}));throw new Error(_0x23d420['error']||'Failed\x20to\x20get\x20comments');}return await _0x50782c['json']();},async 'addComment'(_0x5e737c,_0xf40e6b){if(!_0x5e737c)throw new Error('Task\x20ID\x20is\x20required');if(!_0xf40e6b)throw new Error('Comment\x20content\x20is\x20required');const _0x4ace8d=await fetch(API_BASE+'/tasks/'+_0x5e737c+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0xf40e6b})});if(!_0x4ace8d['ok']){const _0x42dff6=await _0x4ace8d['json']()['catch'](()=>({}));throw new Error(_0x42dff6['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ace8d['json']();},async 'updateComment'(_0xf6e90b,_0x38ed08,_0x371ce5){if(!_0xf6e90b)throw new Error('Task\x20ID\x20is\x20required');if(!_0x38ed08)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x371ce5)throw new Error('Comment\x20content\x20is\x20required');const _0x5173f3=await fetch(API_BASE+'/tasks/'+_0xf6e90b+'/comments/'+_0x38ed08,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x371ce5})});if(!_0x5173f3['ok']){const _0x48d2a0=await _0x5173f3['json']()['catch'](()=>({}));throw new Error(_0x48d2a0['error']||'Failed\x20to\x20update\x20comment');}return await _0x5173f3['json']();},async 'deleteComment'(_0x288b95,_0x281e04){if(!_0x288b95)throw new Error('Task\x20ID\x20is\x20required');if(!_0x281e04)throw new Error('Comment\x20ID\x20is\x20required');const _0xf72d6b=await fetch(API_BASE+'/tasks/'+_0x288b95+'/comments/'+_0x281e04,{'method':'DELETE'});if(!_0xf72d6b['ok']){const _0x2266a7=await _0xf72d6b['json']()['catch'](()=>({}));throw new Error(_0x2266a7['error']||'Failed\x20to\x20delete\x20comment');}return await _0xf72d6b['json']();},async 'createObjective'(_0x9b5cf3){const _0x3f7650={'objective':!![],'name':_0x9b5cf3['name']||'','environment':_0x9b5cf3['environment']||null,'agents':_0x9b5cf3['agents']||[],'branches':_0x9b5cf3['branches']||{},'isPinned':_0x9b5cf3['isPinned']||![],'parentObjectiveId':_0x9b5cf3['parentObjectiveId']||null,'env_vars':_0x9b5cf3['envVars']||{},'parameters':{'instructions':_0x9b5cf3['instructions']||''},'files':_0x9b5cf3['files']||[],'jira':_0x9b5cf3['jira']||null};return this['createTask'](_0x3f7650);},async 'updateObjective'(_0x3c915a,_0x415b36,_0x5e688e=[],_0x47ad8f=[]){let _0x2ccbcb,_0x29ba56={};const _0x94fc40={..._0x415b36};_0x47ad8f&&_0x47ad8f['length']>0x0&&(_0x94fc40['removeAttachments']=_0x47ad8f);if(_0x5e688e&&_0x5e688e['length']>0x0){const _0x36d9a3=new FormData();for(const [_0x3f5be4,_0xa4ad9d]of Object['entries'](_0x94fc40)){if(_0xa4ad9d==null)continue;typeof _0xa4ad9d==='object'?_0x36d9a3['append'](_0x3f5be4,JSON['stringify'](_0xa4ad9d)):_0x36d9a3['append'](_0x3f5be4,String(_0xa4ad9d));}for(const _0x542b2a of _0x5e688e){_0x36d9a3['append']('attachments',_0x542b2a);}_0x2ccbcb=_0x36d9a3;}else _0x29ba56['Content-Type']='application/json',_0x2ccbcb=JSON['stringify'](_0x94fc40);const _0x285a78=await fetch(API_BASE+'/tasks/'+_0x3c915a,{'method':'PATCH','headers':_0x29ba56,'body':_0x2ccbcb});if(!_0x285a78['ok']){const _0x383580=await _0x285a78['json']();throw new Error(_0x383580['error']||'Failed\x20to\x20update\x20objective');}return await _0x285a78['json']();},async 'deleteObjective'(_0x1117fb){return this['deleteTask'](_0x1117fb);},async 'launchObjective'(_0x5420eb,_0x5095a5={}){const _0x5e434e=await fetch(API_BASE+'/tasks/'+_0x5420eb+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5095a5)});if(!_0x5e434e['ok']){const _0x5c08c5=await _0x5e434e['json']();throw new Error(_0x5c08c5['error']||'Failed\x20to\x20launch\x20objective');}return await _0x5e434e['json']();},async 'getObjectiveAttachments'(_0x1c5692){return this['getTaskAttachments'](_0x1c5692);},async 'createJudgeTask'({environment:_0x3ab7e9,judgeAgent:_0x4df753,groupId:_0x24e1c1,taskIds:_0x29e22d,judgeCustomInstructions:_0x31102a,isPinned:_0x11107c}){const _0x30bc2d=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x3ab7e9,'judgeAgent':_0x4df753,'groupId':_0x24e1c1,'taskIds':_0x29e22d,'judgeCustomInstructions':_0x31102a,'isPinned':_0x11107c})});if(!_0x30bc2d['ok']){const _0x3e5fe9=await _0x30bc2d['json']();throw new Error(_0x3e5fe9['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x30bc2d['json']();},async 'getJudgeTasks'(_0x5a08da){const _0x1330c0=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x5a08da));if(!_0x1330c0['ok']){const _0x3db137=await _0x1330c0['json']();throw new Error(_0x3db137['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x1330c0['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x267b00,_0x6378de,_0x46ed3a=''){const _0x1edfab=await fetch(API_BASE+'/tasks/'+_0x267b00+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x6378de,'customPreamble':_0x46ed3a})});if(!_0x1edfab['ok']){const _0x1920c1=await _0x1edfab['json']();throw new Error(_0x1920c1['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x1edfab['json']();},async 'getJiraConfig'(){const _0x439229=await fetch(API_BASE+'/jira/config');if(!_0x439229['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x439229['json']();},async 'getJiraIssue'(_0x2a79b3){const _0x33e046=await fetch(API_BASE+'/jira/issues/'+_0x2a79b3);if(!_0x33e046['ok']){const _0x3a1781=await _0x33e046['json']()['catch'](()=>({}));throw new Error(_0x3a1781['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x33e046['statusText']);}return await _0x33e046['json']();},async 'searchJiraIssues'(_0x3165fc,_0x9eed8a=0x14){const _0xe49486=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3165fc,'maxResults':_0x9eed8a})});if(!_0xe49486['ok']){const _0x124ffa=await _0xe49486['json']()['catch'](()=>({}));throw new Error(_0x124ffa['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0xe49486['statusText']);}return await _0xe49486['json']();},async 'postJiraComment'(_0x15b39c,_0x41c748){const _0x551c24=await fetch(API_BASE+'/jira/issues/'+_0x15b39c+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x41c748})});if(!_0x551c24['ok']){const _0x4def96=await _0x551c24['json']()['catch'](()=>({}));throw new Error(_0x4def96['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x551c24['statusText']);}return await _0x551c24['json']();},async 'getJiraComments'(_0x1b0035){const _0x63ca9=await fetch(API_BASE+'/jira/issues/'+_0x1b0035+'/comments');if(!_0x63ca9['ok']){const _0x36bf44=await _0x63ca9['json']()['catch'](()=>({}));throw new Error(_0x36bf44['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x63ca9['statusText']);}return await _0x63ca9['json']();},async 'promptParameter'({environment:_0x1d0776,command:_0x2b3fea,parser:parser='json'}){const _0x128beb=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1d0776,'command':_0x2b3fea,'parser':parser})});if(!_0x128beb['ok']){const _0xb7fc75=await _0x128beb['json']()['catch'](()=>({}));throw new Error(_0xb7fc75['message']||_0xb7fc75['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x128beb['statusText']);}return await _0x128beb['json']();},async 'promptParameterStream'(_0x19c513,_0x117e1c){const _0x19f05a=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x19c513)});if(!_0x19f05a['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x19f05a['statusText']);const _0x38e7a4=_0x19f05a['body']['getReader'](),_0x3efa00=new TextDecoder();let _0x5869e8='';return new Promise((_0x36c129,_0x4d2cf6)=>{const _0x393eda=async()=>{try{const {done:_0x15eb77,value:_0x17e9bc}=await _0x38e7a4['read']();if(_0x15eb77)return;_0x5869e8+=_0x3efa00['decode'](_0x17e9bc,{'stream':!![]});const _0x490734=_0x5869e8['split']('\x0a\x0a');_0x5869e8=_0x490734['pop']()||'';for(const _0x1bf0cc of _0x490734){if(!_0x1bf0cc['trim']())continue;const _0x1700d9=_0x1bf0cc['split']('\x0a');let _0xd6f3a8='message',_0x496ce7='';for(const _0x10c3fc of _0x1700d9){if(_0x10c3fc['startsWith']('event:'))_0xd6f3a8=_0x10c3fc['substring'](0x6)['trim']();else _0x10c3fc['startsWith']('data:')&&(_0x496ce7=_0x10c3fc['substring'](0x5)['trim']());}if(!_0x496ce7)continue;try{const _0x1fe399=JSON['parse'](_0x496ce7);if(_0xd6f3a8==='progress'&&_0x117e1c)_0x117e1c(_0x1fe399['stage'],_0x1fe399['message']);else{if(_0xd6f3a8==='result'){_0x36c129(_0x1fe399);return;}else{if(_0xd6f3a8==='error'){let _0x3fef84=_0x1fe399['message']||_0x1fe399['error']||'Prompt\x20command\x20failed';_0x1fe399['rawOutput']&&(_0x3fef84+='\x0a\x0aRaw\x20output:\x0a'+_0x1fe399['rawOutput']);_0x4d2cf6(new Error(_0x3fef84));return;}}}}catch(_0x1e2536){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x1e2536),console['error']('Event\x20type:',_0xd6f3a8),console['error']('Event\x20data:',_0x496ce7),console['error']('First\x20200\x20chars:',_0x496ce7['substring'](0x0,0xc8)),_0x4d2cf6(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x1e2536['message']+'\x0a\x0aData:\x20'+_0x496ce7['substring'](0x0,0x1f4)));return;}}_0x393eda();}catch(_0x17ddc3){_0x4d2cf6(_0x17ddc3);}};_0x393eda();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x23ab66){const _0x5127d=await fetch(''+API_BASE+_0x23ab66);if(!_0x5127d['ok']){const _0x58f971=await _0x5127d['json']()['catch'](()=>({'error':_0x5127d['statusText']})),_0x2d14b4=new Error(_0x58f971['error']||_0x58f971['message']||_0x5127d['statusText']);if(_0x58f971['detail']!==undefined)_0x2d14b4['detail']=_0x58f971['detail'];throw _0x2d14b4;}return await _0x5127d['json']();},async 'post'(_0x363b21,_0x572b0d){const _0x167932=await fetch(''+API_BASE+_0x363b21,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x572b0d)});if(!_0x167932['ok']){const _0x18a7c6=await _0x167932['json']()['catch'](()=>({'error':_0x167932['statusText']})),_0xf4c2ed=new Error(_0x18a7c6['error']||_0x18a7c6['message']||_0x167932['statusText']);if(_0x18a7c6['detail']!==undefined)_0xf4c2ed['detail']=_0x18a7c6['detail'];throw _0xf4c2ed;}return await _0x167932['json']();},async 'put'(_0x4265b2,_0x2b4c50){const _0x340839=await fetch(''+API_BASE+_0x4265b2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2b4c50)});if(!_0x340839['ok']){const _0x56726d=await _0x340839['json']()['catch'](()=>({'error':_0x340839['statusText']})),_0x535f55=new Error(_0x56726d['error']||_0x56726d['message']||_0x340839['statusText']);if(_0x56726d['detail']!==undefined)_0x535f55['detail']=_0x56726d['detail'];throw _0x535f55;}return await _0x340839['json']();},async 'delete'(_0x2bf7ae,_0x2faf1c){const _0x32a908={'method':'DELETE'};_0x2faf1c&&(_0x32a908['headers']={'Content-Type':'application/json'},_0x32a908['body']=JSON['stringify'](_0x2faf1c));const _0x1a0e44=await fetch(''+API_BASE+_0x2bf7ae,_0x32a908);if(!_0x1a0e44['ok']){const _0x3c0af1=await _0x1a0e44['json']()['catch'](()=>({'error':_0x1a0e44['statusText']})),_0x4105af=new Error(_0x3c0af1['error']||_0x3c0af1['message']||_0x1a0e44['statusText']);if(_0x3c0af1['detail']!==undefined)_0x4105af['detail']=_0x3c0af1['detail'];throw _0x4105af;}return await _0x1a0e44['json']();},async 'getSkills'(){const _0x2b0da5=await fetch(API_BASE+'/skills');if(!_0x2b0da5['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x2b0da5['statusText']);return await _0x2b0da5['json']();},async 'getSkill'(_0x2133e9){const _0xb214e9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2133e9));if(!_0xb214e9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0xb214e9['statusText']);return await _0xb214e9['json']();},async 'createSkill'(_0x4f5e67){const _0xa543f4=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4f5e67)});if(!_0xa543f4['ok']){const _0x472dfd=await _0xa543f4['json']()['catch'](()=>({'error':_0xa543f4['statusText']})),_0x20fec2=new Error(_0x472dfd['error']||_0x472dfd['message']||_0xa543f4['statusText']);if(_0x472dfd['detail']!==undefined)_0x20fec2['detail']=_0x472dfd['detail'];throw _0x20fec2;}return await _0xa543f4['json']();},async 'updateSkill'(_0x40bfc1,_0x512214){const _0x3b7eee=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x40bfc1),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x512214)});if(!_0x3b7eee['ok']){const _0x30a0ae=await _0x3b7eee['json']()['catch'](()=>({'error':_0x3b7eee['statusText']})),_0x2bb6ea=new Error(_0x30a0ae['error']||_0x30a0ae['message']||_0x3b7eee['statusText']);if(_0x30a0ae['detail']!==undefined)_0x2bb6ea['detail']=_0x30a0ae['detail'];throw _0x2bb6ea;}return await _0x3b7eee['json']();},async 'deleteSkill'(_0x5788f3){const _0x1c988a=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5788f3),{'method':'DELETE'});if(!_0x1c988a['ok']){const _0x9835d=await _0x1c988a['json']()['catch'](()=>({'error':_0x1c988a['statusText']})),_0x5b72d0=new Error(_0x9835d['error']||_0x9835d['message']||_0x1c988a['statusText']);if(_0x9835d['detail']!==undefined)_0x5b72d0['detail']=_0x9835d['detail'];throw _0x5b72d0;}return await _0x1c988a['json']();},async 'getSkillFile'(_0x36676f,_0x1146bc){const _0x4b9421=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x36676f)+'/files/'+_0x1146bc);if(!_0x4b9421['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x4b9421['statusText']);return await _0x4b9421['json']();},async 'saveSkillFile'(_0x1496e9,_0x51ccf7,_0x23e357){const _0x294a62=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x1496e9)+'/files/'+_0x51ccf7,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x23e357})});if(!_0x294a62['ok']){const _0x43bacc=await _0x294a62['json']()['catch'](()=>({'error':_0x294a62['statusText']})),_0x3ffd20=new Error(_0x43bacc['error']||_0x43bacc['message']||_0x294a62['statusText']);if(_0x43bacc['detail']!==undefined)_0x3ffd20['detail']=_0x43bacc['detail'];throw _0x3ffd20;}return await _0x294a62['json']();},async 'deleteSkillFile'(_0x335213,_0x2d4566){const _0x544746=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x335213)+'/files/'+_0x2d4566,{'method':'DELETE'});if(!_0x544746['ok']){const _0xa55178=await _0x544746['json']()['catch'](()=>({'error':_0x544746['statusText']})),_0x1b45aa=new Error(_0xa55178['error']||_0xa55178['message']||_0x544746['statusText']);if(_0xa55178['detail']!==undefined)_0x1b45aa['detail']=_0xa55178['detail'];throw _0x1b45aa;}return await _0x544746['json']();},async 'pullSkills'(){const _0x590b0d=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x590b0d['ok']){const _0x198bed=await _0x590b0d['json']()['catch'](()=>({'error':_0x590b0d['statusText']})),_0xe92507=new Error(_0x198bed['error']||_0x198bed['message']||_0x590b0d['statusText']);if(_0x198bed['detail']!==undefined)_0xe92507['detail']=_0x198bed['detail'];throw _0xe92507;}return await _0x590b0d['json']();},async 'commitSkills'(_0x5f236f,_0x447de2={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x447de2,_0x35b3b5=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5f236f,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x35b3b5['ok']){const _0x1751e3=await _0x35b3b5['json']()['catch'](()=>({'error':_0x35b3b5['statusText']})),_0x591178=new Error(_0x1751e3['error']||_0x1751e3['message']||_0x35b3b5['statusText']);if(_0x1751e3['detail']!==undefined)_0x591178['detail']=_0x1751e3['detail'];throw _0x591178;}return await _0x35b3b5['json']();},async 'discardSkillsChanges'(){const _0x5d4af4=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x5d4af4['ok']){const _0x1eabb2=await _0x5d4af4['json']()['catch'](()=>({'error':_0x5d4af4['statusText']})),_0x3f0edf=new Error(_0x1eabb2['error']||_0x1eabb2['message']||_0x5d4af4['statusText']);if(_0x1eabb2['detail']!==undefined)_0x3f0edf['detail']=_0x1eabb2['detail'];throw _0x3f0edf;}return await _0x5d4af4['json']();},async 'getSkillCatalog'(){const _0xcd954a=await fetch(API_BASE+'/external-skills/catalog');if(!_0xcd954a['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0xcd954a['statusText']);return await _0xcd954a['json']();},async 'getImportedSkillsRegistry'(){const _0x490de7=await fetch(API_BASE+'/external-skills/registry');if(!_0x490de7['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x490de7['statusText']);return await _0x490de7['json']();},async 'importCatalogSkill'(_0x2d862e){const _0x404f0e=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2d862e})});if(!_0x404f0e['ok']){const _0xb9f18e=await _0x404f0e['json']()['catch'](()=>({'error':_0x404f0e['statusText']})),_0x1f05e2=new Error(_0xb9f18e['error']||_0xb9f18e['message']||_0x404f0e['statusText']);if(_0xb9f18e['detail']!==undefined)_0x1f05e2['detail']=_0xb9f18e['detail'];throw _0x1f05e2;}return await _0x404f0e['json']();},async 'importSkillFromGit'(_0x29e318,_0x4dbda1,_0x2ad9a0='main',_0x370589=null){const _0x43a878=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x29e318,'skillPath':_0x4dbda1,'branch':_0x2ad9a0,'skillId':_0x370589})});if(!_0x43a878['ok']){const _0x28930b=await _0x43a878['json']()['catch'](()=>({'error':_0x43a878['statusText']})),_0x5374ed=new Error(_0x28930b['error']||_0x28930b['message']||_0x43a878['statusText']);if(_0x28930b['detail']!==undefined)_0x5374ed['detail']=_0x28930b['detail'];throw _0x5374ed;}return await _0x43a878['json']();},async 'probeMarketplace'(_0x18fa72,_0x54ada3='main'){const _0xe839e5=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x18fa72,'branch':_0x54ada3})});if(!_0xe839e5['ok']){const _0x38e5ac=await _0xe839e5['json']()['catch'](()=>({'error':_0xe839e5['statusText']})),_0x4b4a97=new Error(_0x38e5ac['error']||_0x38e5ac['message']||_0xe839e5['statusText']);if(_0x38e5ac['detail']!==undefined)_0x4b4a97['detail']=_0x38e5ac['detail'];throw _0x4b4a97;}return await _0xe839e5['json']();},async 'importMarketplaceBundle'(_0x399df5,_0x5d6b31,_0x5ecb31,_0x6e231d=null){const _0x5616b3=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x399df5,'branch':_0x5d6b31,'bundleId':_0x5ecb31,'selectedSkills':_0x6e231d})});if(!_0x5616b3['ok']){const _0x20cf28=await _0x5616b3['json']()['catch'](()=>({'error':_0x5616b3['statusText']})),_0x528a00=new Error(_0x20cf28['error']||_0x20cf28['message']||_0x5616b3['statusText']);if(_0x20cf28['detail']!==undefined)_0x528a00['detail']=_0x20cf28['detail'];throw _0x528a00;}return await _0x5616b3['json']();},async 'importSkillFromFolder'(_0x4f44b7,_0x3efad1=null){const _0x3386c4=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x4f44b7,'skillId':_0x3efad1})});if(!_0x3386c4['ok']){const _0x3a1824=await _0x3386c4['json']()['catch'](()=>({'error':_0x3386c4['statusText']})),_0x5c137b=new Error(_0x3a1824['error']||_0x3a1824['message']||_0x3386c4['statusText']);if(_0x3a1824['detail']!==undefined)_0x5c137b['detail']=_0x3a1824['detail'];throw _0x5c137b;}return await _0x3386c4['json']();},async 'importSkillFromNpm'(_0x131360,_0x1029ec='latest',_0xe0447b=null,_0x47bd10=null){const _0x33e41b=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x131360,'version':_0x1029ec,'skillId':_0xe0447b,'registry':_0x47bd10})});if(!_0x33e41b['ok']){const _0xfcfff=await _0x33e41b['json']()['catch'](()=>({'error':_0x33e41b['statusText']})),_0x491fa3=new Error(_0xfcfff['error']||_0xfcfff['message']||_0x33e41b['statusText']);if(_0xfcfff['detail']!==undefined)_0x491fa3['detail']=_0xfcfff['detail'];throw _0x491fa3;}return await _0x33e41b['json']();},async 'checkSkillUpdates'(_0x28699e){const _0xf3e12c=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x28699e)+'/check-updates',{'method':'POST'});if(!_0xf3e12c['ok']){const _0x3d2f93=await _0xf3e12c['json']()['catch'](()=>({'error':_0xf3e12c['statusText']})),_0x461c1e=new Error(_0x3d2f93['error']||_0x3d2f93['message']||_0xf3e12c['statusText']);if(_0x3d2f93['detail']!==undefined)_0x461c1e['detail']=_0x3d2f93['detail'];throw _0x461c1e;}return await _0xf3e12c['json']();},async 'updateExternalSkill'(_0x1866b8){const _0x3aee85=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1866b8)+'/update',{'method':'POST'});if(!_0x3aee85['ok']){const _0x53fb41=await _0x3aee85['json']()['catch'](()=>({'error':_0x3aee85['statusText']})),_0x4a3bfc=new Error(_0x53fb41['error']||_0x53fb41['message']||_0x3aee85['statusText']);if(_0x53fb41['detail']!==undefined)_0x4a3bfc['detail']=_0x53fb41['detail'];throw _0x4a3bfc;}return await _0x3aee85['json']();},async 'updateSkillFlags'(_0x27c7ef,_0x1f8ed0){const _0x55de9b=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x27c7ef)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x1f8ed0})});if(!_0x55de9b['ok']){const _0x3d6b25=await _0x55de9b['json']()['catch'](()=>({'error':_0x55de9b['statusText']})),_0x125e84=new Error(_0x3d6b25['error']||_0x3d6b25['message']||_0x55de9b['statusText']);if(_0x3d6b25['detail']!==undefined)_0x125e84['detail']=_0x3d6b25['detail'];throw _0x125e84;}return await _0x55de9b['json']();},async 'removeFromImportedRegistry'(_0x1c8b82){const _0x581684=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x1c8b82)+'/registry',{'method':'DELETE'});if(!_0x581684['ok']){const _0x57561f=await _0x581684['json']()['catch'](()=>({'error':_0x581684['statusText']})),_0x2b6445=new Error(_0x57561f['error']||_0x57561f['message']||_0x581684['statusText']);if(_0x57561f['detail']!==undefined)_0x2b6445['detail']=_0x57561f['detail'];throw _0x2b6445;}return await _0x581684['json']();},async 'getTeams'(){const _0x1cf9e8=await fetch(API_BASE+'/teams');if(!_0x1cf9e8['ok']){const _0x49e3a0=await _0x1cf9e8['json']()['catch'](()=>({'message':_0x1cf9e8['statusText']}));throw new Error(_0x49e3a0['message']||'Failed\x20to\x20get\x20teams');}return await _0x1cf9e8['json']();},async 'getTeam'(_0x4497f2){const _0x29a446=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4497f2));if(!_0x29a446['ok']){const _0x3cf20f=await _0x29a446['json']()['catch'](()=>({'message':_0x29a446['statusText']}));throw new Error(_0x3cf20f['message']||'Failed\x20to\x20get\x20team');}return await _0x29a446['json']();},async 'createTeam'(_0x163db6){const _0x33bc89=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x163db6)});if(!_0x33bc89['ok']){const _0x56190c=await _0x33bc89['json']()['catch'](()=>({'message':_0x33bc89['statusText']}));throw new Error(_0x56190c['message']||'Failed\x20to\x20create\x20team');}return await _0x33bc89['json']();},async 'updateTeam'(_0x114aae,_0x478247){const _0x4fcd3e=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x114aae),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x478247)});if(!_0x4fcd3e['ok']){const _0x3d2090=await _0x4fcd3e['json']()['catch'](()=>({'message':_0x4fcd3e['statusText']}));throw new Error(_0x3d2090['message']||'Failed\x20to\x20update\x20team');}return await _0x4fcd3e['json']();},async 'deleteTeam'(_0x11be3d){const _0x337a38=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11be3d),{'method':'DELETE'});if(!_0x337a38['ok']){const _0x5af727=await _0x337a38['json']()['catch'](()=>({'message':_0x337a38['statusText']}));throw new Error(_0x5af727['message']||'Failed\x20to\x20delete\x20team');}return await _0x337a38['json']();},async 'addTeamMember'(_0x11d1a4,_0x5a956e){const _0x2e7e2f=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x11d1a4)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5a956e})});if(!_0x2e7e2f['ok']){const _0x3da20e=await _0x2e7e2f['json']()['catch'](()=>({'message':_0x2e7e2f['statusText']}));throw new Error(_0x3da20e['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x2e7e2f['json']();},async 'removeTeamMember'(_0x25623e,_0x12914a){const _0x44b377=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x25623e)+'/members/'+encodeURIComponent(_0x12914a),{'method':'DELETE'});if(!_0x44b377['ok']){const _0xe8ddb8=await _0x44b377['json']()['catch'](()=>({'message':_0x44b377['statusText']}));throw new Error(_0xe8ddb8['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x44b377['json']();},async 'getBindings'(_0x52ec33={}){const _0x370d36=new URLSearchParams();if(_0x52ec33['resource_type'])_0x370d36['set']('resource_type',_0x52ec33['resource_type']);if(_0x52ec33['resource_id'])_0x370d36['set']('resource_id',_0x52ec33['resource_id']);if(_0x52ec33['subject_type'])_0x370d36['set']('subject_type',_0x52ec33['subject_type']);if(_0x52ec33['subject_id'])_0x370d36['set']('subject_id',_0x52ec33['subject_id']);const _0x1d513d=_0x370d36['toString'](),_0x3c59fd=await fetch(API_BASE+'/bindings'+(_0x1d513d?'?'+_0x1d513d:''));if(!_0x3c59fd['ok']){const _0x2a391f=await _0x3c59fd['json']()['catch'](()=>({'message':_0x3c59fd['statusText']}));throw new Error(_0x2a391f['message']||'Failed\x20to\x20get\x20bindings');}return await _0x3c59fd['json']();},async 'createBinding'(_0x36b182){const _0x49f9e2=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x36b182)});if(!_0x49f9e2['ok']){const _0x3fdffb=await _0x49f9e2['json']()['catch'](()=>({'message':_0x49f9e2['statusText']}));throw new Error(_0x3fdffb['message']||'Failed\x20to\x20create\x20binding');}return await _0x49f9e2['json']();},async 'updateBinding'(_0x9a2f71,_0x1b6882){const _0x445990=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x9a2f71),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b6882)});if(!_0x445990['ok']){const _0x2c0c31=await _0x445990['json']()['catch'](()=>({'message':_0x445990['statusText']}));throw new Error(_0x2c0c31['message']||'Failed\x20to\x20update\x20binding');}return await _0x445990['json']();},async 'deleteBinding'(_0x4adc81){const _0x46b800=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x4adc81),{'method':'DELETE'});if(!_0x46b800['ok']){const _0x596200=await _0x46b800['json']()['catch'](()=>({'message':_0x46b800['statusText']}));throw new Error(_0x596200['message']||'Failed\x20to\x20delete\x20binding');}return await _0x46b800['json']();},async 'getRoleDefinitions'(){const _0x420bdf=await fetch(API_BASE+'/roles');if(!_0x420bdf['ok']){const _0xed8c9f=await _0x420bdf['json']()['catch'](()=>({'message':_0x420bdf['statusText']}));throw new Error(_0xed8c9f['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x420bdf['json']();},async 'getRoleDefinition'(_0x35d35b){const _0x505665=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x35d35b));if(!_0x505665['ok']){const _0xb6e032=await _0x505665['json']()['catch'](()=>({'message':_0x505665['statusText']}));throw new Error(_0xb6e032['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x505665['json']();},async 'createRoleDefinition'(_0x177f43){const _0x1b4da9=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x177f43)});if(!_0x1b4da9['ok']){const _0x29d9a2=await _0x1b4da9['json']()['catch'](()=>({'message':_0x1b4da9['statusText']}));throw new Error(_0x29d9a2['message']||_0x29d9a2['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x1b4da9['json']();},async 'updateRoleDefinition'(_0xf04102,_0xc0d15f){const _0x4c0815=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0xf04102),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xc0d15f)});if(!_0x4c0815['ok']){const _0x53f9ba=await _0x4c0815['json']()['catch'](()=>({'message':_0x4c0815['statusText']}));throw new Error(_0x53f9ba['message']||_0x53f9ba['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x4c0815['json']();},async 'deleteRoleDefinition'(_0x10d314){const _0x267069=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x10d314),{'method':'DELETE'});if(!_0x267069['ok']){const _0x3ef317=await _0x267069['json']()['catch'](()=>({'message':_0x267069['statusText']}));throw new Error(_0x3ef317['message']||_0x3ef317['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x267069['json']();},async 'getAvailablePermissions'(){const _0x339c7c=await fetch(API_BASE+'/roles/available-permissions');if(!_0x339c7c['ok']){const _0x1c2bfb=await _0x339c7c['json']()['catch'](()=>({'message':_0x339c7c['statusText']}));throw new Error(_0x1c2bfb['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x339c7c['json']();},async 'getGitProviderAllowedTeams'(_0x192f8d){const _0x422ec5=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x192f8d)+'/allowed-teams');if(!_0x422ec5['ok']){const _0x40785b=await _0x422ec5['json']()['catch'](()=>({'message':_0x422ec5['statusText']}));throw new Error(_0x40785b['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x422ec5['json']();},async 'setGitProviderAllowedTeams'(_0xa2c8c9,_0x97ccba){const _0x541e52=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xa2c8c9)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x97ccba})});if(!_0x541e52['ok']){const _0x83cdf6=await _0x541e52['json']()['catch'](()=>({'message':_0x541e52['statusText']}));throw new Error(_0x83cdf6['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x541e52['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 _0x533c1e=toastState['baseBottom'];toastState['toasts']['forEach'](_0x5c04c6=>{_0x5c04c6['el']['style']['bottom']=_0x533c1e+'px';const _0x44c449=_0x5c04c6['el']['offsetHeight']||toastState['defaultHeight'];_0x533c1e+=_0x44c449+toastState['gap'];});});}function removeToastById(_0x4c0e30){const _0x41b28f=toastState['toasts']['findIndex'](_0x504114=>_0x504114['id']===_0x4c0e30);if(_0x41b28f===-0x1)return;const _0x49cc8c=toastState['toasts'][_0x41b28f];if(_0x49cc8c['timeoutId'])clearTimeout(_0x49cc8c['timeoutId']);_0x49cc8c['el']['classList']['remove']('show'),setTimeout(()=>_0x49cc8c['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x41b28f,0x1),repositionAllToasts();}function registerToast(_0x5e1ba7){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x5e1ba7),repositionAllToasts(),_0x5e1ba7['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(_0x25336e){if(_0x25336e===null||_0x25336e===undefined)return'';return String(_0x25336e)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x250e08,_0x175ae7){if(_0x250e08&&typeof _0x250e08==='object'&&!Array['isArray'](_0x250e08))return{'code':typeof _0x250e08['text']==='string'?_0x250e08['text']:'','language':typeof _0x250e08['lang']==='string'?_0x250e08['lang']:''};return{'code':typeof _0x250e08==='string'?_0x250e08:'','language':typeof _0x175ae7==='string'?_0x175ae7:''};}function buildMermaidBlock(_0x548e0f){const _0x329e0a=String(_0x548e0f||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x329e0a))+'\x22>'+escapeHtmlValue(_0x329e0a)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x269521=new marked['Renderer'](),_0x8701b8=_0x269521['code']['bind'](_0x269521);return _0x269521['code']=function(_0x3b4294,_0x20da73,..._0x3a4941){const {code:_0x59a1bc,language:_0x5af143}=getMarkdownCodeBlockPayload(_0x3b4294,_0x20da73),_0x256217=String(_0x5af143||'')['trim']()['toLowerCase']();if(_0x256217==='mermaid')return buildMermaidBlock(_0x59a1bc);const _0x97a5b5=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x97a5b5&&_0x256217)try{const _0x128b25=_0x97a5b5['getLanguage'](_0x256217)?_0x256217:'plaintext',_0x1cafcf=_0x97a5b5['highlight'](_0x59a1bc,{'language':_0x128b25})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x256217)+'\x22>'+_0x1cafcf+'</code></pre>';}catch(_0x4a29dc){console['error']('Syntax\x20highlighting\x20error:',_0x4a29dc);}return _0x8701b8(_0x3b4294,_0x20da73,..._0x3a4941);},sharedMarkedRenderer=_0x269521,_0x269521;}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 _0x4c4a76=window['mermaid'];if(!_0x4c4a76||typeof _0x4c4a76['initialize']!=='function')return _0x4c4a76||null;return _0x4c4a76['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4c4a76;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4b0cab,_0x168040)=>{const _0x230cea=()=>_0x4b0cab(configureMermaidInstance()),_0x23370c=()=>{mermaidLoadPromise=null,_0x168040(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x33e2e3=document['getElementById'](MERMAID_SCRIPT_ID);!_0x33e2e3&&(_0x33e2e3=document['createElement']('script'),_0x33e2e3['id']=MERMAID_SCRIPT_ID,_0x33e2e3['src']=MERMAID_SCRIPT_SRC,_0x33e2e3['async']=!![],document['head']['appendChild'](_0x33e2e3));if(window['mermaid']){_0x230cea();return;}_0x33e2e3['addEventListener']('load',_0x230cea,{'once':!![]}),_0x33e2e3['addEventListener']('error',_0x23370c,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x4bffee){const _0x5bd946=_0x4bffee['getAttribute']('data-mermaid-source');if(!_0x5bd946)return null;let _0x149f4f=_0x5bd946;try{_0x149f4f=decodeURIComponent(_0x5bd946);}catch{}return _0x4bffee['textContent']=_0x149f4f,_0x4bffee['removeAttribute']('data-processed'),_0x4bffee['removeAttribute']('aria-roledescription'),_0x4bffee['removeAttribute']('role'),_0x4bffee['removeAttribute']('aria-label'),_0x149f4f;}function collectMermaidNodes(_0x4f4a38,_0x42b275){if(!(_0x4f4a38 instanceof Element))return;_0x4f4a38['matches']('.mermaid[data-mermaid-source]')&&_0x42b275['add'](_0x4f4a38),_0x4f4a38['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3a163d=>{_0x42b275['add'](_0x3a163d);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x385728=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0xdebb6c=>setTimeout(_0xdebb6c,0x0);_0x385728(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x780ea4=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x780ea4);});});}function queueMermaidRender(_0x28123f){const _0x20bb7b=new Set();_0x28123f instanceof Document||_0x28123f instanceof DocumentFragment?_0x28123f['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x36c9fd=>_0x20bb7b['add'](_0x36c9fd)):collectMermaidNodes(_0x28123f,_0x20bb7b);if(_0x20bb7b['size']===0x0)return;_0x20bb7b['forEach'](_0x15b0f5=>pendingMermaidNodes['add'](_0x15b0f5)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x39a496=Array['from'](pendingMermaidNodes)['filter'](_0x322b03=>_0x322b03['isConnected']);pendingMermaidNodes['clear']();if(_0x39a496['length']===0x0)return;const _0xf896da=await loadMermaid();if(!_0xf896da)return;configureMermaidInstance();const _0x533877=getMermaidTheme();for(const _0x40bafd of _0x39a496){const _0x404f9b=_0x40bafd['getAttribute']('data-mermaid-source');if(!_0x404f9b)continue;const _0x8d2ffc=_0x40bafd['getAttribute']('data-processed')==='true';if(_0x8d2ffc&&_0x40bafd['dataset']['mermaidTheme']===_0x533877)continue;restoreMermaidSource(_0x40bafd);try{if(typeof _0xf896da['run']==='function')await _0xf896da['run']({'nodes':[_0x40bafd]});else typeof _0xf896da['init']==='function'&&_0xf896da['init'](undefined,[_0x40bafd]);_0x40bafd['dataset']['mermaidTheme']=_0x533877,delete _0x40bafd['dataset']['mermaidError'];}catch(_0x149775){console['error']('Mermaid\x20render\x20failed:',_0x149775),restoreMermaidSource(_0x40bafd),_0x40bafd['dataset']['mermaidError']='true',delete _0x40bafd['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x8ba1e6=>{_0x8ba1e6['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x8ba1e6);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x2bbf36=>{_0x2bbf36['forEach'](_0x1b29eb=>{_0x1b29eb['addedNodes']['forEach'](_0x1511e1=>{_0x1511e1['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x1511e1);});});}),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'(_0x35ce36){const _0x3494cd=new Date(_0x35ce36),_0x880b71=new Date(),_0x337e29=_0x880b71-_0x3494cd,_0x20adb5=Math['floor'](_0x337e29/0x3e8),_0x345a16=Math['floor'](_0x20adb5/0x3c),_0xbe618=Math['floor'](_0x345a16/0x3c),_0x2d47b9=Math['floor'](_0xbe618/0x18);if(_0x20adb5<0x3c)return'now';if(_0x345a16<0x3c)return _0x345a16+'m\x20ago';if(_0xbe618<0x18)return _0xbe618+'h\x20ago';return _0x2d47b9+'d\x20ago';},'getStatusIcon'(_0x4d169c){switch(_0x4d169c){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x1ebda3){switch(_0x1ebda3){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'(_0x2d6d6e,_0x319479=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x27cfbe={};_0x27cfbe['text/plain']=new Blob([_0x2d6d6e],{'type':'text/plain'});_0x319479&&(_0x27cfbe['text/html']=new Blob([_0x319479],{'type':'text/html'}));const _0x1fd635=new ClipboardItem(_0x27cfbe);return await navigator['clipboard']['write']([_0x1fd635]),!![];}catch(_0x5add2c){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x5add2c);}try{const _0x3e26f5=_0x17f5a2=>{_0x17f5a2['preventDefault'](),_0x17f5a2['clipboardData']['setData']('text/plain',_0x2d6d6e),_0x319479&&_0x17f5a2['clipboardData']['setData']('text/html',_0x319479);};document['addEventListener']('copy',_0x3e26f5);const _0x1123d9=document['execCommand']('copy');document['removeEventListener']('copy',_0x3e26f5);if(_0x1123d9)return!![];}catch(_0x1f7dd3){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1f7dd3);}try{const _0x158c48=document['createElement']('textarea');_0x158c48['value']=_0x2d6d6e,_0x158c48['style']['position']='fixed',_0x158c48['style']['opacity']='0',_0x158c48['style']['pointerEvents']='none',document['body']['appendChild'](_0x158c48),_0x158c48['select']();const _0x1e8aa0=document['execCommand']('copy');return document['body']['removeChild'](_0x158c48),_0x1e8aa0;}catch(_0x4b86a6){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4b86a6),![];}},'showToast'(_0x37e333,_0x59e5f3='info'){const _0x1f0d7c=getNextToastId(),_0x48daac=document['createElement']('div');_0x48daac['className']='toast\x20toast-'+_0x59e5f3,_0x48daac['textContent']=_0x37e333,_0x48daac['dataset']['toastId']=_0x1f0d7c,document['body']['appendChild'](_0x48daac);const _0x358122=_0x59e5f3==='error'?0x2710:0xbb8,_0xdc23c7=setTimeout(()=>{removeToastById(_0x1f0d7c);},_0x358122),_0x29726c={'id':_0x1f0d7c,'el':_0x48daac,'timeoutId':_0xdc23c7};return registerToast(_0x29726c),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x48daac['classList']['add']('show');});}),_0x1f0d7c;},'showError'(_0x4b5802){console['error'](_0x4b5802);const _0x263beb=typeof _0x4b5802==='string'?_0x4b5802:_0x4b5802['message']||'An\x20error\x20occurred';this['showToast'](_0x263beb,'error');},'showSuccess'(_0x42a943){this['showToast'](_0x42a943,'success');},'capitalize'(_0x2750cd){if(!_0x2750cd)return'';return _0x2750cd['charAt'](0x0)['toUpperCase']()+_0x2750cd['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x2c8e59){return escapeHtmlValue(_0x2c8e59);},'ansiToHtml'(_0x256997){if(_0x256997===null||_0x256997===undefined)return'';let _0x38ee2b=this['escapeHtml'](_0x256997);const _0x285143={'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'},_0x433649={'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 _0x54c619=0x0;return _0x38ee2b=_0x38ee2b['replace'](/\x1b\[([0-9;]*)m/g,(_0x4e4b5a,_0x3fff24)=>{if(!_0x3fff24||_0x3fff24==='0'){const _0x21f847='</span>'['repeat'](_0x54c619);return _0x54c619=0x0,_0x21f847;}const _0x7fa0ea=_0x3fff24['split'](';'),_0x1636dc=[];for(const _0x143985 of _0x7fa0ea){if(_0x143985==='1')_0x1636dc['push']('font-weight:bold');else{if(_0x143985==='2')_0x1636dc['push']('opacity:0.7');else{if(_0x143985==='3')_0x1636dc['push']('font-style:italic');else{if(_0x143985==='4')_0x1636dc['push']('text-decoration:underline');else{if(_0x143985==='9')_0x1636dc['push']('text-decoration:line-through');else{if(_0x285143[_0x143985])_0x1636dc['push']('color:'+_0x285143[_0x143985]);else{if(_0x433649[_0x143985])_0x1636dc['push']('background-color:'+_0x433649[_0x143985]);}}}}}}}if(_0x1636dc['length']>0x0)return _0x54c619++,'<span\x20style=\x22'+_0x1636dc['join'](';')+'\x22>';return'';}),_0x38ee2b+='</span>'['repeat'](_0x54c619),_0x38ee2b=_0x38ee2b['replace'](/\\u001b\[([0-9;]*)m/g,(_0x5d4ab7,_0x3f25f4)=>{if(!_0x3f25f4||_0x3f25f4==='0')return'';const _0x5311fc=_0x3f25f4['split'](';'),_0xa95260=[];for(const _0x156468 of _0x5311fc){if(_0x156468==='1')_0xa95260['push']('font-weight:bold');else{if(_0x285143[_0x156468])_0xa95260['push']('color:'+_0x285143[_0x156468]);else{if(_0x433649[_0x156468])_0xa95260['push']('background-color:'+_0x433649[_0x156468]);}}}if(_0xa95260['length']>0x0)return'<span\x20style=\x22'+_0xa95260['join'](';')+'\x22>';return'';}),_0x38ee2b;},'showModal'({title:_0x2068e8,content:_0x50dea7,buttons:buttons=[]}){const _0xe46210='\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'](_0x2068e8)+'</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'+_0x50dea7+'\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']((_0x1009f3,_0x41274f)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x1009f3['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x41274f+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x1009f3['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',_0x513d7c=document['createElement']('div');_0x513d7c['id']='utils-modal',_0x513d7c['className']='modal',_0x513d7c['innerHTML']=_0xe46210,document['body']['appendChild'](_0x513d7c);const _0x3934e8=document['getElementById']('utils-modal-close');_0x3934e8&&_0x3934e8['addEventListener']('click',()=>this['hideModal']());const _0x55cfad=_0x513d7c['querySelectorAll']('[data-btn-index]');_0x55cfad['forEach'](_0xfce695=>{const _0x1619d8=parseInt(_0xfce695['dataset']['btnIndex']);buttons[_0x1619d8]?.['onClick']&&_0xfce695['addEventListener']('click',buttons[_0x1619d8]['onClick']);});const _0xb0b3e4=document['getElementById']('utils-modal-overlay');_0xb0b3e4&&_0xb0b3e4['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x273597=document['getElementById']('utils-modal');_0x273597&&_0x273597['remove']();},'parseKeyValuePairs'(_0x35b301){const _0x5e7308={};if(!_0x35b301)return _0x5e7308;return _0x35b301['split'](/\r?\n/)['map'](_0x14e098=>_0x14e098['trim']())['filter'](Boolean)['forEach'](_0x174d3c=>{const _0x5020eb=_0x174d3c['indexOf']('=');if(_0x5020eb>0x0){const _0x51c51b=_0x174d3c['slice'](0x0,_0x5020eb)['trim'](),_0x9fb46b=_0x174d3c['slice'](_0x5020eb+0x1)['trim']();if(_0x51c51b)_0x5e7308[_0x51c51b]=_0x9fb46b;}}),_0x5e7308;},'debounce'(_0x2f0041,_0x5236e8=0xfa){let _0x5a510f=null;return(..._0x430980)=>{clearTimeout(_0x5a510f),_0x5a510f=setTimeout(()=>_0x2f0041['apply'](this,_0x430980),_0x5236e8);};},'formatTimestamp'(_0xdda566){if(!_0xdda566)return'N/A';const _0x558e11=new Date(_0xdda566);return _0x558e11['toLocaleDateString']()+'\x20'+_0x558e11['toLocaleTimeString']();},'getQueryParams'(){const _0x4ee51b=new URLSearchParams(window['location']['search']),_0x2c8530={};for(const [_0x37d339,_0x56ab3a]of _0x4ee51b){_0x2c8530[_0x37d339]=_0x56ab3a;}return _0x2c8530;},'formatDuration'(_0x6627b6,_0x820cd5){if(!_0x6627b6)return'N/A';const _0x2663ad=new Date(_0x6627b6),_0x422abc=_0x820cd5?new Date(_0x820cd5):new Date(),_0x4a9cae=_0x422abc-_0x2663ad;if(_0x4a9cae<0x0)return'0s';const _0x1c819d=Math['floor'](_0x4a9cae/0x3e8),_0x42deb8=Math['floor'](_0x1c819d/0x3c),_0x1a68ba=Math['floor'](_0x42deb8/0x3c),_0x507dd8=Math['floor'](_0x1a68ba/0x18);if(_0x1c819d<0x3c)return _0x1c819d+'s';if(_0x42deb8<0x3c)return _0x42deb8+'m\x20'+_0x1c819d%0x3c+'s';if(_0x1a68ba<0x18)return _0x1a68ba+'h\x20'+_0x42deb8%0x3c+'m\x20'+_0x1c819d%0x3c+'s';return _0x507dd8+'d\x20'+_0x1a68ba%0x18+'h\x20'+_0x42deb8%0x3c+'m';},'renderMarkdown'(_0x5b1c48,_0x5671d5={}){if(!_0x5b1c48)return'';_0x5b1c48=this['rewriteAttachmentLinks'](_0x5b1c48,_0x5671d5),_0x5b1c48=this['rewriteColorSyntax'](_0x5b1c48);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x5b1c48,_0x5671d5);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x5b1c48);}catch(_0x502813){return console['error']('Markdown\x20parsing\x20error:',_0x502813),this['renderMarkdownFallback'](_0x5b1c48,_0x5671d5);}},'rewriteAttachmentLinks'(_0x2be97d,_0x5304ef={}){const _0x19204a=typeof _0x5304ef['resolveAttachmentUrl']==='function'?_0x5304ef['resolveAttachmentUrl']:_0x5304ef['taskId']?_0x5db216=>API_BASE+'/tasks/'+_0x5304ef['taskId']+'/attachments/'+encodeURIComponent(_0x5db216):null;if(!_0x19204a)return _0x2be97d;return String(_0x2be97d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x46c2f6,_0x435bfd)=>{const _0x3d32db=String(_0x435bfd||'')['trim']();if(!_0x3d32db)return _0x46c2f6;let _0x4a6982=_0x3d32db;try{_0x4a6982=decodeURIComponent(_0x3d32db);}catch{}const _0x2d74bd=_0x19204a(_0x4a6982);if(!_0x2d74bd)return _0x46c2f6;return']('+_0x2d74bd+')';});},'rewriteColorSyntax'(_0x4f263f){if(!_0x4f263f)return _0x4f263f;return String(_0x4f263f)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x4a766a,_0x20e033,_0x5700b6)=>{const _0xa0e774=this['rewriteColorSyntax'](_0x5700b6);return'<span\x20style=\x22color:\x20'+_0x20e033+'\x22>'+_0xa0e774+'</span>';});},'renderMarkdownFallback'(_0x48b8c3,_0x3af602={}){if(!_0x48b8c3)return'';_0x48b8c3=_0x48b8c3['replace'](/\r\n/g,'\x0a'),_0x48b8c3=_0x48b8c3['replace'](/\r/g,'\x0a'),_0x48b8c3=this['rewriteAttachmentLinks'](_0x48b8c3,_0x3af602);let _0x4e4f0b=this['escapeHtml'](_0x48b8c3);return _0x4e4f0b=_0x4e4f0b['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x4e4f0b=_0x4e4f0b['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x4e4f0b=_0x4e4f0b['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x4e4f0b=_0x4e4f0b['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x4e4f0b=_0x4e4f0b['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x4e4f0b=_0x4e4f0b['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x4e4f0b=_0x4e4f0b['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x4e4f0b=_0x4e4f0b['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x4e4f0b=_0x4e4f0b['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x4e4f0b=_0x4e4f0b['replace'](/\n\n/g,'</p><p>'),_0x4e4f0b=_0x4e4f0b['replace'](/\n/g,'<br>'),'<p>'+_0x4e4f0b+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x270f9c=new Uint8Array(0x10);crypto['getRandomValues'](_0x270f9c),_0x270f9c[0x6]=_0x270f9c[0x6]&0xf|0x40,_0x270f9c[0x8]=_0x270f9c[0x8]&0x3f|0x80;const _0x2d381b=Array['from'](_0x270f9c,_0x1417e2=>_0x1417e2['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x2d381b['slice'](0x0,0x8)+'-'+_0x2d381b['slice'](0x8,0xc)+'-'+_0x2d381b['slice'](0xc,0x10)+'-'+_0x2d381b['slice'](0x10,0x14)+'-'+_0x2d381b['slice'](0x14);}};export class CustomSelect{constructor(_0x58fe90,_0xd9917f={}){this['nativeSelect']=_0x58fe90,this['options']=_0xd9917f,this['isOpen']=![],this['selectedValue']=_0x58fe90['value']||'',this['searchable']=_0xd9917f['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2056f6=document['createElement']('div');_0x2056f6['className']='custom-select';const _0x483431=document['createElement']('div');_0x483431['className']='custom-select-trigger',_0x483431['setAttribute']('tabindex','0'),_0x483431['setAttribute']('role','button'),_0x483431['setAttribute']('aria-haspopup','listbox');const _0x3e5b8f=document['createElement']('span');_0x3e5b8f['className']='custom-select-trigger-text';const _0x5f1027=document['createElement']('span');_0x5f1027['className']='custom-select-arrow',_0x5f1027['textContent']='▼',_0x483431['appendChild'](_0x3e5b8f),_0x483431['appendChild'](_0x5f1027);const _0x393313=document['createElement']('div');_0x393313['className']='custom-select-dropdown',_0x393313['setAttribute']('role','listbox');if(this['searchable']){const _0x436e14=document['createElement']('div');_0x436e14['className']='custom-select-search';const _0x176ad6=document['createElement']('input');_0x176ad6['type']='text',_0x176ad6['className']='custom-select-search-input',_0x176ad6['placeholder']='Type\x20to\x20search...',_0x176ad6['setAttribute']('aria-label','Search\x20options'),_0x176ad6['addEventListener']('input',_0x22855c=>{this['searchQuery']=_0x22855c['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x176ad6['addEventListener']('keydown',_0x3ea006=>{if(_0x3ea006['key']==='Escape')_0x3ea006['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x3ea006['key']==='Enter'){_0x3ea006['preventDefault'](),_0x3ea006['stopPropagation']();const _0x12a94b=_0x393313['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x12a94b){const _0x25a115=_0x12a94b['getAttribute']('data-value');this['select'](_0x25a115);}}}}),_0x436e14['appendChild'](_0x176ad6),_0x393313['appendChild'](_0x436e14),this['searchInput']=_0x176ad6;}const _0x3db971=document['createElement']('div');_0x3db971['className']='custom-select-options',_0x393313['appendChild'](_0x3db971),_0x2056f6['appendChild'](_0x483431),_0x2056f6['appendChild'](_0x393313),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2056f6,this['nativeSelect']),this['wrapper']=_0x2056f6,this['trigger']=_0x483431,this['triggerText']=_0x3e5b8f,this['dropdown']=_0x393313,this['optionsContainer']=_0x3db971,_0x483431['addEventListener']('click',()=>this['toggle']()),_0x483431['addEventListener']('keydown',_0x3c9d1b=>this['handleKeydown'](_0x3c9d1b)),document['addEventListener']('click',_0x513693=>{!_0x2056f6['contains'](_0x513693['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x4e3ff3=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x4e3ff3['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x37cf2c=new MutationObserver(()=>{this['updateDisabledState']();});_0x37cf2c['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0xf63692=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0xf63692['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x1c4800=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x1c4800),this['trigger']['setAttribute']('aria-disabled',_0x1c4800?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x1c4800?'-1':'0'),_0x1c4800&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x289592=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x10d19a=_0x289592['filter'](_0x439177=>!_0x439177['disabled']&&!_0x439177['hidden']);_0x289592['forEach']((_0x5e40db,_0x35409e)=>{const _0x1f3a3=document['createElement']('div');_0x1f3a3['className']='custom-select-option',_0x1f3a3['textContent']=_0x5e40db['textContent'],_0x1f3a3['setAttribute']('data-value',_0x5e40db['value']),_0x1f3a3['setAttribute']('data-index',_0x35409e),_0x1f3a3['setAttribute']('role','option'),_0x5e40db['disabled']?_0x1f3a3['classList']['add']('disabled'):_0x1f3a3['addEventListener']('click',()=>this['select'](_0x5e40db['value'])),_0x5e40db['value']===this['selectedValue']&&_0x1f3a3['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x1f3a3),this['allOptions']['push']({'element':_0x1f3a3,'text':_0x5e40db['textContent']['toLowerCase'](),'value':_0x5e40db['value'],'disabled':_0x5e40db['disabled']});});if(this['searchable']&&this['searchInput']){const _0x5e6cac=this['searchInput']['parentElement'];_0x10d19a['length']>0x3?_0x5e6cac['style']['display']='':_0x5e6cac['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x2987cb=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x214c91=>{if(!_0x2987cb||_0x214c91['disabled'])_0x214c91['element']['style']['display']='';else{const _0x19d689=_0x214c91['text']['includes'](_0x2987cb);_0x214c91['element']['style']['display']=_0x19d689?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x4bb73a){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x4bb73a,this['nativeSelect']['value']=_0x4bb73a;const _0xafbc75=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0xafbc75),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x401261=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x401261&&(this['triggerText']['textContent']=_0x401261['textContent'],_0x401261['disabled']||_0x401261['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x2daf88=>{_0x2daf88['getAttribute']('data-value')===this['selectedValue']?_0x2daf88['classList']['add']('selected'):_0x2daf88['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 _0x2ed6c9=window['getComputedStyle'](this['dropdown']);if(_0x2ed6c9['position']==='fixed'){const _0x4c796e=this['trigger']['getBoundingClientRect'](),_0x3ec63f=parseInt(_0x2ed6c9['maxHeight'])||0xc8,_0x3da2f0=window['innerHeight'],_0x40bbb6=_0x3da2f0-_0x4c796e['bottom'],_0x5e09d2=_0x4c796e['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x244744;_0x40bbb6<_0x3ec63f&&_0x5e09d2>_0x40bbb6?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x3da2f0-_0x4c796e['top']+'px',_0x244744=Math['min'](_0x3ec63f,_0x5e09d2-0xa),this['dropdown']['style']['maxHeight']=_0x244744+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x4c796e['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x244744=Math['min'](_0x3ec63f,_0x40bbb6-0xa),this['dropdown']['style']['maxHeight']=_0x244744+'px');if(this['optionsContainer']){let _0x854e9b=_0x244744;if(this['searchInput']){const _0x47cf54=this['searchInput']['parentElement'];_0x47cf54&&(_0x854e9b-=_0x47cf54['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x854e9b)+'px';}this['dropdown']['style']['left']=_0x4c796e['left']+'px',this['dropdown']['style']['width']=_0x4c796e['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x509a7e=this['searchInput']['parentElement'];_0x509a7e&&_0x509a7e['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'](_0xb642b0){if(this['nativeSelect']['disabled'])return;if(_0xb642b0['key']==='Enter'||_0xb642b0['key']==='\x20')_0xb642b0['preventDefault'](),this['toggle']();else _0xb642b0['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x2f61bc='\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',_0x2f61bc),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x264006=document['getElementById']('confirm-dialog-close'),_0xd6e089=document['getElementById']('confirm-dialog-cancel'),_0xa09b65=document['getElementById']('confirm-dialog-confirm'),_0x3421ac=this['_modal']['querySelector']('.modal-overlay');_0x264006['addEventListener']('click',()=>this['_resolve'](![])),_0xd6e089['addEventListener']('click',()=>this['_resolve'](![])),_0xa09b65['addEventListener']('click',()=>this['_resolve'](!![])),_0x3421ac['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x5dcc4a=>{if(_0x5dcc4a['key']==='Escape')_0x5dcc4a['preventDefault'](),this['_resolve'](![]);else _0x5dcc4a['key']==='Enter'&&(_0x5dcc4a['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x584000,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0xef43e3=>{this['_resolvePromise']=_0xef43e3,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x584000;const _0x2d7589=document['getElementById']('confirm-dialog-cancel'),_0x23a1b4=document['getElementById']('confirm-dialog-confirm');_0x2d7589['textContent']=cancelText,_0x23a1b4['textContent']=confirmText,_0x23a1b4['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x23a1b4['focus']();});},'_resolve'(_0x525fda){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x525fda),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x519ad1,_0x5e0c76={}){this['container']=_0x519ad1,this['options']={'placeholder':_0x5e0c76['placeholder']||'Type\x20to\x20search...','maxItems':_0x5e0c76['maxItems']||0x64,'loadItems':_0x5e0c76['loadItems']||(async()=>[]),'renderItem':_0x5e0c76['renderItem']||(_0x38e581=>({'primary':String(_0x38e581),'secondary':''})),'onSelect':_0x5e0c76['onSelect']||(()=>{}),'filterItems':_0x5e0c76['filterItems']||null,'getItemValue':_0x5e0c76['getItemValue']||(_0x5d9a95=>_0x5d9a95),'sortItems':_0x5e0c76['sortItems']||null,'debounceMs':_0x5e0c76['debounceMs']||0xc8,'minCharsForSearch':_0x5e0c76['minCharsForSearch']||0x0,'emptyMessage':_0x5e0c76['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5e0c76['loadingMessage']||'Loading...','preload':_0x5e0c76['preload']!==![],'searchMode':_0x5e0c76['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',_0x5b9e22=>this['onBlur'](_0x5b9e22)),this['input']['addEventListener']('input',_0x415690=>this['onInput'](_0x415690)),this['input']['addEventListener']('keydown',_0x8e68a4=>this['onKeydown'](_0x8e68a4)),this['clearBtn']['addEventListener']('mousedown',_0x51b437=>{_0x51b437['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x457345=>{_0x457345['preventDefault']();}),document['addEventListener']('click',_0x23f5dd=>{!this['wrapper']['contains'](_0x23f5dd['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(_0x139f98){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0x139f98);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x456c70){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x35d06b){const _0x3538e9=_0x35d06b['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3538e9);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3538e9):this['loadAndShow'](_0x3538e9);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x40216b){switch(_0x40216b['key']){case'ArrowDown':_0x40216b['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x40216b['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x40216b['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x40216b['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x4ceed4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x2acee2=this['selectedIndex']+_0x4ceed4;if(_0x2acee2>=0x0&&_0x2acee2<this['filteredItems']['length']){this['selectedIndex']=_0x2acee2,this['updateSelectionHighlight']();const _0x559b70=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x559b70[this['selectedIndex']]&&_0x559b70[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x36ba86=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x36ba86['forEach']((_0x2e14ce,_0x485fe8)=>{_0x2e14ce['classList']['toggle']('keyboard-selected',_0x485fe8===this['selectedIndex']);});}async['loadAndShow'](_0x15bff0){this['showLoading']();try{const _0x3fa053=await this['options']['loadItems'](_0x15bff0);if(this['options']['searchMode']==='server'){let _0x23ebbe=_0x3fa053;this['options']['sortItems']&&(_0x23ebbe=this['options']['sortItems']([..._0x3fa053]));this['filteredItems']=_0x23ebbe;const _0x3abc2b=this['filteredItems']['length']>=this['options']['maxItems'];_0x3abc2b&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x3abc2b),this['open']();}else this['allItems']=_0x3fa053,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x15bff0);}catch(_0x3e92ac){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x3e92ac),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x396b2a){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x396b2a):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x2f5440=this['filteredItems']['length']>=this['options']['maxItems'];_0x2f5440&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x2f5440),this['open']();}['renderItems'](_0x1ba49f){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']((_0x3299aa,_0x232675)=>{const _0xebd2d0=document['createElement']('div');_0xebd2d0['className']='autocomplete-select-item',_0xebd2d0['setAttribute']('role','option'),_0xebd2d0['setAttribute']('data-index',_0x232675);const _0x16825c=this['options']['renderItem'](_0x3299aa);let _0xd98fd8='';_0x16825c['icon']&&(_0xd98fd8='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x16825c['iconClass']||'')+'\x22>'+_0x16825c['icon']+'</span>'),_0xebd2d0['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xd98fd8+'\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'](_0x16825c['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x16825c['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x16825c['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0xebd2d0['addEventListener']('click',()=>{this['selectItem'](_0x3299aa);}),_0xebd2d0['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x232675,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0xebd2d0);}),_0x1ba49f?(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'](_0x57d614){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x57d614)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x457154){this['selectedItem']=_0x457154;const _0x48dc25=this['options']['renderItem'](_0x457154);this['input']['value']=_0x48dc25['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x457154);}['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'](_0x306ad8){if(_0x306ad8){this['selectedItem']=_0x306ad8;const _0xa4352f=this['options']['renderItem'](_0x306ad8);this['input']['value']=_0xa4352f['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x2fe559){this['allItems']=_0x2fe559,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'](_0x552f1c){this['input']['placeholder']=_0x552f1c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x5613b1=null){const _0x30f5a8=document['getElementById']('admin-menu-container'),_0x45cbe2=document['getElementById']('admin-menu-btn'),_0x5da77d=document['getElementById']('admin-menu');if(!_0x30f5a8||!_0x45cbe2||!_0x5da77d)return;try{!_0x5613b1&&(_0x5613b1=await API['getCurrentUser']());if(_0x5613b1){const _0xe170ec=window['Permissions'],_0x3fef82=_0xe170ec['hasServerPermission'](_0x5613b1,'*')||_0xe170ec['hasEnvPermission'](_0x5613b1,'environments:manage')||_0xe170ec['hasServerPermission'](_0x5613b1,'users:create')||_0xe170ec['hasTeamPermission'](_0x5613b1,'teams:manage')||_0xe170ec['hasEnvPermission'](_0x5613b1,'environments:view_details');if(!_0x3fef82)return;_0x30f5a8['hidden']=![];if(!_0xe170ec['hasServerPermission'](_0x5613b1,'*')){const _0x197bb5=_0x5da77d['querySelectorAll']('.admin-menu-item');_0x197bb5['forEach'](_0x12b002=>{const _0x19d149=_0x12b002['querySelector']('.option-text')?.['textContent']?.['trim']();_0x19d149==='Users'&&!_0xe170ec['hasServerPermission'](_0x5613b1,'users:create')&&(_0x12b002['hidden']=!![]),_0x19d149==='Skills'&&(_0x12b002['hidden']=!![]),_0x19d149==='Server\x20Settings'&&(_0x12b002['hidden']=!![]),_0x19d149==='Server\x20Health'&&(_0x12b002['hidden']=!![]),_0x19d149==='Git\x20History'&&(_0x12b002['hidden']=!![]),_0x19d149==='Roles'&&(_0x12b002['hidden']=!![]);});}_0x45cbe2['addEventListener']('click',_0x1c10ef=>{_0x1c10ef['stopPropagation']();const _0x5c7da5=document['getElementById']('actions-menu');if(_0x5c7da5)_0x5c7da5['hidden']=!![];_0x5da77d['hidden']=!_0x5da77d['hidden'];}),document['addEventListener']('click',_0x470315=>{!_0x5da77d['hidden']&&!_0x45cbe2['contains'](_0x470315['target'])&&!_0x5da77d['contains'](_0x470315['target'])&&(_0x5da77d['hidden']=!![]);}),document['addEventListener']('keydown',_0x1947fc=>{_0x1947fc['key']==='Escape'&&!_0x5da77d['hidden']&&(_0x5da77d['hidden']=!![]);});const _0x2f1c8d=document['getElementById']('server-health-btn');_0x2f1c8d&&_0x2f1c8d['addEventListener']('click',async()=>{_0x5da77d['hidden']=!![];const {openServerHealthModal:_0x1f9acf}=await import('./server-health.js');_0x1f9acf();});}}catch(_0x5e0af6){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5e0af6['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};