@profoundlogic/coderflow-server 0.6.4 → 0.6.5

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