@profoundlogic/coderflow-server 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/base-image/standard-instructions/ibmi-exploratory-verification.md +2 -0
  2. package/dist/coder-server.js +1 -1
  3. package/dist/config.js +1 -1
  4. package/dist/lib/agent-keepalive.js +1 -1
  5. package/dist/lib/agent-models.js +1 -1
  6. package/dist/lib/api-keys.js +1 -1
  7. package/dist/lib/apiKeys.js +1 -1
  8. package/dist/lib/app-server-ports.js +1 -1
  9. package/dist/lib/auto-judge.js +1 -1
  10. package/dist/lib/automation-service.js +1 -1
  11. package/dist/lib/basic-auth.js +1 -1
  12. package/dist/lib/bindings.js +1 -1
  13. package/dist/lib/build-history.js +1 -1
  14. package/dist/lib/build-output-service.js +1 -1
  15. package/dist/lib/build-scheduler.js +1 -1
  16. package/dist/lib/build-service.js +1 -1
  17. package/dist/lib/ca-certificates.js +1 -1
  18. package/dist/lib/claude-oauth-refresh.js +1 -1
  19. package/dist/lib/cli/build.js +1 -1
  20. package/dist/lib/cli/cleanup-users.js +1 -1
  21. package/dist/lib/cli/config-command.js +1 -1
  22. package/dist/lib/cli/config.js +1 -1
  23. package/dist/lib/cli/create-user.js +1 -1
  24. package/dist/lib/cli/grant-admin.js +1 -1
  25. package/dist/lib/cli/init.js +1 -1
  26. package/dist/lib/cli/jira.js +1 -1
  27. package/dist/lib/cli/license.js +1 -1
  28. package/dist/lib/cli/list-roles.js +1 -1
  29. package/dist/lib/cli/list-users.js +1 -1
  30. package/dist/lib/cli/server-manager.js +1 -1
  31. package/dist/lib/cli/set-password.js +1 -1
  32. package/dist/lib/config-migration.js +1 -1
  33. package/dist/lib/container-credential-sync.js +1 -1
  34. package/dist/lib/container-tokens.js +1 -1
  35. package/dist/lib/data-dir.js +1 -1
  36. package/dist/lib/deployment-history.js +1 -1
  37. package/dist/lib/deployment-service.js +1 -1
  38. package/dist/lib/docker-utils.js +1 -1
  39. package/dist/lib/email.js +1 -1
  40. package/dist/lib/emailTemplates.js +1 -1
  41. package/dist/lib/entitlement.js +1 -1
  42. package/dist/lib/external-connections.js +1 -1
  43. package/dist/lib/fetch-utils.js +1 -1
  44. package/dist/lib/git-commit-details-route.js +1 -1
  45. package/dist/lib/git-history-diff-guardrails.js +1 -1
  46. package/dist/lib/git-provider-service.js +1 -1
  47. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  48. package/dist/lib/git-provider-setup/index.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  50. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  51. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  52. package/dist/lib/git-providers/github-app-provider.js +1 -1
  53. package/dist/lib/git-providers/index.js +1 -1
  54. package/dist/lib/git-providers/provider-factory.js +1 -1
  55. package/dist/lib/git-providers/provider-interface.js +1 -1
  56. package/dist/lib/github-urls.js +1 -1
  57. package/dist/lib/group-objective-linking.js +1 -1
  58. package/dist/lib/ibmi-sync.js +1 -1
  59. package/dist/lib/jira-client.js +1 -1
  60. package/dist/lib/judge-blinding.js +1 -1
  61. package/dist/lib/logger.js +1 -1
  62. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  63. package/dist/lib/model-fetcher.js +1 -1
  64. package/dist/lib/notifications.js +1 -1
  65. package/dist/lib/objective-context.js +1 -1
  66. package/dist/lib/oidc-auth.js +1 -1
  67. package/dist/lib/oidc-device-flow.js +1 -1
  68. package/dist/lib/passwordTokens.js +1 -1
  69. package/dist/lib/permission-resolver.js +1 -1
  70. package/dist/lib/pin-cascade.js +1 -1
  71. package/dist/lib/provider-accounts.js +1 -1
  72. package/dist/lib/provider-oauth.js +1 -1
  73. package/dist/lib/provider-profile.js +1 -1
  74. package/dist/lib/provider-token-refresh.js +1 -1
  75. package/dist/lib/rbac-user-state.js +1 -1
  76. package/dist/lib/request-url.js +1 -1
  77. package/dist/lib/rewind.js +1 -1
  78. package/dist/lib/role-definitions.js +1 -1
  79. package/dist/lib/roles.js +1 -1
  80. package/dist/lib/secrets.js +1 -1
  81. package/dist/lib/setup-repo-git-auth.js +1 -1
  82. package/dist/lib/state-capture.js +1 -1
  83. package/dist/lib/static-files.js +1 -1
  84. package/dist/lib/task-aliases.js +1 -1
  85. package/dist/lib/task-name-format.js +1 -1
  86. package/dist/lib/task-name-generator.js +1 -1
  87. package/dist/lib/task-source-metadata.js +1 -1
  88. package/dist/lib/teams.js +1 -1
  89. package/dist/lib/user-git-oauth.js +1 -1
  90. package/dist/lib/user-git-tokens.js +1 -1
  91. package/dist/lib/users.js +1 -1
  92. package/dist/middleware/requireAuth.js +1 -1
  93. package/dist/middleware/requireInit.js +1 -1
  94. package/dist/middleware/requirePermission.js +1 -1
  95. package/dist/package.json +1 -1
  96. package/dist/playwright.config.js +1 -1
  97. package/dist/playwright.task-terminal.config.js +1 -1
  98. package/dist/routes/apiKeys.js +1 -1
  99. package/dist/routes/auth-oidc.js +1 -1
  100. package/dist/routes/auth.js +1 -1
  101. package/dist/routes/automations.js +1 -1
  102. package/dist/routes/bindings.js +1 -1
  103. package/dist/routes/build.js +1 -1
  104. package/dist/routes/containers.js +1 -1
  105. package/dist/routes/deploy-task.js +1 -1
  106. package/dist/routes/environment-management.js +1 -1
  107. package/dist/routes/environments.js +1 -1
  108. package/dist/routes/external-skills.js +1 -1
  109. package/dist/routes/git-credentials.js +1 -1
  110. package/dist/routes/git-oauth.js +1 -1
  111. package/dist/routes/git-provider-setup.js +1 -1
  112. package/dist/routes/health.js +1 -1
  113. package/dist/routes/jira.js +1 -1
  114. package/dist/routes/objective-management.js +1 -1
  115. package/dist/routes/password.js +1 -1
  116. package/dist/routes/prompt.js +1 -1
  117. package/dist/routes/provider-auth.js +1 -1
  118. package/dist/routes/qa.js +1 -1
  119. package/dist/routes/roles.js +1 -1
  120. package/dist/routes/settings.js +1 -1
  121. package/dist/routes/skill-management.js +1 -1
  122. package/dist/routes/skills.js +1 -1
  123. package/dist/routes/tasks.js +1 -1
  124. package/dist/routes/teams.js +1 -1
  125. package/dist/routes/templates.js +1 -1
  126. package/dist/routes/test-task.js +1 -1
  127. package/dist/routes/test.js +1 -1
  128. package/dist/routes/users.js +1 -1
  129. package/dist/routes/visualizations.js +1 -1
  130. package/dist/scripts/create-user.js +1 -1
  131. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  132. package/dist/start.js +1 -1
  133. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  134. package/dist/web-ui/public/activity-feed.js +1 -1
  135. package/dist/web-ui/public/activity-formatters.js +1 -1
  136. package/dist/web-ui/public/agent-event-parser.js +1 -1
  137. package/dist/web-ui/public/app.js +1 -1
  138. package/dist/web-ui/public/approve-dialog.js +1 -1
  139. package/dist/web-ui/public/automation-links.js +1 -1
  140. package/dist/web-ui/public/automation-schedule.js +1 -1
  141. package/dist/web-ui/public/comments-widget.js +1 -1
  142. package/dist/web-ui/public/diff-utils.js +1 -1
  143. package/dist/web-ui/public/environments.js +1 -1
  144. package/dist/web-ui/public/feedback-widget.js +1 -1
  145. package/dist/web-ui/public/file-selection-tree.js +1 -1
  146. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  147. package/dist/web-ui/public/git-history.js +1 -1
  148. package/dist/web-ui/public/git-status.js +1 -1
  149. package/dist/web-ui/public/ibmi-file-filter.js +1 -1
  150. package/dist/web-ui/public/index.js +1 -1
  151. package/dist/web-ui/public/login.js +1 -1
  152. package/dist/web-ui/public/markdown-editor.js +1 -1
  153. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  154. package/dist/web-ui/public/modal-maximize.js +1 -1
  155. package/dist/web-ui/public/notifications.js +1 -1
  156. package/dist/web-ui/public/permissions.js +1 -1
  157. package/dist/web-ui/public/pr-dialog.js +1 -1
  158. package/dist/web-ui/public/roles.js +1 -1
  159. package/dist/web-ui/public/server-health.js +1 -1
  160. package/dist/web-ui/public/settings.js +1 -1
  161. package/dist/web-ui/public/setup-password.js +1 -1
  162. package/dist/web-ui/public/skills.js +1 -1
  163. package/dist/web-ui/public/sse-client.js +1 -1
  164. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  165. package/dist/web-ui/public/task-judging-helpers.js +1 -1
  166. package/dist/web-ui/public/task.js +1 -1
  167. package/dist/web-ui/public/teams.js +1 -1
  168. package/dist/web-ui/public/terminal.js +1 -1
  169. package/dist/web-ui/public/theme.js +1 -1
  170. package/dist/web-ui/public/users.js +1 -1
  171. package/dist/web-ui/public/variant-grouping.js +1 -1
  172. package/package.json +1 -1
@@ -1 +1 @@
1
- function detectApiBase(){const _0x2ef9b2=window['location']['pathname'],_0x4ce050=_0x2ef9b2['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x4ce050)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x4ce050[0x1]),_0x4ce050[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x46bdcf={}){const _0x5c4c8b=new URLSearchParams();_0x46bdcf['userId']&&_0x5c4c8b['set']('userId',String(_0x46bdcf['userId']));_0x46bdcf['automation']&&_0x5c4c8b['set']('automation',String(_0x46bdcf['automation']));const _0x254a1e=API_BASE+'/tasks/stats'+(_0x5c4c8b['toString']()?'?'+_0x5c4c8b['toString']():''),_0x3179be=await fetch(_0x254a1e);if(!_0x3179be['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x3179be['statusText']);return await _0x3179be['json']();},async 'getTasks'(_0x20bf1f={}){const _0x22618e=new URLSearchParams();_0x20bf1f['status']&&_0x22618e['set']('status',String(_0x20bf1f['status']));_0x20bf1f['environment']&&_0x22618e['set']('environment',String(_0x20bf1f['environment']));_0x20bf1f['automation']&&_0x22618e['set']('automation',String(_0x20bf1f['automation']));if(_0x20bf1f['include']){const _0x5cbdd9=Array['isArray'](_0x20bf1f['include'])?_0x20bf1f['include']['join'](','):String(_0x20bf1f['include']);_0x5cbdd9&&_0x22618e['set']('include',_0x5cbdd9);}_0x20bf1f['filter']&&_0x22618e['set']('filter',String(_0x20bf1f['filter']));_0x20bf1f['page']&&_0x22618e['set']('page',String(_0x20bf1f['page']));_0x20bf1f['limit']&&_0x22618e['set']('limit',String(_0x20bf1f['limit']));_0x20bf1f['userId']&&_0x22618e['set']('userId',String(_0x20bf1f['userId']));_0x20bf1f['search']&&_0x22618e['set']('search',String(_0x20bf1f['search']));_0x20bf1f['includeChildTasks']&&_0x22618e['set']('includeChildTasks','true');const _0x137c02=API_BASE+'/tasks'+(_0x22618e['toString']()?'?'+_0x22618e['toString']():''),_0x26c3b8=await fetch(_0x137c02);if(!_0x26c3b8['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x26c3b8['statusText']);return await _0x26c3b8['json']();},async 'getAutomations'(_0x1bc77c={}){const _0x150a35=new URLSearchParams();_0x1bc77c['environment']&&_0x150a35['set']('environment',String(_0x1bc77c['environment']));const _0x4c9ea2=await fetch(API_BASE+'/api/automations'+(_0x150a35['toString']()?'?'+_0x150a35['toString']():''));if(!_0x4c9ea2['ok']){const _0x15c602=await _0x4c9ea2['json']()['catch'](()=>({}));throw new Error(_0x15c602['message']||_0x15c602['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x4c9ea2['statusText']);}return await _0x4c9ea2['json']();},async 'getAutomation'(_0x4ae6b3){const _0x3f52f7=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x4ae6b3));if(!_0x3f52f7['ok']){const _0x2b8a9a=await _0x3f52f7['json']()['catch'](()=>({}));throw new Error(_0x2b8a9a['message']||_0x2b8a9a['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x3f52f7['statusText']);}return await _0x3f52f7['json']();},async 'createAutomation'(_0x2e7ee9){const _0x56c569=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2e7ee9||{})});if(!_0x56c569['ok']){const _0x48e6d5=await _0x56c569['json']()['catch'](()=>({}));throw new Error(_0x48e6d5['message']||_0x48e6d5['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x56c569['statusText']);}return await _0x56c569['json']();},async 'updateAutomation'(_0x564cb4,_0x25159e){const _0xf7fc92=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x564cb4),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x25159e||{})});if(!_0xf7fc92['ok']){const _0x58de9d=await _0xf7fc92['json']()['catch'](()=>({}));throw new Error(_0x58de9d['message']||_0x58de9d['error']||'Failed\x20to\x20update\x20automation:\x20'+_0xf7fc92['statusText']);}return await _0xf7fc92['json']();},async 'deleteAutomation'(_0x30ccac){const _0x5758b0=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x30ccac),{'method':'DELETE'});if(!_0x5758b0['ok']){const _0x495aaa=await _0x5758b0['json']()['catch'](()=>({}));throw new Error(_0x495aaa['message']||_0x495aaa['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5758b0['statusText']);}return await _0x5758b0['json']();},async 'triggerAutomation'(_0x351a2e){const _0x2a38d8=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x351a2e)+'/trigger',{'method':'POST'});if(!_0x2a38d8['ok']){const _0x38ff17=await _0x2a38d8['json']()['catch'](()=>({}));throw new Error(_0x38ff17['message']||_0x38ff17['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x2a38d8['statusText']);}return await _0x2a38d8['json']();},async 'setAutomationEnabled'(_0xe6b035,_0x690c59){const _0x33d057=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0xe6b035)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x690c59})});if(!_0x33d057['ok']){const _0x1372b9=await _0x33d057['json']()['catch'](()=>({}));throw new Error(_0x1372b9['message']||_0x1372b9['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x33d057['statusText']);}return await _0x33d057['json']();},async 'getAutomationHistory'(_0x31bb2a,_0x300441=0x32){const _0x8fc551=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x31bb2a)+'/history?limit='+encodeURIComponent(String(_0x300441)));if(!_0x8fc551['ok']){const _0x2f233d=await _0x8fc551['json']()['catch'](()=>({}));throw new Error(_0x2f233d['message']||_0x2f233d['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x8fc551['statusText']);}return await _0x8fc551['json']();},async 'getTask'(_0x1b2310,_0x5b2e0f={}){const _0x2deda8=new URLSearchParams();if(_0x5b2e0f['include']){const _0x1d5b9f=Array['isArray'](_0x5b2e0f['include'])?_0x5b2e0f['include']['join'](','):String(_0x5b2e0f['include']);if(_0x1d5b9f)_0x2deda8['set']('include',_0x1d5b9f);}const _0x4f8e32=await fetch(API_BASE+'/tasks/'+_0x1b2310+(_0x2deda8['toString']()?'?'+_0x2deda8['toString']():''));if(!_0x4f8e32['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0x4f8e32['statusText']);return await _0x4f8e32['json']();},async 'getTaskResults'(_0x1d836b){const _0x18c7bb=await fetch(API_BASE+'/tasks/'+_0x1d836b+'/results');if(!_0x18c7bb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x18c7bb['statusText']);return await _0x18c7bb['json']();},async 'getTaskPatches'(_0x21b1cd){const _0x2df16f=await fetch(API_BASE+'/tasks/'+_0x21b1cd+'/patches');if(!_0x2df16f['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0x2df16f['statusText']);return await _0x2df16f['json']();},async 'getTaskAttachments'(_0x48cfab){const _0x424d49=await fetch(API_BASE+'/tasks/'+_0x48cfab+'/attachments');if(!_0x424d49['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x424d49['statusText']);return await _0x424d49['json']();},async 'uploadAttachments'(_0x3afbbf,_0x4118e1){const _0x36daf3=new FormData();for(const _0x6ca029 of _0x4118e1){_0x36daf3['append']('attachments',_0x6ca029);}const _0x997fea=await fetch(API_BASE+'/tasks/'+_0x3afbbf+'/attachments',{'method':'POST','body':_0x36daf3});if(!_0x997fea['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x997fea['statusText']);return await _0x997fea['json']();},async 'isAINameGenerationAvailable'(){try{const _0x1eb182=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x1eb182['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x1eb182['json']();}catch(_0x5239a8){return{'available':![],'reason':_0x5239a8['message']};}},async 'generateTaskName'(_0x129a23){try{const _0x495b5d=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x129a23})});return await _0x495b5d['json']();}catch(_0x51abd6){return{'success':![],'error':_0x51abd6['message']};}},async 'createTask'(_0x26ea82){let _0x2415b5,_0x5c6f96={};if(_0x26ea82['files']&&_0x26ea82['files']['length']>0x0){const _0x1711fd=new FormData();for(const [_0x1f08fc,_0x602d1a]of Object['entries'](_0x26ea82)){if(_0x1f08fc!=='files'){if(_0x602d1a==null)continue;typeof _0x602d1a==='object'?_0x1711fd['append'](_0x1f08fc,JSON['stringify'](_0x602d1a)):_0x1711fd['append'](_0x1f08fc,String(_0x602d1a));}}for(const _0x25b31b of _0x26ea82['files']){_0x1711fd['append']('attachments',_0x25b31b);}_0x2415b5=_0x1711fd;}else _0x5c6f96['Content-Type']='application/json',_0x2415b5=JSON['stringify'](_0x26ea82);const _0x33a0ee=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x5c6f96,'body':_0x2415b5});if(!_0x33a0ee['ok']){const _0x147e41=await _0x33a0ee['json'](),_0x5d8e53=new Error(_0x147e41['error']||'Failed\x20to\x20create\x20task:\x20'+_0x33a0ee['statusText']),{message:_0x412fcf,..._0x987a0e}=_0x147e41;Object['assign'](_0x5d8e53,_0x987a0e);throw _0x5d8e53;}return await _0x33a0ee['json']();},async 'createTestTask'(_0x4dd912){const _0x496fc1=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4dd912)});if(!_0x496fc1['ok']){const _0x9f5e88=await _0x496fc1['json']();throw new Error(_0x9f5e88['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x496fc1['statusText']);}return await _0x496fc1['json']();},async 'createEphemeralTest'(_0x52992d){const _0x35229c=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x52992d)});if(!_0x35229c['ok']){const _0x366796=await _0x35229c['json']();throw new Error(_0x366796['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x35229c['statusText']);}return await _0x35229c['json']();},async 'createDeployTask'(_0xf60dcb){const _0x3f89d9=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xf60dcb)});if(!_0x3f89d9['ok']){const _0x300f95=await _0x3f89d9['json']();throw new Error(_0x300f95['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x3f89d9['statusText']);}return await _0x3f89d9['json']();},async 'getEnvironments'(){const _0xd0fe3f=await fetch(API_BASE+'/environments');if(!_0xd0fe3f['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0xd0fe3f['statusText']);return await _0xd0fe3f['json']();},async 'getEnvironment'(_0x239c3a){const _0x41a29f=await fetch(API_BASE+'/environments/'+_0x239c3a);if(!_0x41a29f['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x41a29f['statusText']);return await _0x41a29f['json']();},async 'getEnvironmentRepoHistory'(_0x572590,_0x155342,_0x2683f0={}){if(!_0x572590||!_0x155342)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x30f955=new URLSearchParams();if(_0x2683f0['limit'])_0x30f955['set']('limit',String(_0x2683f0['limit']));if(_0x2683f0['offset'])_0x30f955['set']('offset',String(_0x2683f0['offset']));if(_0x2683f0['search'])_0x30f955['set']('search',String(_0x2683f0['search']));if(_0x2683f0['branch'])_0x30f955['set']('branch',String(_0x2683f0['branch']));const _0xeb6c43=API_BASE+'/environments/'+encodeURIComponent(_0x572590)+'/repos/'+encodeURIComponent(_0x155342)+'/git/history',_0x33cb43=await fetch(''+_0xeb6c43+(_0x30f955['toString']()?'?'+_0x30f955['toString']():''));if(!_0x33cb43['ok']){const _0x1a161d=await _0x33cb43['json']()['catch'](()=>({}));throw new Error(_0x1a161d['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x33cb43['statusText']);}return await _0x33cb43['json']();},async 'getEnvironmentRepoCommit'(_0x48fd41,_0x5ddefa,_0x17c7fc){if(!_0x48fd41||!_0x5ddefa||!_0x17c7fc)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x22c594=API_BASE+'/environments/'+encodeURIComponent(_0x48fd41)+'/repos/'+encodeURIComponent(_0x5ddefa)+'/git/commits/'+encodeURIComponent(_0x17c7fc),_0x5ddfae=await fetch(_0x22c594);if(!_0x5ddfae['ok']){const _0x276417=await _0x5ddfae['json']()['catch'](()=>({}));throw new Error(_0x276417['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5ddfae['statusText']);}return await _0x5ddfae['json']();},async 'getEnvironmentRepoBranches'(_0x3af94f,_0x4c0c10){if(!_0x3af94f||!_0x4c0c10)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x104641=API_BASE+'/environments/'+encodeURIComponent(_0x3af94f)+'/repos/'+encodeURIComponent(_0x4c0c10)+'/git/branches',_0x106e14=await fetch(_0x104641);if(!_0x106e14['ok']){const _0x1acc7e=await _0x106e14['json']()['catch'](()=>({}));throw new Error(_0x1acc7e['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x106e14['statusText']);}return await _0x106e14['json']();},async 'revertEnvironmentRepoCommit'(_0x23ac6e,_0x2a752c,_0x2999f6,_0x284b75={}){if(!_0x23ac6e||!_0x2a752c||!_0x2999f6)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x4f6543=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x23ac6e)+'/repos/'+encodeURIComponent(_0x2a752c)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x2999f6,..._0x284b75})});if(!_0x4f6543['ok']){const _0x1a0043=await _0x4f6543['json']()['catch'](()=>({}));throw new Error(_0x1a0043['message']||_0x1a0043['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x4f6543['statusText']);}return await _0x4f6543['json']();},async 'getTemplates'(_0x5bd1dd={}){const _0x3af1e0=new URLSearchParams();if(_0x5bd1dd['include']){const _0x4a4ed9=Array['isArray'](_0x5bd1dd['include'])?_0x5bd1dd['include']['join'](','):String(_0x5bd1dd['include']);if(_0x4a4ed9)_0x3af1e0['set']('include',_0x4a4ed9);}const _0x296c5d=await fetch(API_BASE+'/templates'+(_0x3af1e0['toString']()?'?'+_0x3af1e0['toString']():''));if(!_0x296c5d['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x296c5d['statusText']);return await _0x296c5d['json']();},async 'getTemplatesForEnvironment'(_0x45d78d,_0x3f3170={}){if(!_0x45d78d)throw new Error('Environment\x20name\x20is\x20required');const _0x3b923e=new URLSearchParams();if(_0x3f3170['include']){const _0x18bfa1=Array['isArray'](_0x3f3170['include'])?_0x3f3170['include']['join'](','):String(_0x3f3170['include']);if(_0x18bfa1)_0x3b923e['set']('include',_0x18bfa1);}const _0x22d542=await fetch(API_BASE+'/templates/'+_0x45d78d+(_0x3b923e['toString']()?'?'+_0x3b923e['toString']():''));if(!_0x22d542['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x45d78d+':\x20'+_0x22d542['statusText']);return await _0x22d542['json']();},async 'getTemplate'(_0x27876e,_0x4374e5,_0xc82f9={}){if(!_0x27876e||!_0x4374e5)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x1b462a=new URLSearchParams();if(_0xc82f9['include']){const _0x522470=Array['isArray'](_0xc82f9['include'])?_0xc82f9['include']['join'](','):String(_0xc82f9['include']);if(_0x522470)_0x1b462a['set']('include',_0x522470);}const _0x19a08f=await fetch(API_BASE+'/templates/'+_0x27876e+'/'+_0x4374e5+(_0x1b462a['toString']()?'?'+_0x1b462a['toString']():''));if(!_0x19a08f['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x19a08f['statusText']);return await _0x19a08f['json']();},async 'getTaskLogs'(_0x57c129,_0x2dc770={}){if(!_0x57c129)throw new Error('Task\x20ID\x20is\x20required');const _0x2d6bbb=new URLSearchParams();_0x2dc770['tail']&&_0x2d6bbb['set']('tail',String(_0x2dc770['tail']));const _0x2a1258=await fetch(API_BASE+'/tasks/'+_0x57c129+'/logs'+(_0x2d6bbb['toString']()?'?'+_0x2d6bbb['toString']():''));if(!_0x2a1258['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x2a1258['statusText']);return await _0x2a1258['text']();},async 'getContainers'(){const _0x2ccd42=await fetch(API_BASE+'/containers');if(!_0x2ccd42['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x2ccd42['statusText']);return await _0x2ccd42['json']();},async 'getContainer'(_0x2f2754){const _0x1053f0=await fetch(API_BASE+'/containers/'+_0x2f2754);if(!_0x1053f0['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x1053f0['statusText']);return await _0x1053f0['json']();},async 'startInteractiveContainer'(_0x39f7bc){const _0x56d396=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x39f7bc)});if(!_0x56d396['ok']){const _0x2ad9b5=await _0x56d396['json']()['catch'](()=>({}));throw new Error(_0x2ad9b5['message']||'Failed\x20to\x20start\x20container:\x20'+_0x56d396['statusText']);}return await _0x56d396['json']();},async 'stopContainer'(_0x12bb3a){const _0x2582ff=await fetch(API_BASE+'/containers/'+_0x12bb3a,{'method':'DELETE'});if(!_0x2582ff['ok']){const _0x500ea0=await _0x2582ff['json']()['catch'](()=>({}));throw new Error(_0x500ea0['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x2582ff['statusText']);}return await _0x2582ff['json']();},async 'stopTask'(_0x1fea49){if(!_0x1fea49)throw new Error('Task\x20ID\x20is\x20required');const _0x4b905c=await fetch(API_BASE+'/tasks/'+_0x1fea49+'/stop',{'method':'POST'});if(!_0x4b905c['ok']){const _0x23b35b=await _0x4b905c['json']()['catch'](()=>({}));throw new Error(_0x23b35b['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x4b905c['statusText']);}return await _0x4b905c['json']();},async 'interruptTask'(_0xbdc141){if(!_0xbdc141)throw new Error('Task\x20ID\x20is\x20required');const _0x50a040=await fetch(API_BASE+'/tasks/'+_0xbdc141+'/interrupt',{'method':'POST'});if(!_0x50a040['ok']){const _0x52db41=await _0x50a040['json']()['catch'](()=>({}));throw new Error(_0x52db41['error']||_0x52db41['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x50a040['statusText']);}return await _0x50a040['json']();},async 'startTask'(_0x5e0c2d){if(!_0x5e0c2d)throw new Error('Task\x20ID\x20is\x20required');const _0x43fa7c=await fetch(API_BASE+'/tasks/'+_0x5e0c2d+'/start',{'method':'POST'});if(!_0x43fa7c['ok']){const _0x91b938=await _0x43fa7c['json']()['catch'](()=>({}));throw new Error(_0x91b938['error']||'Failed\x20to\x20start\x20task:\x20'+_0x43fa7c['statusText']);}return await _0x43fa7c['json']();},async 'deleteTask'(_0x4bc60b){if(!_0x4bc60b)throw new Error('Task\x20ID\x20is\x20required');const _0xb78bd9=await fetch(API_BASE+'/tasks/'+_0x4bc60b,{'method':'DELETE'});if(!_0xb78bd9['ok']){const _0x571849=await _0xb78bd9['json']()['catch'](()=>({}));throw new Error(_0x571849['error']||'Failed\x20to\x20delete\x20task:\x20'+_0xb78bd9['statusText']);}return await _0xb78bd9['json']();},async 'refreshTasksFromDisk'(){const _0x242317=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x242317['ok']){const _0x4c3359=await _0x242317['json']()['catch'](()=>({}));throw new Error(_0x4c3359['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x242317['statusText']);}return await _0x242317['json']();},async 'approveTask'(_0x7c435e,_0x16b58e={}){if(!_0x7c435e)throw new Error('Task\x20ID\x20is\x20required');const _0x104ef1={'commit_message':_0x16b58e['commit_message']||'','pull':_0x16b58e['pull']??![],'push':_0x16b58e['push']??![]};_0x16b58e['new_branch']&&(_0x104ef1['new_branch']=_0x16b58e['new_branch']);const _0x3ec977=await fetch(API_BASE+'/tasks/'+_0x7c435e+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x104ef1)});if(!_0x3ec977['ok']){const _0x9215cb=await _0x3ec977['json']()['catch'](()=>({}));let _0xf8c66c=_0x9215cb['error']||_0x9215cb['message']||'Failed\x20to\x20approve\x20task:\x20'+_0x3ec977['statusText'];if(_0x9215cb['results']&&Array['isArray'](_0x9215cb['results'])){const _0x2f2fab=_0x9215cb['results']['filter'](_0x339bfa=>!_0x339bfa['success']&&_0x339bfa['error']);_0x2f2fab['length']>0x0&&(_0xf8c66c=_0x2f2fab[0x0]['error']);}throw new Error(_0xf8c66c);}return await _0x3ec977['json']();},async 'getPullRequestInfo'(_0x109ccb){if(!_0x109ccb)throw new Error('Task\x20ID\x20is\x20required');const _0x422f0a=await fetch(API_BASE+'/tasks/'+_0x109ccb+'/pull-request-info');if(!_0x422f0a['ok']){const _0x20b47f=await _0x422f0a['json']()['catch'](()=>({}));throw new Error(_0x20b47f['error']||_0x20b47f['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x422f0a['statusText']);}return await _0x422f0a['json']();},async 'createPullRequests'(_0x46876,_0x16a1da){if(!_0x46876)throw new Error('Task\x20ID\x20is\x20required');if(!_0x16a1da||!Array['isArray'](_0x16a1da))throw new Error('repos\x20array\x20is\x20required');const _0x480fa7=await fetch(API_BASE+'/tasks/'+_0x46876+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x16a1da})});if(!_0x480fa7['ok']){const _0x4d8bbb=await _0x480fa7['json']()['catch'](()=>({}));let _0x545f05=_0x4d8bbb['error']||_0x4d8bbb['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x480fa7['statusText'];if(_0x4d8bbb['results']&&Array['isArray'](_0x4d8bbb['results'])){const _0x3525ac=_0x4d8bbb['results']['filter'](_0x3ce31e=>!_0x3ce31e['success']&&_0x3ce31e['error']);_0x3525ac['length']>0x0&&(_0x545f05=_0x3525ac[0x0]['error']);}throw new Error(_0x545f05);}return await _0x480fa7['json']();},async 'syncRepos'(_0x52cfe3){if(!_0x52cfe3)throw new Error('Task\x20ID\x20is\x20required');const _0x48621c=await fetch(API_BASE+'/tasks/'+_0x52cfe3+'/sync-repos',{'method':'POST'});if(!_0x48621c['ok']){const _0x1511ef=await _0x48621c['json']()['catch'](()=>({}));throw new Error(_0x1511ef['error']||_0x1511ef['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x48621c['statusText']);}return await _0x48621c['json']();},async 'getIbmiSyncInfo'(_0x145012){if(!_0x145012)throw new Error('Task\x20ID\x20is\x20required');const _0x165200=await fetch(API_BASE+'/tasks/'+_0x145012+'/ibmi-sync-info');if(!_0x165200['ok']){const _0x5ea393=await _0x165200['json']()['catch'](()=>({}));throw new Error(_0x5ea393['error']||_0x5ea393['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x165200['json']();},async 'getSyncFiles'(_0x552085){if(!_0x552085)throw new Error('Task\x20ID\x20is\x20required');const _0x651228=await fetch(API_BASE+'/tasks/'+_0x552085+'/sync-to-ibmi/files');if(!_0x651228['ok']){const _0x36fb7c=await _0x651228['json']()['catch'](()=>({}));throw new Error(_0x36fb7c['error']||_0x36fb7c['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x651228['json']();},async 'syncToIbmi'(_0x475201,_0x5184c6,_0x1eb706=null,_0x21e532=null,_0x54058b=null){if(!_0x475201)throw new Error('Task\x20ID\x20is\x20required');const _0x17479a={'library':_0x5184c6};if(_0x1eb706)_0x17479a['user']=_0x1eb706;if(_0x21e532)_0x17479a['password']=_0x21e532;if(_0x54058b)_0x17479a['files']=_0x54058b;const _0x24891b=await fetch(API_BASE+'/tasks/'+_0x475201+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x17479a)});if(!_0x24891b['ok']){const _0x3f71ed=await _0x24891b['json']()['catch'](()=>({}));throw new Error(_0x3f71ed['error']||_0x3f71ed['message']||'Sync\x20failed');}return await _0x24891b['json']();},async 'getIbmiSyncLog'(_0x2759c9){if(!_0x2759c9)throw new Error('Task\x20ID\x20is\x20required');const _0x36114b=await fetch(API_BASE+'/tasks/'+_0x2759c9+'/ibmi-sync-log');if(!_0x36114b['ok']){const _0x572fcf=await _0x36114b['json']()['catch'](()=>({}));throw new Error(_0x572fcf['error']||_0x572fcf['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x36114b['json']();},async 'pullChanges'(_0x590538){if(!_0x590538)throw new Error('Task\x20ID\x20is\x20required');const _0x5031db=await fetch(API_BASE+'/tasks/'+_0x590538+'/pull-changes',{'method':'POST'});if(!_0x5031db['ok']){const _0x4335f8=await _0x5031db['json']()['catch'](()=>({}));throw new Error(_0x4335f8['error']||_0x4335f8['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5031db['statusText']);}return await _0x5031db['json']();},async 'readFile'(_0x36485a,_0x441fd1){if(!_0x36485a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x441fd1)throw new Error('File\x20path\x20is\x20required');const _0x395d2f=await fetch(API_BASE+'/tasks/'+_0x36485a+'/files?path='+encodeURIComponent(_0x441fd1));if(!_0x395d2f['ok']){const _0x5b6227=await _0x395d2f['json']()['catch'](()=>({}));throw new Error(_0x5b6227['error']||_0x5b6227['message']||'Failed\x20to\x20read\x20file:\x20'+_0x395d2f['statusText']);}return await _0x395d2f['json']();},'getTaskFileDownloadUrl'(_0x43bca6,_0x43faa1){if(!_0x43bca6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x43faa1)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x43bca6+'/files/download?path='+encodeURIComponent(_0x43faa1);},async 'writeFile'(_0x4d0311,_0x35bd2c,_0x499d0a){if(!_0x4d0311)throw new Error('Task\x20ID\x20is\x20required');if(!_0x35bd2c)throw new Error('File\x20path\x20is\x20required');if(_0x499d0a===undefined)throw new Error('Content\x20is\x20required');const _0x3cf895=await fetch(API_BASE+'/tasks/'+_0x4d0311+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x35bd2c,'content':_0x499d0a})});if(!_0x3cf895['ok']){const _0x38de19=await _0x3cf895['json']()['catch'](()=>({}));throw new Error(_0x38de19['error']||_0x38de19['message']||'Failed\x20to\x20write\x20file:\x20'+_0x3cf895['statusText']);}return await _0x3cf895['json']();},async 'uploadTaskFiles'(_0x24bfd0,_0x2c54fc,_0x311638){if(!_0x24bfd0)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2c54fc)throw new Error('Target\x20directory\x20is\x20required');if(!_0x311638||_0x311638['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x31c965=new FormData();_0x31c965['append']('targetDir',_0x2c54fc);for(const _0x287ba2 of _0x311638){_0x31c965['append']('files',_0x287ba2,_0x287ba2['name']);}const _0x1a40c6=await fetch(API_BASE+'/tasks/'+_0x24bfd0+'/files/upload',{'method':'POST','body':_0x31c965});if(!_0x1a40c6['ok']){const _0x53cb4e=await _0x1a40c6['json']()['catch'](()=>({}));throw new Error(_0x53cb4e['error']||_0x53cb4e['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x1a40c6['statusText']);}return await _0x1a40c6['json']();},async 'createDirectory'(_0x154ac7,_0x58643e){if(!_0x154ac7)throw new Error('Task\x20ID\x20is\x20required');if(!_0x58643e)throw new Error('Directory\x20path\x20is\x20required');const _0xed9012=await fetch(API_BASE+'/tasks/'+_0x154ac7+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x58643e})});if(!_0xed9012['ok']){const _0x29d1b9=await _0xed9012['json']()['catch'](()=>({}));throw new Error(_0x29d1b9['error']||_0x29d1b9['message']||'Failed\x20to\x20create\x20directory:\x20'+_0xed9012['statusText']);}return await _0xed9012['json']();},async 'renamePath'(_0x3f61f8,_0x45bd56,_0x4db2e7){if(!_0x3f61f8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x45bd56)throw new Error('Source\x20path\x20is\x20required');if(!_0x4db2e7)throw new Error('Destination\x20path\x20is\x20required');const _0x5f2ec8=await fetch(API_BASE+'/tasks/'+_0x3f61f8+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x45bd56,'newPath':_0x4db2e7})});if(!_0x5f2ec8['ok']){const _0x389211=await _0x5f2ec8['json']()['catch'](()=>({}));throw new Error(_0x389211['error']||_0x389211['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x5f2ec8['statusText']);}return await _0x5f2ec8['json']();},async 'deleteFile'(_0x25f405,_0x5740da){if(!_0x25f405)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5740da)throw new Error('File\x20path\x20is\x20required');const _0x4e16f1=await fetch(API_BASE+'/tasks/'+_0x25f405+'/files?path='+encodeURIComponent(_0x5740da),{'method':'DELETE'});if(!_0x4e16f1['ok']){const _0x495042=await _0x4e16f1['json']()['catch'](()=>({}));throw new Error(_0x495042['error']||_0x495042['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x4e16f1['statusText']);}return await _0x4e16f1['json']();},async 'deleteDirectory'(_0x4b527a,_0x37f378){if(!_0x4b527a)throw new Error('Task\x20ID\x20is\x20required');if(!_0x37f378)throw new Error('Directory\x20path\x20is\x20required');const _0x25f0fb=await fetch(API_BASE+'/tasks/'+_0x4b527a+'/files/directory?path='+encodeURIComponent(_0x37f378),{'method':'DELETE'});if(!_0x25f0fb['ok']){const _0x2682c6=await _0x25f0fb['json']()['catch'](()=>({}));throw new Error(_0x2682c6['error']||_0x2682c6['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x25f0fb['statusText']);}return await _0x25f0fb['json']();},async 'discardFile'(_0x2b68f6,_0x1c125f,_0x3e82c2){if(!_0x2b68f6)throw new Error('Task\x20ID\x20is\x20required');if(!_0x1c125f)throw new Error('File\x20path\x20is\x20required');if(!_0x3e82c2)throw new Error('Repository\x20path\x20is\x20required');const _0xa803a3=await fetch(API_BASE+'/tasks/'+_0x2b68f6+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x1c125f,'repoPath':_0x3e82c2})});if(!_0xa803a3['ok']){const _0x171860=await _0xa803a3['json']()['catch'](()=>({}));throw new Error(_0x171860['error']||_0x171860['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0xa803a3['statusText']);}return await _0xa803a3['json']();},async 'followUpTask'(_0x5243fd,_0x175a41={}){if(!_0x5243fd)throw new Error('Task\x20ID\x20is\x20required');if(!_0x175a41['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x2a3b52,_0x1210b0={};if(_0x175a41['files']&&_0x175a41['files']['length']>0x0){const _0x50b178=new FormData();_0x50b178['append']('instructions',_0x175a41['instructions']);for(const _0x32d64d of _0x175a41['files']){_0x50b178['append']('attachments',_0x32d64d);}_0x2a3b52=_0x50b178;}else _0x1210b0['Content-Type']='application/json',_0x2a3b52=JSON['stringify']({'instructions':_0x175a41['instructions']});const _0x335c96=await fetch(API_BASE+'/tasks/'+_0x5243fd+'/follow-up',{'method':'POST','headers':_0x1210b0,'body':_0x2a3b52});if(!_0x335c96['ok']){const _0x1858f2=await _0x335c96['json']()['catch'](()=>({}));throw new Error(_0x1858f2['error']||_0x1858f2['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x335c96['statusText']);}return await _0x335c96['json']();},async 'getTaskRewindPoints'(_0x586453){if(!_0x586453)throw new Error('Task\x20ID\x20is\x20required');const _0x4517e3=await fetch(API_BASE+'/tasks/'+_0x586453+'/rewind-points');if(!_0x4517e3['ok']){const _0x57c4b9=await _0x4517e3['json']()['catch'](()=>({}));throw new Error(_0x57c4b9['error']||_0x57c4b9['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x4517e3['statusText']);}return await _0x4517e3['json']();},async 'rewindTask'(_0x57fc03,_0x2377c9={}){if(!_0x57fc03)throw new Error('Task\x20ID\x20is\x20required');const _0x2ad26a=Number['isInteger'](_0x2377c9['targetFollowUpCount'])?_0x2377c9['targetFollowUpCount']:0x0,_0x4e3c62={'targetFollowUpCount':_0x2ad26a};typeof _0x2377c9['instructions']==='string'&&_0x2377c9['instructions']['trim']()&&(_0x4e3c62['instructions']=_0x2377c9['instructions']['trim']());typeof _0x2377c9['rewindFiles']==='boolean'&&(_0x4e3c62['rewindFiles']=_0x2377c9['rewindFiles']);const _0x5174c1=await fetch(API_BASE+'/tasks/'+_0x57fc03+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4e3c62)});if(!_0x5174c1['ok']){const _0x222776=await _0x5174c1['json']()['catch'](()=>({}));throw new Error(_0x222776['error']||_0x222776['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x5174c1['statusText']);}return await _0x5174c1['json']();},async 'login'(_0x185b71,_0x5935b6){const _0x376bd1=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x185b71,'password':_0x5935b6})});if(!_0x376bd1['ok']){const _0x4acf12=await _0x376bd1['json']();throw new Error(_0x4acf12['message']||'Login\x20failed');}return await _0x376bd1['json']();},async 'logout'(){const _0x5de931=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x5de931['ok']){const _0x5b4434=await _0x5de931['json']();throw new Error(_0x5b4434['message']||'Logout\x20failed');}return await _0x5de931['json']();},async 'getCurrentUser'(){const _0x59b4a2=await fetch(API_BASE+'/auth/me');if(!_0x59b4a2['ok'])throw new Error('Not\x20authenticated');const _0x3c7741=await _0x59b4a2['json']();return _0x3c7741['user'];},async 'getRolesInfo'(){const _0x256e7d=await fetch(API_BASE+'/users/roles');if(!_0x256e7d['ok']){const _0x4e6bf0=await _0x256e7d['json']();throw new Error(_0x4e6bf0['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x256e7d['json']();},async 'getUsers'(){const _0x349705=await fetch(API_BASE+'/users');if(!_0x349705['ok']){const _0x5c8f3f=await _0x349705['json']();throw new Error(_0x5c8f3f['message']||'Failed\x20to\x20get\x20users');}return await _0x349705['json']();},async 'getUser'(_0x37515e){const _0x5811ef=await fetch(API_BASE+'/users/'+_0x37515e);if(!_0x5811ef['ok']){const _0x237f02=await _0x5811ef['json']();throw new Error(_0x237f02['message']||'Failed\x20to\x20get\x20user');}return await _0x5811ef['json']();},async 'createUser'(_0x3c2dca){const _0x317bdc=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3c2dca)});if(!_0x317bdc['ok']){const _0x15c7ff=await _0x317bdc['json']();throw new Error(_0x15c7ff['message']||'Failed\x20to\x20create\x20user');}return await _0x317bdc['json']();},async 'updateUser'(_0x7120f2,_0x3e877d){const _0x1f667f=await fetch(API_BASE+'/users/'+_0x7120f2,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e877d)});if(!_0x1f667f['ok']){const _0x234e93=await _0x1f667f['json']();throw new Error(_0x234e93['message']||'Failed\x20to\x20update\x20user');}return await _0x1f667f['json']();},async 'deleteUser'(_0x125946){const _0x3f175d=await fetch(API_BASE+'/users/'+_0x125946,{'method':'DELETE'});if(!_0x3f175d['ok']){const _0x430637=await _0x3f175d['json']();throw new Error(_0x430637['message']||'Failed\x20to\x20delete\x20user');}return await _0x3f175d['json']();},async 'stopAllContainers'(){const _0x432161=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x3fc8e3=await _0x432161['json']()['catch'](()=>({}));if(!_0x432161['ok'])throw new Error(_0x3fc8e3['message']||_0x3fc8e3['error']||'Failed\x20to\x20stop\x20containers');return _0x3fc8e3;},async 'removeStoppedContainers'(){const _0x4fd733=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x5433c9=await _0x4fd733['json']()['catch'](()=>({}));if(!_0x4fd733['ok'])throw new Error(_0x5433c9['message']||_0x5433c9['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x5433c9;},async 'pruneDockerResources'(){const _0x217773=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0x16ef9e=await _0x217773['json']()['catch'](()=>({}));if(!_0x217773['ok'])throw new Error(_0x16ef9e['message']||_0x16ef9e['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0x16ef9e;},async 'createPasswordToken'(_0x133be9,_0x381b89='setup',_0x3482c1=![]){const _0x58e867=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x133be9,'type':_0x381b89,'sendEmail':_0x3482c1})});if(!_0x58e867['ok']){const _0x34faf0=await _0x58e867['json']();throw new Error(_0x34faf0['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x58e867['json']();},async 'getEmailConfig'(){const _0x14c337=await fetch(API_BASE+'/password/email-config');if(!_0x14c337['ok']){const _0x4693d3=await _0x14c337['json']();throw new Error(_0x4693d3['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x14c337['json']();},async 'updateTaskName'(_0x403c61,_0x8fddb8){const _0x4177c8=await fetch(API_BASE+'/tasks/'+_0x403c61,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x8fddb8})});if(!_0x4177c8['ok']){const _0x14b96c=await _0x4177c8['json']();throw new Error(_0x14b96c['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x4177c8['json']();},async 'pinTask'(_0x12ee96,_0x5701a9,_0x5251ac=null){if(!_0x12ee96)throw new Error('Task\x20ID\x20is\x20required');const _0x32c579={'pinned':_0x5701a9};_0x5251ac&&_0x5251ac['length']>0x0&&(_0x32c579['additionalTaskIds']=_0x5251ac);const _0xf0bb1b=await fetch(API_BASE+'/tasks/'+_0x12ee96+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x32c579)});if(!_0xf0bb1b['ok']){const _0x12fb1a=await _0xf0bb1b['json']();throw new Error(_0x12fb1a['error']||'Failed\x20to\x20pin\x20task');}return await _0xf0bb1b['json']();},async 'setTaskWinner'(_0x94ff2f,_0x3638bb,_0x44df9f=[]){if(!_0x94ff2f)throw new Error('Task\x20ID\x20is\x20required');const _0x29c568=await fetch(API_BASE+'/tasks/'+_0x94ff2f+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3638bb,'siblings':_0x44df9f})});if(!_0x29c568['ok']){const _0x551eda=await _0x29c568['json']();throw new Error(_0x551eda['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x29c568['json']();},async 'setTaskLoser'(_0x202204,_0x12a345){if(!_0x202204)throw new Error('Task\x20ID\x20is\x20required');const _0x3870fe=await fetch(API_BASE+'/tasks/'+_0x202204+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x12a345})});if(!_0x3870fe['ok']){const _0x210ac8=await _0x3870fe['json']();throw new Error(_0x210ac8['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x3870fe['json']();},async 'createTaskGroup'(_0x2477dd){const _0x4d9c88=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2477dd)});if(!_0x4d9c88['ok']){const _0x21abcd=await _0x4d9c88['json']();throw new Error(_0x21abcd['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x4d9c88['json']();},async 'getTaskGroups'(_0x5dd721={}){const _0x2c8aca=new URLSearchParams();if(_0x5dd721['userId'])_0x2c8aca['set']('userId',String(_0x5dd721['userId']));if(_0x5dd721['status'])_0x2c8aca['set']('status',String(_0x5dd721['status']));if(_0x5dd721['limit'])_0x2c8aca['set']('limit',String(_0x5dd721['limit']));const _0x523c1d=API_BASE+'/tasks/groups'+(_0x2c8aca['toString']()?'?'+_0x2c8aca['toString']():''),_0x103edb=await fetch(_0x523c1d);if(!_0x103edb['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x103edb['json']();},async 'getTaskGroup'(_0x28ba63){const _0x4f0842=await fetch(API_BASE+'/tasks/groups/'+_0x28ba63);if(!_0x4f0842['ok']){const _0x2b637e=await _0x4f0842['json']();throw new Error(_0x2b637e['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x4f0842['json']();},async 'updateTaskGroup'(_0x55f458,_0x58e07e,_0x1272a5){const _0x59d102=await fetch(API_BASE+'/tasks/'+_0x55f458+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x58e07e,'groupIndex':_0x1272a5})});if(!_0x59d102['ok']){const _0x37ff62=await _0x59d102['json']();throw new Error(_0x37ff62['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x59d102['json']();},async 'removeTaskFromGroup'(_0x222487){return this['updateTaskGroup'](_0x222487,null,null);},async 'deleteTaskGroup'(_0x398409,_0x233def=![]){const _0xca69ce=_0x233def?'?deleteTasks=true':'',_0x426100=await fetch(API_BASE+'/tasks/groups/'+_0x398409+_0xca69ce,{'method':'DELETE'});if(!_0x426100['ok']){const _0x10ddde=await _0x426100['json']();throw new Error(_0x10ddde['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x338280,_0x2dcd9d){const _0x195213=await fetch(API_BASE+'/tasks/groups/'+_0x338280+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x2dcd9d})});if(!_0x195213['ok']){const _0x3525cb=await _0x195213['json']();throw new Error(_0x3525cb['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x195213['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x52783f){if(!_0x52783f)throw new Error('Task\x20ID\x20is\x20required');const _0x4978a0=await fetch(API_BASE+'/tasks/'+_0x52783f+'/comments');if(!_0x4978a0['ok']){const _0x11f09a=await _0x4978a0['json']()['catch'](()=>({}));throw new Error(_0x11f09a['error']||'Failed\x20to\x20get\x20comments');}return await _0x4978a0['json']();},async 'addComment'(_0x5a33a8,_0x4df46f){if(!_0x5a33a8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4df46f)throw new Error('Comment\x20content\x20is\x20required');const _0x4ea416=await fetch(API_BASE+'/tasks/'+_0x5a33a8+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4df46f})});if(!_0x4ea416['ok']){const _0x2cae17=await _0x4ea416['json']()['catch'](()=>({}));throw new Error(_0x2cae17['error']||'Failed\x20to\x20add\x20comment');}return await _0x4ea416['json']();},async 'updateComment'(_0x60c4d5,_0xc09342,_0x4e3764){if(!_0x60c4d5)throw new Error('Task\x20ID\x20is\x20required');if(!_0xc09342)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x4e3764)throw new Error('Comment\x20content\x20is\x20required');const _0xdc4640=await fetch(API_BASE+'/tasks/'+_0x60c4d5+'/comments/'+_0xc09342,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4e3764})});if(!_0xdc4640['ok']){const _0x28d311=await _0xdc4640['json']()['catch'](()=>({}));throw new Error(_0x28d311['error']||'Failed\x20to\x20update\x20comment');}return await _0xdc4640['json']();},async 'deleteComment'(_0x375da8,_0x258597){if(!_0x375da8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x258597)throw new Error('Comment\x20ID\x20is\x20required');const _0x4090d1=await fetch(API_BASE+'/tasks/'+_0x375da8+'/comments/'+_0x258597,{'method':'DELETE'});if(!_0x4090d1['ok']){const _0x33fd48=await _0x4090d1['json']()['catch'](()=>({}));throw new Error(_0x33fd48['error']||'Failed\x20to\x20delete\x20comment');}return await _0x4090d1['json']();},async 'createObjective'(_0x5680a8){const _0x32926b={'objective':!![],'name':_0x5680a8['name']||'','environment':_0x5680a8['environment']||null,'agents':_0x5680a8['agents']||[],'branches':_0x5680a8['branches']||{},'isPinned':_0x5680a8['isPinned']||![],'parentObjectiveId':_0x5680a8['parentObjectiveId']||null,'env_vars':_0x5680a8['envVars']||{},'parameters':{'instructions':_0x5680a8['instructions']||''},'files':_0x5680a8['files']||[],'jira':_0x5680a8['jira']||null};return this['createTask'](_0x32926b);},async 'updateObjective'(_0x21e3b7,_0xd38636,_0x58a366=[],_0x1756d6=[]){let _0x2a8a99,_0x30d942={};const _0x245788={..._0xd38636};_0x1756d6&&_0x1756d6['length']>0x0&&(_0x245788['removeAttachments']=_0x1756d6);if(_0x58a366&&_0x58a366['length']>0x0){const _0x49d544=new FormData();for(const [_0x2adb8e,_0x374633]of Object['entries'](_0x245788)){if(_0x374633==null)continue;typeof _0x374633==='object'?_0x49d544['append'](_0x2adb8e,JSON['stringify'](_0x374633)):_0x49d544['append'](_0x2adb8e,String(_0x374633));}for(const _0x375890 of _0x58a366){_0x49d544['append']('attachments',_0x375890);}_0x2a8a99=_0x49d544;}else _0x30d942['Content-Type']='application/json',_0x2a8a99=JSON['stringify'](_0x245788);const _0x2fc9bc=await fetch(API_BASE+'/tasks/'+_0x21e3b7,{'method':'PATCH','headers':_0x30d942,'body':_0x2a8a99});if(!_0x2fc9bc['ok']){const _0x1c790b=await _0x2fc9bc['json']();throw new Error(_0x1c790b['error']||'Failed\x20to\x20update\x20objective');}return await _0x2fc9bc['json']();},async 'deleteObjective'(_0x447703){return this['deleteTask'](_0x447703);},async 'launchObjective'(_0x407918,_0x4b69b9={}){const _0x2b9ef2=await fetch(API_BASE+'/tasks/'+_0x407918+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4b69b9)});if(!_0x2b9ef2['ok']){const _0x5c5b2e=await _0x2b9ef2['json']();throw new Error(_0x5c5b2e['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2b9ef2['json']();},async 'getObjectiveAttachments'(_0x197e34){return this['getTaskAttachments'](_0x197e34);},async 'createJudgeTask'({environment:_0x5567e5,judgeAgent:_0x559201,groupId:_0x358acb,taskIds:_0x1c9b0f,judgeCustomInstructions:_0x25453b,isPinned:_0x17a0d1}){const _0x5bf675=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x5567e5,'judgeAgent':_0x559201,'groupId':_0x358acb,'taskIds':_0x1c9b0f,'judgeCustomInstructions':_0x25453b,'isPinned':_0x17a0d1})});if(!_0x5bf675['ok']){const _0x28b407=await _0x5bf675['json']();throw new Error(_0x28b407['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x5bf675['json']();},async 'getJudgeTasks'(_0x3bcda7){const _0x33f8a3=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x3bcda7));if(!_0x33f8a3['ok']){const _0x5a5042=await _0x33f8a3['json']();throw new Error(_0x5a5042['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x33f8a3['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x16f4e2,_0x55fa09,_0x51708d=''){const _0x940920=await fetch(API_BASE+'/tasks/'+_0x16f4e2+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0x55fa09,'customPreamble':_0x51708d})});if(!_0x940920['ok']){const _0x44ee8e=await _0x940920['json']();throw new Error(_0x44ee8e['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x940920['json']();},async 'getJiraConfig'(){const _0x858daf=await fetch(API_BASE+'/jira/config');if(!_0x858daf['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x858daf['json']();},async 'getJiraIssue'(_0x220059){const _0x10d772=await fetch(API_BASE+'/jira/issues/'+_0x220059);if(!_0x10d772['ok']){const _0x3b59aa=await _0x10d772['json']()['catch'](()=>({}));throw new Error(_0x3b59aa['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x10d772['statusText']);}return await _0x10d772['json']();},async 'searchJiraIssues'(_0x5257d2,_0x2b1402=0x14){const _0x194395=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x5257d2,'maxResults':_0x2b1402})});if(!_0x194395['ok']){const _0x122987=await _0x194395['json']()['catch'](()=>({}));throw new Error(_0x122987['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x194395['statusText']);}return await _0x194395['json']();},async 'postJiraComment'(_0x1cbb1f,_0x353b28){const _0x5abc46=await fetch(API_BASE+'/jira/issues/'+_0x1cbb1f+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x353b28})});if(!_0x5abc46['ok']){const _0x199c51=await _0x5abc46['json']()['catch'](()=>({}));throw new Error(_0x199c51['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x5abc46['statusText']);}return await _0x5abc46['json']();},async 'getJiraComments'(_0x3572d7){const _0x26b156=await fetch(API_BASE+'/jira/issues/'+_0x3572d7+'/comments');if(!_0x26b156['ok']){const _0x1a5b77=await _0x26b156['json']()['catch'](()=>({}));throw new Error(_0x1a5b77['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x26b156['statusText']);}return await _0x26b156['json']();},async 'promptParameter'({environment:_0x9deaa1,command:_0x329e3,parser:parser='json'}){const _0x4485bd=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x9deaa1,'command':_0x329e3,'parser':parser})});if(!_0x4485bd['ok']){const _0x45771e=await _0x4485bd['json']()['catch'](()=>({}));throw new Error(_0x45771e['message']||_0x45771e['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0x4485bd['statusText']);}return await _0x4485bd['json']();},async 'promptParameterStream'(_0x29f1b3,_0x6c6215){const _0x4b75ae=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29f1b3)});if(!_0x4b75ae['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x4b75ae['statusText']);const _0x2fcb40=_0x4b75ae['body']['getReader'](),_0x3f6be9=new TextDecoder();let _0x142944='';return new Promise((_0x38c3db,_0x4431f8)=>{const _0xf5757=async()=>{try{const {done:_0x126e7b,value:_0x54329a}=await _0x2fcb40['read']();if(_0x126e7b)return;_0x142944+=_0x3f6be9['decode'](_0x54329a,{'stream':!![]});const _0x20a472=_0x142944['split']('\x0a\x0a');_0x142944=_0x20a472['pop']()||'';for(const _0x18426e of _0x20a472){if(!_0x18426e['trim']())continue;const _0x2f5e09=_0x18426e['split']('\x0a');let _0x48a552='message',_0x4a283a='';for(const _0x1f4514 of _0x2f5e09){if(_0x1f4514['startsWith']('event:'))_0x48a552=_0x1f4514['substring'](0x6)['trim']();else _0x1f4514['startsWith']('data:')&&(_0x4a283a=_0x1f4514['substring'](0x5)['trim']());}if(!_0x4a283a)continue;try{const _0x587083=JSON['parse'](_0x4a283a);if(_0x48a552==='progress'&&_0x6c6215)_0x6c6215(_0x587083['stage'],_0x587083['message']);else{if(_0x48a552==='result'){_0x38c3db(_0x587083);return;}else{if(_0x48a552==='error'){let _0x125aeb=_0x587083['message']||_0x587083['error']||'Prompt\x20command\x20failed';_0x587083['rawOutput']&&(_0x125aeb+='\x0a\x0aRaw\x20output:\x0a'+_0x587083['rawOutput']);_0x4431f8(new Error(_0x125aeb));return;}}}}catch(_0x5a4ab2){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x5a4ab2),console['error']('Event\x20type:',_0x48a552),console['error']('Event\x20data:',_0x4a283a),console['error']('First\x20200\x20chars:',_0x4a283a['substring'](0x0,0xc8)),_0x4431f8(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x5a4ab2['message']+'\x0a\x0aData:\x20'+_0x4a283a['substring'](0x0,0x1f4)));return;}}_0xf5757();}catch(_0x2f7d6f){_0x4431f8(_0x2f7d6f);}};_0xf5757();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5b4e76){const _0x47f068=await fetch(''+API_BASE+_0x5b4e76);if(!_0x47f068['ok']){const _0x236649=await _0x47f068['json']()['catch'](()=>({'error':_0x47f068['statusText']})),_0x23ec02=new Error(_0x236649['error']||_0x236649['message']||_0x47f068['statusText']);if(_0x236649['detail']!==undefined)_0x23ec02['detail']=_0x236649['detail'];throw _0x23ec02;}return await _0x47f068['json']();},async 'post'(_0x35ca4f,_0x2629d1){const _0x82c3d5=await fetch(''+API_BASE+_0x35ca4f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2629d1)});if(!_0x82c3d5['ok']){const _0x27968f=await _0x82c3d5['json']()['catch'](()=>({'error':_0x82c3d5['statusText']})),_0x1bbb26=new Error(_0x27968f['error']||_0x27968f['message']||_0x82c3d5['statusText']);if(_0x27968f['detail']!==undefined)_0x1bbb26['detail']=_0x27968f['detail'];throw _0x1bbb26;}return await _0x82c3d5['json']();},async 'put'(_0xe02806,_0x3a22e3){const _0xff478c=await fetch(''+API_BASE+_0xe02806,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a22e3)});if(!_0xff478c['ok']){const _0x3b5994=await _0xff478c['json']()['catch'](()=>({'error':_0xff478c['statusText']})),_0x2fd09c=new Error(_0x3b5994['error']||_0x3b5994['message']||_0xff478c['statusText']);if(_0x3b5994['detail']!==undefined)_0x2fd09c['detail']=_0x3b5994['detail'];throw _0x2fd09c;}return await _0xff478c['json']();},async 'delete'(_0x5ea88a,_0x1499d8){const _0x160941={'method':'DELETE'};_0x1499d8&&(_0x160941['headers']={'Content-Type':'application/json'},_0x160941['body']=JSON['stringify'](_0x1499d8));const _0x152f3b=await fetch(''+API_BASE+_0x5ea88a,_0x160941);if(!_0x152f3b['ok']){const _0x413d17=await _0x152f3b['json']()['catch'](()=>({'error':_0x152f3b['statusText']})),_0x5cd997=new Error(_0x413d17['error']||_0x413d17['message']||_0x152f3b['statusText']);if(_0x413d17['detail']!==undefined)_0x5cd997['detail']=_0x413d17['detail'];throw _0x5cd997;}return await _0x152f3b['json']();},async 'getSkills'(){const _0x34f6bf=await fetch(API_BASE+'/skills');if(!_0x34f6bf['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x34f6bf['statusText']);return await _0x34f6bf['json']();},async 'getSkill'(_0x2cba41){const _0x1c1802=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2cba41));if(!_0x1c1802['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x1c1802['statusText']);return await _0x1c1802['json']();},async 'createSkill'(_0x656398){const _0x2421eb=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x656398)});if(!_0x2421eb['ok']){const _0x1d692b=await _0x2421eb['json']()['catch'](()=>({'error':_0x2421eb['statusText']})),_0x3b7782=new Error(_0x1d692b['error']||_0x1d692b['message']||_0x2421eb['statusText']);if(_0x1d692b['detail']!==undefined)_0x3b7782['detail']=_0x1d692b['detail'];throw _0x3b7782;}return await _0x2421eb['json']();},async 'updateSkill'(_0x34b656,_0x1b1cb8){const _0x2bf06b=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x34b656),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1b1cb8)});if(!_0x2bf06b['ok']){const _0x53396c=await _0x2bf06b['json']()['catch'](()=>({'error':_0x2bf06b['statusText']})),_0x5ab719=new Error(_0x53396c['error']||_0x53396c['message']||_0x2bf06b['statusText']);if(_0x53396c['detail']!==undefined)_0x5ab719['detail']=_0x53396c['detail'];throw _0x5ab719;}return await _0x2bf06b['json']();},async 'deleteSkill'(_0x5799e5){const _0x2f6cba=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5799e5),{'method':'DELETE'});if(!_0x2f6cba['ok']){const _0x4be2b7=await _0x2f6cba['json']()['catch'](()=>({'error':_0x2f6cba['statusText']})),_0x1aba13=new Error(_0x4be2b7['error']||_0x4be2b7['message']||_0x2f6cba['statusText']);if(_0x4be2b7['detail']!==undefined)_0x1aba13['detail']=_0x4be2b7['detail'];throw _0x1aba13;}return await _0x2f6cba['json']();},async 'getSkillFile'(_0x494c91,_0x3275c9){const _0x221119=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x494c91)+'/files/'+_0x3275c9);if(!_0x221119['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x221119['statusText']);return await _0x221119['json']();},async 'saveSkillFile'(_0x5a2138,_0x19d4a1,_0x33c4ed){const _0x3fd56d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x5a2138)+'/files/'+_0x19d4a1,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x33c4ed})});if(!_0x3fd56d['ok']){const _0x373b40=await _0x3fd56d['json']()['catch'](()=>({'error':_0x3fd56d['statusText']})),_0x23acbc=new Error(_0x373b40['error']||_0x373b40['message']||_0x3fd56d['statusText']);if(_0x373b40['detail']!==undefined)_0x23acbc['detail']=_0x373b40['detail'];throw _0x23acbc;}return await _0x3fd56d['json']();},async 'deleteSkillFile'(_0x4a1f93,_0x1eb139){const _0x394075=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4a1f93)+'/files/'+_0x1eb139,{'method':'DELETE'});if(!_0x394075['ok']){const _0x3c9e6f=await _0x394075['json']()['catch'](()=>({'error':_0x394075['statusText']})),_0x5e1f58=new Error(_0x3c9e6f['error']||_0x3c9e6f['message']||_0x394075['statusText']);if(_0x3c9e6f['detail']!==undefined)_0x5e1f58['detail']=_0x3c9e6f['detail'];throw _0x5e1f58;}return await _0x394075['json']();},async 'pullSkills'(){const _0x2b220f=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x2b220f['ok']){const _0x17473e=await _0x2b220f['json']()['catch'](()=>({'error':_0x2b220f['statusText']})),_0x2a3c47=new Error(_0x17473e['error']||_0x17473e['message']||_0x2b220f['statusText']);if(_0x17473e['detail']!==undefined)_0x2a3c47['detail']=_0x17473e['detail'];throw _0x2a3c47;}return await _0x2b220f['json']();},async 'commitSkills'(_0x5abd37,_0x38efd3={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x38efd3,_0x35b2d6=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x5abd37,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x35b2d6['ok']){const _0x4a9798=await _0x35b2d6['json']()['catch'](()=>({'error':_0x35b2d6['statusText']})),_0x2940b6=new Error(_0x4a9798['error']||_0x4a9798['message']||_0x35b2d6['statusText']);if(_0x4a9798['detail']!==undefined)_0x2940b6['detail']=_0x4a9798['detail'];throw _0x2940b6;}return await _0x35b2d6['json']();},async 'discardSkillsChanges'(){const _0x4b05b4=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x4b05b4['ok']){const _0x2da5cc=await _0x4b05b4['json']()['catch'](()=>({'error':_0x4b05b4['statusText']})),_0x5f10fd=new Error(_0x2da5cc['error']||_0x2da5cc['message']||_0x4b05b4['statusText']);if(_0x2da5cc['detail']!==undefined)_0x5f10fd['detail']=_0x2da5cc['detail'];throw _0x5f10fd;}return await _0x4b05b4['json']();},async 'getSkillCatalog'(){const _0x37f636=await fetch(API_BASE+'/external-skills/catalog');if(!_0x37f636['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x37f636['statusText']);return await _0x37f636['json']();},async 'getImportedSkillsRegistry'(){const _0x22124e=await fetch(API_BASE+'/external-skills/registry');if(!_0x22124e['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x22124e['statusText']);return await _0x22124e['json']();},async 'importCatalogSkill'(_0x530ba6){const _0x56f1e8=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x530ba6})});if(!_0x56f1e8['ok']){const _0x1d4444=await _0x56f1e8['json']()['catch'](()=>({'error':_0x56f1e8['statusText']})),_0x3b841d=new Error(_0x1d4444['error']||_0x1d4444['message']||_0x56f1e8['statusText']);if(_0x1d4444['detail']!==undefined)_0x3b841d['detail']=_0x1d4444['detail'];throw _0x3b841d;}return await _0x56f1e8['json']();},async 'importSkillFromGit'(_0x330839,_0x3803da,_0xdc7f4b='main',_0x21c6a8=null){const _0x1437c7=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x330839,'skillPath':_0x3803da,'branch':_0xdc7f4b,'skillId':_0x21c6a8})});if(!_0x1437c7['ok']){const _0x8c5d99=await _0x1437c7['json']()['catch'](()=>({'error':_0x1437c7['statusText']})),_0x595eba=new Error(_0x8c5d99['error']||_0x8c5d99['message']||_0x1437c7['statusText']);if(_0x8c5d99['detail']!==undefined)_0x595eba['detail']=_0x8c5d99['detail'];throw _0x595eba;}return await _0x1437c7['json']();},async 'probeMarketplace'(_0x5c8b60,_0x3b2ab4='main'){const _0x218158=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x5c8b60,'branch':_0x3b2ab4})});if(!_0x218158['ok']){const _0x5b8358=await _0x218158['json']()['catch'](()=>({'error':_0x218158['statusText']})),_0x112837=new Error(_0x5b8358['error']||_0x5b8358['message']||_0x218158['statusText']);if(_0x5b8358['detail']!==undefined)_0x112837['detail']=_0x5b8358['detail'];throw _0x112837;}return await _0x218158['json']();},async 'importMarketplaceBundle'(_0x46ac5a,_0xa7146c,_0x596b3c,_0x35c496=null){const _0x332e36=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x46ac5a,'branch':_0xa7146c,'bundleId':_0x596b3c,'selectedSkills':_0x35c496})});if(!_0x332e36['ok']){const _0xf12348=await _0x332e36['json']()['catch'](()=>({'error':_0x332e36['statusText']})),_0x23e988=new Error(_0xf12348['error']||_0xf12348['message']||_0x332e36['statusText']);if(_0xf12348['detail']!==undefined)_0x23e988['detail']=_0xf12348['detail'];throw _0x23e988;}return await _0x332e36['json']();},async 'importSkillFromFolder'(_0xb69624,_0x382761=null){const _0x599cae=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0xb69624,'skillId':_0x382761})});if(!_0x599cae['ok']){const _0x5b2880=await _0x599cae['json']()['catch'](()=>({'error':_0x599cae['statusText']})),_0x3ede8c=new Error(_0x5b2880['error']||_0x5b2880['message']||_0x599cae['statusText']);if(_0x5b2880['detail']!==undefined)_0x3ede8c['detail']=_0x5b2880['detail'];throw _0x3ede8c;}return await _0x599cae['json']();},async 'importSkillFromNpm'(_0xa6e2c2,_0x4dec14='latest',_0xdc064d=null,_0x51214b=null){const _0x55b5a8=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0xa6e2c2,'version':_0x4dec14,'skillId':_0xdc064d,'registry':_0x51214b})});if(!_0x55b5a8['ok']){const _0x514e1c=await _0x55b5a8['json']()['catch'](()=>({'error':_0x55b5a8['statusText']})),_0x2e9a5a=new Error(_0x514e1c['error']||_0x514e1c['message']||_0x55b5a8['statusText']);if(_0x514e1c['detail']!==undefined)_0x2e9a5a['detail']=_0x514e1c['detail'];throw _0x2e9a5a;}return await _0x55b5a8['json']();},async 'checkSkillUpdates'(_0x5d362a){const _0xfccade=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5d362a)+'/check-updates',{'method':'POST'});if(!_0xfccade['ok']){const _0x4ea8d2=await _0xfccade['json']()['catch'](()=>({'error':_0xfccade['statusText']})),_0x1c1351=new Error(_0x4ea8d2['error']||_0x4ea8d2['message']||_0xfccade['statusText']);if(_0x4ea8d2['detail']!==undefined)_0x1c1351['detail']=_0x4ea8d2['detail'];throw _0x1c1351;}return await _0xfccade['json']();},async 'updateExternalSkill'(_0x19947b){const _0x56da39=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x19947b)+'/update',{'method':'POST'});if(!_0x56da39['ok']){const _0x30fbaf=await _0x56da39['json']()['catch'](()=>({'error':_0x56da39['statusText']})),_0xf1f1ad=new Error(_0x30fbaf['error']||_0x30fbaf['message']||_0x56da39['statusText']);if(_0x30fbaf['detail']!==undefined)_0xf1f1ad['detail']=_0x30fbaf['detail'];throw _0xf1f1ad;}return await _0x56da39['json']();},async 'updateSkillFlags'(_0x5575e2,_0x4a76da){const _0x29c44f=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x5575e2)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0x4a76da})});if(!_0x29c44f['ok']){const _0x41a84a=await _0x29c44f['json']()['catch'](()=>({'error':_0x29c44f['statusText']})),_0x274ed7=new Error(_0x41a84a['error']||_0x41a84a['message']||_0x29c44f['statusText']);if(_0x41a84a['detail']!==undefined)_0x274ed7['detail']=_0x41a84a['detail'];throw _0x274ed7;}return await _0x29c44f['json']();},async 'removeFromImportedRegistry'(_0x26cf83){const _0x1b06c9=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x26cf83)+'/registry',{'method':'DELETE'});if(!_0x1b06c9['ok']){const _0x104a3f=await _0x1b06c9['json']()['catch'](()=>({'error':_0x1b06c9['statusText']})),_0xbd7098=new Error(_0x104a3f['error']||_0x104a3f['message']||_0x1b06c9['statusText']);if(_0x104a3f['detail']!==undefined)_0xbd7098['detail']=_0x104a3f['detail'];throw _0xbd7098;}return await _0x1b06c9['json']();},async 'getTeams'(){const _0x59f4ea=await fetch(API_BASE+'/teams');if(!_0x59f4ea['ok']){const _0x51e382=await _0x59f4ea['json']()['catch'](()=>({'message':_0x59f4ea['statusText']}));throw new Error(_0x51e382['message']||'Failed\x20to\x20get\x20teams');}return await _0x59f4ea['json']();},async 'getTeam'(_0x4280e6){const _0x1bc958=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4280e6));if(!_0x1bc958['ok']){const _0x4dc908=await _0x1bc958['json']()['catch'](()=>({'message':_0x1bc958['statusText']}));throw new Error(_0x4dc908['message']||'Failed\x20to\x20get\x20team');}return await _0x1bc958['json']();},async 'createTeam'(_0x5b82b3){const _0x51ab4b=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5b82b3)});if(!_0x51ab4b['ok']){const _0x7c31d5=await _0x51ab4b['json']()['catch'](()=>({'message':_0x51ab4b['statusText']}));throw new Error(_0x7c31d5['message']||'Failed\x20to\x20create\x20team');}return await _0x51ab4b['json']();},async 'updateTeam'(_0x44db12,_0x4cd24a){const _0x4b92e4=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x44db12),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4cd24a)});if(!_0x4b92e4['ok']){const _0x298684=await _0x4b92e4['json']()['catch'](()=>({'message':_0x4b92e4['statusText']}));throw new Error(_0x298684['message']||'Failed\x20to\x20update\x20team');}return await _0x4b92e4['json']();},async 'deleteTeam'(_0x342ef1){const _0x40bc01=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x342ef1),{'method':'DELETE'});if(!_0x40bc01['ok']){const _0x303d63=await _0x40bc01['json']()['catch'](()=>({'message':_0x40bc01['statusText']}));throw new Error(_0x303d63['message']||'Failed\x20to\x20delete\x20team');}return await _0x40bc01['json']();},async 'addTeamMember'(_0x3d28b8,_0x253812){const _0xead8f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x3d28b8)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x253812})});if(!_0xead8f1['ok']){const _0x251306=await _0xead8f1['json']()['catch'](()=>({'message':_0xead8f1['statusText']}));throw new Error(_0x251306['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0xead8f1['json']();},async 'removeTeamMember'(_0x10ad3a,_0x6b08f7){const _0xa1adfb=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x10ad3a)+'/members/'+encodeURIComponent(_0x6b08f7),{'method':'DELETE'});if(!_0xa1adfb['ok']){const _0x1c8826=await _0xa1adfb['json']()['catch'](()=>({'message':_0xa1adfb['statusText']}));throw new Error(_0x1c8826['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0xa1adfb['json']();},async 'getBindings'(_0x35a3f8={}){const _0x224817=new URLSearchParams();if(_0x35a3f8['resource_type'])_0x224817['set']('resource_type',_0x35a3f8['resource_type']);if(_0x35a3f8['resource_id'])_0x224817['set']('resource_id',_0x35a3f8['resource_id']);if(_0x35a3f8['subject_type'])_0x224817['set']('subject_type',_0x35a3f8['subject_type']);if(_0x35a3f8['subject_id'])_0x224817['set']('subject_id',_0x35a3f8['subject_id']);const _0xf65b02=_0x224817['toString'](),_0x1753e7=await fetch(API_BASE+'/bindings'+(_0xf65b02?'?'+_0xf65b02:''));if(!_0x1753e7['ok']){const _0x2fc9e2=await _0x1753e7['json']()['catch'](()=>({'message':_0x1753e7['statusText']}));throw new Error(_0x2fc9e2['message']||'Failed\x20to\x20get\x20bindings');}return await _0x1753e7['json']();},async 'createBinding'(_0xff974f){const _0x27bdbc=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xff974f)});if(!_0x27bdbc['ok']){const _0x169f8b=await _0x27bdbc['json']()['catch'](()=>({'message':_0x27bdbc['statusText']}));throw new Error(_0x169f8b['message']||'Failed\x20to\x20create\x20binding');}return await _0x27bdbc['json']();},async 'updateBinding'(_0x54c34b,_0xd71131){const _0x236fa6=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x54c34b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd71131)});if(!_0x236fa6['ok']){const _0xb1cb4c=await _0x236fa6['json']()['catch'](()=>({'message':_0x236fa6['statusText']}));throw new Error(_0xb1cb4c['message']||'Failed\x20to\x20update\x20binding');}return await _0x236fa6['json']();},async 'deleteBinding'(_0x12a72e){const _0x573f7c=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0x12a72e),{'method':'DELETE'});if(!_0x573f7c['ok']){const _0x5c2ee3=await _0x573f7c['json']()['catch'](()=>({'message':_0x573f7c['statusText']}));throw new Error(_0x5c2ee3['message']||'Failed\x20to\x20delete\x20binding');}return await _0x573f7c['json']();},async 'getRoleDefinitions'(){const _0x14479d=await fetch(API_BASE+'/roles');if(!_0x14479d['ok']){const _0x4759ec=await _0x14479d['json']()['catch'](()=>({'message':_0x14479d['statusText']}));throw new Error(_0x4759ec['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x14479d['json']();},async 'getRoleDefinition'(_0x358dc0){const _0x1c222b=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x358dc0));if(!_0x1c222b['ok']){const _0x262c21=await _0x1c222b['json']()['catch'](()=>({'message':_0x1c222b['statusText']}));throw new Error(_0x262c21['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x1c222b['json']();},async 'createRoleDefinition'(_0x1129ac){const _0x44f27d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1129ac)});if(!_0x44f27d['ok']){const _0x54cbe3=await _0x44f27d['json']()['catch'](()=>({'message':_0x44f27d['statusText']}));throw new Error(_0x54cbe3['message']||_0x54cbe3['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x44f27d['json']();},async 'updateRoleDefinition'(_0x58bc73,_0x403629){const _0x2b7f40=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x58bc73),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x403629)});if(!_0x2b7f40['ok']){const _0xf5ed81=await _0x2b7f40['json']()['catch'](()=>({'message':_0x2b7f40['statusText']}));throw new Error(_0xf5ed81['message']||_0xf5ed81['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x2b7f40['json']();},async 'deleteRoleDefinition'(_0x462cb2){const _0x37316e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x462cb2),{'method':'DELETE'});if(!_0x37316e['ok']){const _0x49fc96=await _0x37316e['json']()['catch'](()=>({'message':_0x37316e['statusText']}));throw new Error(_0x49fc96['message']||_0x49fc96['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x37316e['json']();},async 'getAvailablePermissions'(){const _0x28860a=await fetch(API_BASE+'/roles/available-permissions');if(!_0x28860a['ok']){const _0x3c8abf=await _0x28860a['json']()['catch'](()=>({'message':_0x28860a['statusText']}));throw new Error(_0x3c8abf['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x28860a['json']();},async 'getGitProviderAllowedTeams'(_0x3f888e){const _0x14e08f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x3f888e)+'/allowed-teams');if(!_0x14e08f['ok']){const _0x45dddf=await _0x14e08f['json']()['catch'](()=>({'message':_0x14e08f['statusText']}));throw new Error(_0x45dddf['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x14e08f['json']();},async 'setGitProviderAllowedTeams'(_0x192e4b,_0x83a789){const _0x3e437f=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0x192e4b)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x83a789})});if(!_0x3e437f['ok']){const _0x43a8ca=await _0x3e437f['json']()['catch'](()=>({'message':_0x3e437f['statusText']}));throw new Error(_0x43a8ca['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3e437f['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 _0xbe7368=toastState['baseBottom'];toastState['toasts']['forEach'](_0x5c20c5=>{_0x5c20c5['el']['style']['bottom']=_0xbe7368+'px';const _0x3d40a2=_0x5c20c5['el']['offsetHeight']||toastState['defaultHeight'];_0xbe7368+=_0x3d40a2+toastState['gap'];});});}function removeToastById(_0x5ae3a7){const _0x159a0b=toastState['toasts']['findIndex'](_0x41f143=>_0x41f143['id']===_0x5ae3a7);if(_0x159a0b===-0x1)return;const _0x33ed80=toastState['toasts'][_0x159a0b];if(_0x33ed80['timeoutId'])clearTimeout(_0x33ed80['timeoutId']);_0x33ed80['el']['classList']['remove']('show'),setTimeout(()=>_0x33ed80['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x159a0b,0x1),repositionAllToasts();}function registerToast(_0x9e0f4e){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0x9e0f4e),repositionAllToasts(),_0x9e0f4e['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(_0x15672c){if(_0x15672c===null||_0x15672c===undefined)return'';return String(_0x15672c)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0x49fd78,_0x5d6a74){if(_0x49fd78&&typeof _0x49fd78==='object'&&!Array['isArray'](_0x49fd78))return{'code':typeof _0x49fd78['text']==='string'?_0x49fd78['text']:'','language':typeof _0x49fd78['lang']==='string'?_0x49fd78['lang']:''};return{'code':typeof _0x49fd78==='string'?_0x49fd78:'','language':typeof _0x5d6a74==='string'?_0x5d6a74:''};}function buildMermaidBlock(_0x2001cc){const _0x1a0ded=String(_0x2001cc||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1a0ded))+'\x22>'+escapeHtmlValue(_0x1a0ded)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x53188f=new marked['Renderer'](),_0xa45361=_0x53188f['code']['bind'](_0x53188f);return _0x53188f['code']=function(_0x391d04,_0x1e56df,..._0x4e2046){const {code:_0x25bfae,language:_0x337ed8}=getMarkdownCodeBlockPayload(_0x391d04,_0x1e56df),_0x1c4978=String(_0x337ed8||'')['trim']()['toLowerCase']();if(_0x1c4978==='mermaid')return buildMermaidBlock(_0x25bfae);const _0x203013=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x203013&&_0x1c4978)try{const _0x2ffdb1=_0x203013['getLanguage'](_0x1c4978)?_0x1c4978:'plaintext',_0x1e3c87=_0x203013['highlight'](_0x25bfae,{'language':_0x2ffdb1})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x1c4978)+'\x22>'+_0x1e3c87+'</code></pre>';}catch(_0x342583){console['error']('Syntax\x20highlighting\x20error:',_0x342583);}return _0xa45361(_0x391d04,_0x1e56df,..._0x4e2046);},sharedMarkedRenderer=_0x53188f,_0x53188f;}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 _0xd326e1=window['mermaid'];if(!_0xd326e1||typeof _0xd326e1['initialize']!=='function')return _0xd326e1||null;return _0xd326e1['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0xd326e1;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x4c7dca,_0x530d3a)=>{const _0x19112e=()=>_0x4c7dca(configureMermaidInstance()),_0x39966d=()=>{mermaidLoadPromise=null,_0x530d3a(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x2c4260=document['getElementById'](MERMAID_SCRIPT_ID);!_0x2c4260&&(_0x2c4260=document['createElement']('script'),_0x2c4260['id']=MERMAID_SCRIPT_ID,_0x2c4260['src']=MERMAID_SCRIPT_SRC,_0x2c4260['async']=!![],document['head']['appendChild'](_0x2c4260));if(window['mermaid']){_0x19112e();return;}_0x2c4260['addEventListener']('load',_0x19112e,{'once':!![]}),_0x2c4260['addEventListener']('error',_0x39966d,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x161696){const _0x47e054=_0x161696['getAttribute']('data-mermaid-source');if(!_0x47e054)return null;let _0x362d87=_0x47e054;try{_0x362d87=decodeURIComponent(_0x47e054);}catch{}return _0x161696['textContent']=_0x362d87,_0x161696['removeAttribute']('data-processed'),_0x161696['removeAttribute']('aria-roledescription'),_0x161696['removeAttribute']('role'),_0x161696['removeAttribute']('aria-label'),_0x362d87;}function collectMermaidNodes(_0x6ad670,_0x1e41ce){if(!(_0x6ad670 instanceof Element))return;_0x6ad670['matches']('.mermaid[data-mermaid-source]')&&_0x1e41ce['add'](_0x6ad670),_0x6ad670['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x338d3f=>{_0x1e41ce['add'](_0x338d3f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x11e5a8=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x28b005=>setTimeout(_0x28b005,0x0);_0x11e5a8(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0x5a383d=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0x5a383d);});});}function queueMermaidRender(_0xcbb8e3){const _0x25827c=new Set();_0xcbb8e3 instanceof Document||_0xcbb8e3 instanceof DocumentFragment?_0xcbb8e3['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x3eaaea=>_0x25827c['add'](_0x3eaaea)):collectMermaidNodes(_0xcbb8e3,_0x25827c);if(_0x25827c['size']===0x0)return;_0x25827c['forEach'](_0x297f7c=>pendingMermaidNodes['add'](_0x297f7c)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x312913=Array['from'](pendingMermaidNodes)['filter'](_0x4f6b7f=>_0x4f6b7f['isConnected']);pendingMermaidNodes['clear']();if(_0x312913['length']===0x0)return;const _0x4876fe=await loadMermaid();if(!_0x4876fe)return;configureMermaidInstance();const _0x564f5d=getMermaidTheme();for(const _0x3a7337 of _0x312913){const _0x2cd3dd=_0x3a7337['getAttribute']('data-mermaid-source');if(!_0x2cd3dd)continue;const _0x28818a=_0x3a7337['getAttribute']('data-processed')==='true';if(_0x28818a&&_0x3a7337['dataset']['mermaidTheme']===_0x564f5d)continue;restoreMermaidSource(_0x3a7337);try{if(typeof _0x4876fe['run']==='function')await _0x4876fe['run']({'nodes':[_0x3a7337]});else typeof _0x4876fe['init']==='function'&&_0x4876fe['init'](undefined,[_0x3a7337]);_0x3a7337['dataset']['mermaidTheme']=_0x564f5d,delete _0x3a7337['dataset']['mermaidError'];}catch(_0x3571bf){console['error']('Mermaid\x20render\x20failed:',_0x3571bf),restoreMermaidSource(_0x3a7337),_0x3a7337['dataset']['mermaidError']='true',delete _0x3a7337['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x46ea8e=>{_0x46ea8e['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x46ea8e);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1b4666=>{_0x1b4666['forEach'](_0x2ee9a4=>{_0x2ee9a4['addedNodes']['forEach'](_0x4befe1=>{_0x4befe1['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x4befe1);});});}),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'(_0x149b85){const _0x58e3dd=new Date(_0x149b85),_0x357e60=new Date(),_0x4203ab=_0x357e60-_0x58e3dd,_0x220514=Math['floor'](_0x4203ab/0x3e8),_0x3416ba=Math['floor'](_0x220514/0x3c),_0x448a43=Math['floor'](_0x3416ba/0x3c),_0x5d5caf=Math['floor'](_0x448a43/0x18);if(_0x220514<0x3c)return'now';if(_0x3416ba<0x3c)return _0x3416ba+'m\x20ago';if(_0x448a43<0x18)return _0x448a43+'h\x20ago';return _0x5d5caf+'d\x20ago';},'getStatusIcon'(_0x16bd7b){switch(_0x16bd7b){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x4e0c54){switch(_0x4e0c54){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'(_0x56a574,_0xb0cb2=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x4c7ac0={};_0x4c7ac0['text/plain']=new Blob([_0x56a574],{'type':'text/plain'});_0xb0cb2&&(_0x4c7ac0['text/html']=new Blob([_0xb0cb2],{'type':'text/html'}));const _0xc57019=new ClipboardItem(_0x4c7ac0);return await navigator['clipboard']['write']([_0xc57019]),!![];}catch(_0x4ac4b2){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x4ac4b2);}try{const _0x1b370b=_0x4fafdf=>{_0x4fafdf['preventDefault'](),_0x4fafdf['clipboardData']['setData']('text/plain',_0x56a574),_0xb0cb2&&_0x4fafdf['clipboardData']['setData']('text/html',_0xb0cb2);};document['addEventListener']('copy',_0x1b370b);const _0x4f811f=document['execCommand']('copy');document['removeEventListener']('copy',_0x1b370b);if(_0x4f811f)return!![];}catch(_0x490f0c){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x490f0c);}try{const _0x3a5472=document['createElement']('textarea');_0x3a5472['value']=_0x56a574,_0x3a5472['style']['position']='fixed',_0x3a5472['style']['opacity']='0',_0x3a5472['style']['pointerEvents']='none',document['body']['appendChild'](_0x3a5472),_0x3a5472['select']();const _0x2f9aa4=document['execCommand']('copy');return document['body']['removeChild'](_0x3a5472),_0x2f9aa4;}catch(_0x52b891){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x52b891),![];}},'showToast'(_0x119f9d,_0x16a794='info'){const _0x2468a3=getNextToastId(),_0x1a581b=document['createElement']('div');_0x1a581b['className']='toast\x20toast-'+_0x16a794,_0x1a581b['textContent']=_0x119f9d,_0x1a581b['dataset']['toastId']=_0x2468a3,document['body']['appendChild'](_0x1a581b);const _0x1d5dbd=_0x16a794==='error'?0x2710:0xbb8,_0xd1f47c=setTimeout(()=>{removeToastById(_0x2468a3);},_0x1d5dbd),_0x46ec2d={'id':_0x2468a3,'el':_0x1a581b,'timeoutId':_0xd1f47c};return registerToast(_0x46ec2d),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x1a581b['classList']['add']('show');});}),_0x2468a3;},'showError'(_0xa4308f){console['error'](_0xa4308f);const _0x373b82=typeof _0xa4308f==='string'?_0xa4308f:_0xa4308f['message']||'An\x20error\x20occurred';this['showToast'](_0x373b82,'error');},'showSuccess'(_0x3439c5){this['showToast'](_0x3439c5,'success');},'capitalize'(_0x224956){if(!_0x224956)return'';return _0x224956['charAt'](0x0)['toUpperCase']()+_0x224956['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0x5d6b62){return escapeHtmlValue(_0x5d6b62);},'ansiToHtml'(_0x2df0fe){if(_0x2df0fe===null||_0x2df0fe===undefined)return'';let _0x49aae6=this['escapeHtml'](_0x2df0fe);const _0x2e8897={'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'},_0x4b3d29={'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 _0x312bbb=0x0;return _0x49aae6=_0x49aae6['replace'](/\x1b\[([0-9;]*)m/g,(_0x42e5c6,_0x1f3eb9)=>{if(!_0x1f3eb9||_0x1f3eb9==='0'){const _0x167f9a='</span>'['repeat'](_0x312bbb);return _0x312bbb=0x0,_0x167f9a;}const _0x19bf71=_0x1f3eb9['split'](';'),_0x599622=[];for(const _0x5e8327 of _0x19bf71){if(_0x5e8327==='1')_0x599622['push']('font-weight:bold');else{if(_0x5e8327==='2')_0x599622['push']('opacity:0.7');else{if(_0x5e8327==='3')_0x599622['push']('font-style:italic');else{if(_0x5e8327==='4')_0x599622['push']('text-decoration:underline');else{if(_0x5e8327==='9')_0x599622['push']('text-decoration:line-through');else{if(_0x2e8897[_0x5e8327])_0x599622['push']('color:'+_0x2e8897[_0x5e8327]);else{if(_0x4b3d29[_0x5e8327])_0x599622['push']('background-color:'+_0x4b3d29[_0x5e8327]);}}}}}}}if(_0x599622['length']>0x0)return _0x312bbb++,'<span\x20style=\x22'+_0x599622['join'](';')+'\x22>';return'';}),_0x49aae6+='</span>'['repeat'](_0x312bbb),_0x49aae6=_0x49aae6['replace'](/\\u001b\[([0-9;]*)m/g,(_0x4daaf4,_0x462e45)=>{if(!_0x462e45||_0x462e45==='0')return'';const _0x1fcc86=_0x462e45['split'](';'),_0x296217=[];for(const _0x1a8f16 of _0x1fcc86){if(_0x1a8f16==='1')_0x296217['push']('font-weight:bold');else{if(_0x2e8897[_0x1a8f16])_0x296217['push']('color:'+_0x2e8897[_0x1a8f16]);else{if(_0x4b3d29[_0x1a8f16])_0x296217['push']('background-color:'+_0x4b3d29[_0x1a8f16]);}}}if(_0x296217['length']>0x0)return'<span\x20style=\x22'+_0x296217['join'](';')+'\x22>';return'';}),_0x49aae6;},'showModal'({title:_0x368a9,content:_0x545576,buttons:buttons=[]}){const _0x575630='\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'](_0x368a9)+'</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'+_0x545576+'\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']((_0x13a3e0,_0x14bbc2)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x13a3e0['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x14bbc2+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x13a3e0['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',_0x2c9132=document['createElement']('div');_0x2c9132['id']='utils-modal',_0x2c9132['className']='modal',_0x2c9132['innerHTML']=_0x575630,document['body']['appendChild'](_0x2c9132);const _0x2dcccc=document['getElementById']('utils-modal-close');_0x2dcccc&&_0x2dcccc['addEventListener']('click',()=>this['hideModal']());const _0xde6f5d=_0x2c9132['querySelectorAll']('[data-btn-index]');_0xde6f5d['forEach'](_0x2d1d5c=>{const _0x172185=parseInt(_0x2d1d5c['dataset']['btnIndex']);buttons[_0x172185]?.['onClick']&&_0x2d1d5c['addEventListener']('click',buttons[_0x172185]['onClick']);});const _0x2ba979=document['getElementById']('utils-modal-overlay');_0x2ba979&&_0x2ba979['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x16ac66=document['getElementById']('utils-modal');_0x16ac66&&_0x16ac66['remove']();},'parseKeyValuePairs'(_0xbe9370){const _0x127fb2={};if(!_0xbe9370)return _0x127fb2;return _0xbe9370['split'](/\r?\n/)['map'](_0x5b81de=>_0x5b81de['trim']())['filter'](Boolean)['forEach'](_0x1428b1=>{const _0x4cc6ce=_0x1428b1['indexOf']('=');if(_0x4cc6ce>0x0){const _0x417bb3=_0x1428b1['slice'](0x0,_0x4cc6ce)['trim'](),_0x3a95a0=_0x1428b1['slice'](_0x4cc6ce+0x1)['trim']();if(_0x417bb3)_0x127fb2[_0x417bb3]=_0x3a95a0;}}),_0x127fb2;},'debounce'(_0x3ebad5,_0x2b1f64=0xfa){let _0x1e3eed=null;return(..._0x883a08)=>{clearTimeout(_0x1e3eed),_0x1e3eed=setTimeout(()=>_0x3ebad5['apply'](this,_0x883a08),_0x2b1f64);};},'formatTimestamp'(_0x22835e){if(!_0x22835e)return'N/A';const _0x4295d5=new Date(_0x22835e);return _0x4295d5['toLocaleDateString']()+'\x20'+_0x4295d5['toLocaleTimeString']();},'getQueryParams'(){const _0x1c54ff=new URLSearchParams(window['location']['search']),_0x5c8767={};for(const [_0x1cf61c,_0x66c0b1]of _0x1c54ff){_0x5c8767[_0x1cf61c]=_0x66c0b1;}return _0x5c8767;},'formatDuration'(_0x3633d7,_0x474aeb){if(!_0x3633d7)return'N/A';const _0x3e7688=new Date(_0x3633d7),_0x15a242=_0x474aeb?new Date(_0x474aeb):new Date(),_0x3fcf9d=_0x15a242-_0x3e7688;if(_0x3fcf9d<0x0)return'0s';const _0x5ee2e0=Math['floor'](_0x3fcf9d/0x3e8),_0x238237=Math['floor'](_0x5ee2e0/0x3c),_0x5d9ce8=Math['floor'](_0x238237/0x3c),_0x4cd574=Math['floor'](_0x5d9ce8/0x18);if(_0x5ee2e0<0x3c)return _0x5ee2e0+'s';if(_0x238237<0x3c)return _0x238237+'m\x20'+_0x5ee2e0%0x3c+'s';if(_0x5d9ce8<0x18)return _0x5d9ce8+'h\x20'+_0x238237%0x3c+'m\x20'+_0x5ee2e0%0x3c+'s';return _0x4cd574+'d\x20'+_0x5d9ce8%0x18+'h\x20'+_0x238237%0x3c+'m';},'renderMarkdown'(_0x35c3e2,_0x5693e8={}){if(!_0x35c3e2)return'';_0x35c3e2=this['rewriteAttachmentLinks'](_0x35c3e2,_0x5693e8),_0x35c3e2=this['rewriteColorSyntax'](_0x35c3e2);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x35c3e2,_0x5693e8);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x35c3e2);}catch(_0x13caae){return console['error']('Markdown\x20parsing\x20error:',_0x13caae),this['renderMarkdownFallback'](_0x35c3e2,_0x5693e8);}},'rewriteAttachmentLinks'(_0x359c5d,_0x478007={}){const _0x371a88=typeof _0x478007['resolveAttachmentUrl']==='function'?_0x478007['resolveAttachmentUrl']:_0x478007['taskId']?_0xfda62f=>API_BASE+'/tasks/'+_0x478007['taskId']+'/attachments/'+encodeURIComponent(_0xfda62f):null;if(!_0x371a88)return _0x359c5d;return String(_0x359c5d)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x58e661,_0x2b3a7c)=>{const _0xd5c11=String(_0x2b3a7c||'')['trim']();if(!_0xd5c11)return _0x58e661;let _0x14eecf=_0xd5c11;try{_0x14eecf=decodeURIComponent(_0xd5c11);}catch{}const _0x100b1c=_0x371a88(_0x14eecf);if(!_0x100b1c)return _0x58e661;return']('+_0x100b1c+')';});},'rewriteColorSyntax'(_0x1c1e98){if(!_0x1c1e98)return _0x1c1e98;return String(_0x1c1e98)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x52f966,_0x147c3e,_0x45a1f7)=>{const _0xf1e650=this['rewriteColorSyntax'](_0x45a1f7);return'<span\x20style=\x22color:\x20'+_0x147c3e+'\x22>'+_0xf1e650+'</span>';});},'renderMarkdownFallback'(_0x47df1f,_0x2599d5={}){if(!_0x47df1f)return'';_0x47df1f=_0x47df1f['replace'](/\r\n/g,'\x0a'),_0x47df1f=_0x47df1f['replace'](/\r/g,'\x0a'),_0x47df1f=this['rewriteAttachmentLinks'](_0x47df1f,_0x2599d5);let _0x22039d=this['escapeHtml'](_0x47df1f);return _0x22039d=_0x22039d['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x22039d=_0x22039d['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x22039d=_0x22039d['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x22039d=_0x22039d['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x22039d=_0x22039d['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x22039d=_0x22039d['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x22039d=_0x22039d['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x22039d=_0x22039d['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x22039d=_0x22039d['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x22039d=_0x22039d['replace'](/\n\n/g,'</p><p>'),_0x22039d=_0x22039d['replace'](/\n/g,'<br>'),'<p>'+_0x22039d+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x51ff77=new Uint8Array(0x10);crypto['getRandomValues'](_0x51ff77),_0x51ff77[0x6]=_0x51ff77[0x6]&0xf|0x40,_0x51ff77[0x8]=_0x51ff77[0x8]&0x3f|0x80;const _0x1ae7a3=Array['from'](_0x51ff77,_0x384d8e=>_0x384d8e['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x1ae7a3['slice'](0x0,0x8)+'-'+_0x1ae7a3['slice'](0x8,0xc)+'-'+_0x1ae7a3['slice'](0xc,0x10)+'-'+_0x1ae7a3['slice'](0x10,0x14)+'-'+_0x1ae7a3['slice'](0x14);}};export class CustomSelect{constructor(_0x567263,_0x2f6079={}){this['nativeSelect']=_0x567263,this['options']=_0x2f6079,this['isOpen']=![],this['selectedValue']=_0x567263['value']||'',this['searchable']=_0x2f6079['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x41d808=document['createElement']('div');_0x41d808['className']='custom-select';const _0xc1e7d0=document['createElement']('div');_0xc1e7d0['className']='custom-select-trigger',_0xc1e7d0['setAttribute']('tabindex','0'),_0xc1e7d0['setAttribute']('role','button'),_0xc1e7d0['setAttribute']('aria-haspopup','listbox');const _0x5174f6=document['createElement']('span');_0x5174f6['className']='custom-select-trigger-text';const _0x5a117f=document['createElement']('span');_0x5a117f['className']='custom-select-arrow',_0x5a117f['textContent']='▼',_0xc1e7d0['appendChild'](_0x5174f6),_0xc1e7d0['appendChild'](_0x5a117f);const _0x1df1e8=document['createElement']('div');_0x1df1e8['className']='custom-select-dropdown',_0x1df1e8['setAttribute']('role','listbox');if(this['searchable']){const _0x122aa9=document['createElement']('div');_0x122aa9['className']='custom-select-search';const _0x40ff17=document['createElement']('input');_0x40ff17['type']='text',_0x40ff17['className']='custom-select-search-input',_0x40ff17['placeholder']='Type\x20to\x20search...',_0x40ff17['setAttribute']('aria-label','Search\x20options'),_0x40ff17['addEventListener']('input',_0x16e4c5=>{this['searchQuery']=_0x16e4c5['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x40ff17['addEventListener']('keydown',_0x5a126=>{if(_0x5a126['key']==='Escape')_0x5a126['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x5a126['key']==='Enter'){_0x5a126['preventDefault'](),_0x5a126['stopPropagation']();const _0x1682ed=_0x1df1e8['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x1682ed){const _0x4d020c=_0x1682ed['getAttribute']('data-value');this['select'](_0x4d020c);}}}}),_0x122aa9['appendChild'](_0x40ff17),_0x1df1e8['appendChild'](_0x122aa9),this['searchInput']=_0x40ff17;}const _0x338ef=document['createElement']('div');_0x338ef['className']='custom-select-options',_0x1df1e8['appendChild'](_0x338ef),_0x41d808['appendChild'](_0xc1e7d0),_0x41d808['appendChild'](_0x1df1e8),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x41d808,this['nativeSelect']),this['wrapper']=_0x41d808,this['trigger']=_0xc1e7d0,this['triggerText']=_0x5174f6,this['dropdown']=_0x1df1e8,this['optionsContainer']=_0x338ef,_0xc1e7d0['addEventListener']('click',()=>this['toggle']()),_0xc1e7d0['addEventListener']('keydown',_0x5de506=>this['handleKeydown'](_0x5de506)),document['addEventListener']('click',_0x22c4d5=>{!_0x41d808['contains'](_0x22c4d5['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x2a7fd9=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x2a7fd9['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x1b1f6d=new MutationObserver(()=>{this['updateDisabledState']();});_0x1b1f6d['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x13dc71=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x13dc71['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x5b3321=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x5b3321),this['trigger']['setAttribute']('aria-disabled',_0x5b3321?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x5b3321?'-1':'0'),_0x5b3321&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x2655f6=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x129ce8=_0x2655f6['filter'](_0x31978e=>!_0x31978e['disabled']&&!_0x31978e['hidden']);_0x2655f6['forEach']((_0x432cb2,_0x23a392)=>{const _0x2ce75=document['createElement']('div');_0x2ce75['className']='custom-select-option',_0x2ce75['textContent']=_0x432cb2['textContent'],_0x2ce75['setAttribute']('data-value',_0x432cb2['value']),_0x2ce75['setAttribute']('data-index',_0x23a392),_0x2ce75['setAttribute']('role','option'),_0x432cb2['disabled']?_0x2ce75['classList']['add']('disabled'):_0x2ce75['addEventListener']('click',()=>this['select'](_0x432cb2['value'])),_0x432cb2['value']===this['selectedValue']&&_0x2ce75['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0x2ce75),this['allOptions']['push']({'element':_0x2ce75,'text':_0x432cb2['textContent']['toLowerCase'](),'value':_0x432cb2['value'],'disabled':_0x432cb2['disabled']});});if(this['searchable']&&this['searchInput']){const _0x29d506=this['searchInput']['parentElement'];_0x129ce8['length']>0x3?_0x29d506['style']['display']='':_0x29d506['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0x17a147=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x4f25a3=>{if(!_0x17a147||_0x4f25a3['disabled'])_0x4f25a3['element']['style']['display']='';else{const _0x45ec49=_0x4f25a3['text']['includes'](_0x17a147);_0x4f25a3['element']['style']['display']=_0x45ec49?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x35418b){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x35418b,this['nativeSelect']['value']=_0x35418b;const _0x287abb=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x287abb),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0xab781c=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0xab781c&&(this['triggerText']['textContent']=_0xab781c['textContent'],_0xab781c['disabled']||_0xab781c['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x3ab874=>{_0x3ab874['getAttribute']('data-value')===this['selectedValue']?_0x3ab874['classList']['add']('selected'):_0x3ab874['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 _0x5bbba0=window['getComputedStyle'](this['dropdown']);if(_0x5bbba0['position']==='fixed'){const _0x514ab2=this['trigger']['getBoundingClientRect'](),_0x5a2426=parseInt(_0x5bbba0['maxHeight'])||0xc8,_0x32e8cb=window['innerHeight'],_0x1bb3bc=_0x32e8cb-_0x514ab2['bottom'],_0x5af3b7=_0x514ab2['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x3c1a62;_0x1bb3bc<_0x5a2426&&_0x5af3b7>_0x1bb3bc?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x32e8cb-_0x514ab2['top']+'px',_0x3c1a62=Math['min'](_0x5a2426,_0x5af3b7-0xa),this['dropdown']['style']['maxHeight']=_0x3c1a62+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x514ab2['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x3c1a62=Math['min'](_0x5a2426,_0x1bb3bc-0xa),this['dropdown']['style']['maxHeight']=_0x3c1a62+'px');if(this['optionsContainer']){let _0x4daf98=_0x3c1a62;if(this['searchInput']){const _0x1ede44=this['searchInput']['parentElement'];_0x1ede44&&(_0x4daf98-=_0x1ede44['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x4daf98)+'px';}this['dropdown']['style']['left']=_0x514ab2['left']+'px',this['dropdown']['style']['width']=_0x514ab2['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0x4b3009=this['searchInput']['parentElement'];_0x4b3009&&_0x4b3009['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'](_0x41fd18){if(this['nativeSelect']['disabled'])return;if(_0x41fd18['key']==='Enter'||_0x41fd18['key']==='\x20')_0x41fd18['preventDefault'](),this['toggle']();else _0x41fd18['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x20fb00='\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',_0x20fb00),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x453571=document['getElementById']('confirm-dialog-close'),_0x4857a3=document['getElementById']('confirm-dialog-cancel'),_0x37cb30=document['getElementById']('confirm-dialog-confirm'),_0x41cc6b=this['_modal']['querySelector']('.modal-overlay');_0x453571['addEventListener']('click',()=>this['_resolve'](![])),_0x4857a3['addEventListener']('click',()=>this['_resolve'](![])),_0x37cb30['addEventListener']('click',()=>this['_resolve'](!![])),_0x41cc6b['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x260821=>{if(_0x260821['key']==='Escape')_0x260821['preventDefault'](),this['_resolve'](![]);else _0x260821['key']==='Enter'&&(_0x260821['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0xaf269e,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0xff39d=>{this['_resolvePromise']=_0xff39d,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0xaf269e;const _0x5bb63a=document['getElementById']('confirm-dialog-cancel'),_0xadc58=document['getElementById']('confirm-dialog-confirm');_0x5bb63a['textContent']=cancelText,_0xadc58['textContent']=confirmText,_0xadc58['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0xadc58['focus']();});},'_resolve'(_0x3d2375){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x3d2375),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x3e3b17,_0x25c371={}){this['container']=_0x3e3b17,this['options']={'placeholder':_0x25c371['placeholder']||'Type\x20to\x20search...','maxItems':_0x25c371['maxItems']||0x64,'loadItems':_0x25c371['loadItems']||(async()=>[]),'renderItem':_0x25c371['renderItem']||(_0x459929=>({'primary':String(_0x459929),'secondary':''})),'onSelect':_0x25c371['onSelect']||(()=>{}),'filterItems':_0x25c371['filterItems']||null,'getItemValue':_0x25c371['getItemValue']||(_0xbca5b9=>_0xbca5b9),'sortItems':_0x25c371['sortItems']||null,'debounceMs':_0x25c371['debounceMs']||0xc8,'minCharsForSearch':_0x25c371['minCharsForSearch']||0x0,'emptyMessage':_0x25c371['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x25c371['loadingMessage']||'Loading...','preload':_0x25c371['preload']!==![],'searchMode':_0x25c371['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',_0x43001c=>this['onBlur'](_0x43001c)),this['input']['addEventListener']('input',_0x536f04=>this['onInput'](_0x536f04)),this['input']['addEventListener']('keydown',_0x38f5a0=>this['onKeydown'](_0x38f5a0)),this['clearBtn']['addEventListener']('mousedown',_0x78fe83=>{_0x78fe83['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x21e3c5=>{_0x21e3c5['preventDefault']();}),document['addEventListener']('click',_0x565e7f=>{!this['wrapper']['contains'](_0x565e7f['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(_0xc28494){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0xc28494);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x274d68){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x4a907e){const _0x3a05f7=_0x4a907e['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3a05f7);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3a05f7):this['loadAndShow'](_0x3a05f7);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x48daba){switch(_0x48daba['key']){case'ArrowDown':_0x48daba['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x48daba['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x48daba['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x48daba['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x5de43e){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x183d7c=this['selectedIndex']+_0x5de43e;if(_0x183d7c>=0x0&&_0x183d7c<this['filteredItems']['length']){this['selectedIndex']=_0x183d7c,this['updateSelectionHighlight']();const _0x5d1bb9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x5d1bb9[this['selectedIndex']]&&_0x5d1bb9[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x16f963=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x16f963['forEach']((_0x142f2f,_0x27bc54)=>{_0x142f2f['classList']['toggle']('keyboard-selected',_0x27bc54===this['selectedIndex']);});}async['loadAndShow'](_0x247c43){this['showLoading']();try{const _0x20fdbd=await this['options']['loadItems'](_0x247c43);if(this['options']['searchMode']==='server'){let _0x7b2552=_0x20fdbd;this['options']['sortItems']&&(_0x7b2552=this['options']['sortItems']([..._0x20fdbd]));this['filteredItems']=_0x7b2552;const _0x23394a=this['filteredItems']['length']>=this['options']['maxItems'];_0x23394a&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x23394a),this['open']();}else this['allItems']=_0x20fdbd,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x247c43);}catch(_0x31a145){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x31a145),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x419e8e){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x419e8e):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x464105=this['filteredItems']['length']>=this['options']['maxItems'];_0x464105&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x464105),this['open']();}['renderItems'](_0x57524b){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']((_0x454d35,_0x4d5f68)=>{const _0x433a79=document['createElement']('div');_0x433a79['className']='autocomplete-select-item',_0x433a79['setAttribute']('role','option'),_0x433a79['setAttribute']('data-index',_0x4d5f68);const _0x5bdc67=this['options']['renderItem'](_0x454d35);let _0x22b2ef='';_0x5bdc67['icon']&&(_0x22b2ef='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x5bdc67['iconClass']||'')+'\x22>'+_0x5bdc67['icon']+'</span>'),_0x433a79['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x22b2ef+'\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'](_0x5bdc67['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5bdc67['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x5bdc67['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x433a79['addEventListener']('click',()=>{this['selectItem'](_0x454d35);}),_0x433a79['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x4d5f68,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x433a79);}),_0x57524b?(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'](_0x304a7c){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x304a7c)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0xd91139){this['selectedItem']=_0xd91139;const _0x16a22d=this['options']['renderItem'](_0xd91139);this['input']['value']=_0x16a22d['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0xd91139);}['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'](_0x24395f){if(_0x24395f){this['selectedItem']=_0x24395f;const _0x5e05f9=this['options']['renderItem'](_0x24395f);this['input']['value']=_0x5e05f9['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0x5bedca){this['allItems']=_0x5bedca,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'](_0x341b6c){this['input']['placeholder']=_0x341b6c;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x48c6db=null){const _0x1de539=document['getElementById']('admin-menu-container'),_0x5372cb=document['getElementById']('admin-menu-btn'),_0x4345d6=document['getElementById']('admin-menu');if(!_0x1de539||!_0x5372cb||!_0x4345d6)return;try{!_0x48c6db&&(_0x48c6db=await API['getCurrentUser']());if(_0x48c6db){const _0x45ec78=window['Permissions'],_0x463836=_0x45ec78['hasServerPermission'](_0x48c6db,'*')||_0x45ec78['hasEnvPermission'](_0x48c6db,'environments:manage')||_0x45ec78['hasServerPermission'](_0x48c6db,'users:create')||_0x45ec78['hasTeamPermission'](_0x48c6db,'teams:manage')||_0x45ec78['hasEnvPermission'](_0x48c6db,'environments:view_details');if(!_0x463836)return;_0x1de539['hidden']=![];if(!_0x45ec78['hasServerPermission'](_0x48c6db,'*')){const _0x39f8f5=_0x4345d6['querySelectorAll']('.admin-menu-item');_0x39f8f5['forEach'](_0x2376ea=>{const _0x1e566d=_0x2376ea['querySelector']('.option-text')?.['textContent']?.['trim']();_0x1e566d==='Users'&&!_0x45ec78['hasServerPermission'](_0x48c6db,'users:create')&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Skills'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Server\x20Settings'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Server\x20Health'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Git\x20History'&&(_0x2376ea['hidden']=!![]),_0x1e566d==='Roles'&&(_0x2376ea['hidden']=!![]);});}_0x5372cb['addEventListener']('click',_0x1c8cca=>{_0x1c8cca['stopPropagation']();const _0xb1192f=document['getElementById']('actions-menu');if(_0xb1192f)_0xb1192f['hidden']=!![];_0x4345d6['hidden']=!_0x4345d6['hidden'];}),document['addEventListener']('click',_0x172a7d=>{!_0x4345d6['hidden']&&!_0x5372cb['contains'](_0x172a7d['target'])&&!_0x4345d6['contains'](_0x172a7d['target'])&&(_0x4345d6['hidden']=!![]);}),document['addEventListener']('keydown',_0x155a9f=>{_0x155a9f['key']==='Escape'&&!_0x4345d6['hidden']&&(_0x4345d6['hidden']=!![]);});const _0x48e4fe=document['getElementById']('server-health-btn');_0x48e4fe&&_0x48e4fe['addEventListener']('click',async()=>{_0x4345d6['hidden']=!![];const {openServerHealthModal:_0x11be30}=await import('./server-health.js');_0x11be30();});}}catch(_0x5ee3c1){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x5ee3c1['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};
1
+ function detectApiBase(){const _0x75a9ac=window['location']['pathname'],_0x542a01=_0x75a9ac['match'](/^(\/tasks\/[^/]+\/app\/[^/]+)/);if(_0x542a01)return console['log']('[CoderFlow]\x20Detected\x20proxied\x20context,\x20using\x20base:',_0x542a01[0x1]),_0x542a01[0x1];return'';}const API_BASE=detectApiBase();export const API={async 'getTaskStats'(_0x4c8d1f={}){const _0x13bdad=new URLSearchParams();_0x4c8d1f['userId']&&_0x13bdad['set']('userId',String(_0x4c8d1f['userId']));_0x4c8d1f['automation']&&_0x13bdad['set']('automation',String(_0x4c8d1f['automation']));const _0x1e8a52=API_BASE+'/tasks/stats'+(_0x13bdad['toString']()?'?'+_0x13bdad['toString']():''),_0x4a3ae9=await fetch(_0x1e8a52);if(!_0x4a3ae9['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20stats:\x20'+_0x4a3ae9['statusText']);return await _0x4a3ae9['json']();},async 'getTasks'(_0x170024={}){const _0xa71c07=new URLSearchParams();_0x170024['status']&&_0xa71c07['set']('status',String(_0x170024['status']));_0x170024['environment']&&_0xa71c07['set']('environment',String(_0x170024['environment']));_0x170024['automation']&&_0xa71c07['set']('automation',String(_0x170024['automation']));if(_0x170024['include']){const _0xfd5765=Array['isArray'](_0x170024['include'])?_0x170024['include']['join'](','):String(_0x170024['include']);_0xfd5765&&_0xa71c07['set']('include',_0xfd5765);}_0x170024['filter']&&_0xa71c07['set']('filter',String(_0x170024['filter']));_0x170024['page']&&_0xa71c07['set']('page',String(_0x170024['page']));_0x170024['limit']&&_0xa71c07['set']('limit',String(_0x170024['limit']));_0x170024['userId']&&_0xa71c07['set']('userId',String(_0x170024['userId']));_0x170024['search']&&_0xa71c07['set']('search',String(_0x170024['search']));_0x170024['includeChildTasks']&&_0xa71c07['set']('includeChildTasks','true');const _0x30f377=API_BASE+'/tasks'+(_0xa71c07['toString']()?'?'+_0xa71c07['toString']():''),_0x4aba9c=await fetch(_0x30f377);if(!_0x4aba9c['ok'])throw new Error('Failed\x20to\x20fetch\x20tasks:\x20'+_0x4aba9c['statusText']);return await _0x4aba9c['json']();},async 'getAutomations'(_0x6c443a={}){const _0x33bd58=new URLSearchParams();_0x6c443a['environment']&&_0x33bd58['set']('environment',String(_0x6c443a['environment']));const _0x2aedc4=await fetch(API_BASE+'/api/automations'+(_0x33bd58['toString']()?'?'+_0x33bd58['toString']():''));if(!_0x2aedc4['ok']){const _0x41b5ae=await _0x2aedc4['json']()['catch'](()=>({}));throw new Error(_0x41b5ae['message']||_0x41b5ae['error']||'Failed\x20to\x20fetch\x20automations:\x20'+_0x2aedc4['statusText']);}return await _0x2aedc4['json']();},async 'getAutomation'(_0x1c3336){const _0x30a3ef=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x1c3336));if(!_0x30a3ef['ok']){const _0x208196=await _0x30a3ef['json']()['catch'](()=>({}));throw new Error(_0x208196['message']||_0x208196['error']||'Failed\x20to\x20fetch\x20automation:\x20'+_0x30a3ef['statusText']);}return await _0x30a3ef['json']();},async 'createAutomation'(_0x55ba33){const _0x28cf59=await fetch(API_BASE+'/api/automations',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x55ba33||{})});if(!_0x28cf59['ok']){const _0x5bed34=await _0x28cf59['json']()['catch'](()=>({}));throw new Error(_0x5bed34['message']||_0x5bed34['error']||'Failed\x20to\x20create\x20automation:\x20'+_0x28cf59['statusText']);}return await _0x28cf59['json']();},async 'updateAutomation'(_0x40f813,_0x110445){const _0x1be80f=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x40f813),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x110445||{})});if(!_0x1be80f['ok']){const _0x2180e4=await _0x1be80f['json']()['catch'](()=>({}));throw new Error(_0x2180e4['message']||_0x2180e4['error']||'Failed\x20to\x20update\x20automation:\x20'+_0x1be80f['statusText']);}return await _0x1be80f['json']();},async 'deleteAutomation'(_0x2f9332){const _0x5a8182=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x2f9332),{'method':'DELETE'});if(!_0x5a8182['ok']){const _0x27333b=await _0x5a8182['json']()['catch'](()=>({}));throw new Error(_0x27333b['message']||_0x27333b['error']||'Failed\x20to\x20delete\x20automation:\x20'+_0x5a8182['statusText']);}return await _0x5a8182['json']();},async 'triggerAutomation'(_0x5c45a5){const _0x4693dc=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x5c45a5)+'/trigger',{'method':'POST'});if(!_0x4693dc['ok']){const _0x4e4de3=await _0x4693dc['json']()['catch'](()=>({}));throw new Error(_0x4e4de3['message']||_0x4e4de3['error']||'Failed\x20to\x20trigger\x20automation:\x20'+_0x4693dc['statusText']);}return await _0x4693dc['json']();},async 'setAutomationEnabled'(_0x394b87,_0x479b31){const _0x128205=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x394b87)+'/enabled',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'enabled':!!_0x479b31})});if(!_0x128205['ok']){const _0x214c87=await _0x128205['json']()['catch'](()=>({}));throw new Error(_0x214c87['message']||_0x214c87['error']||'Failed\x20to\x20update\x20automation\x20status:\x20'+_0x128205['statusText']);}return await _0x128205['json']();},async 'getAutomationHistory'(_0x55a8ce,_0x3993a9=0x32){const _0x130482=await fetch(API_BASE+'/api/automations/'+encodeURIComponent(_0x55a8ce)+'/history?limit='+encodeURIComponent(String(_0x3993a9)));if(!_0x130482['ok']){const _0x45f50b=await _0x130482['json']()['catch'](()=>({}));throw new Error(_0x45f50b['message']||_0x45f50b['error']||'Failed\x20to\x20fetch\x20automation\x20history:\x20'+_0x130482['statusText']);}return await _0x130482['json']();},async 'getTask'(_0x24aab2,_0x1cd294={}){const _0xed54e8=new URLSearchParams();if(_0x1cd294['include']){const _0xeab505=Array['isArray'](_0x1cd294['include'])?_0x1cd294['include']['join'](','):String(_0x1cd294['include']);if(_0xeab505)_0xed54e8['set']('include',_0xeab505);}const _0xbfacbb=await fetch(API_BASE+'/tasks/'+_0x24aab2+(_0xed54e8['toString']()?'?'+_0xed54e8['toString']():''));if(!_0xbfacbb['ok'])throw new Error('Failed\x20to\x20fetch\x20task:\x20'+_0xbfacbb['statusText']);return await _0xbfacbb['json']();},async 'getTaskResults'(_0x44a326){const _0x4a2470=await fetch(API_BASE+'/tasks/'+_0x44a326+'/results');if(!_0x4a2470['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20results:\x20'+_0x4a2470['statusText']);return await _0x4a2470['json']();},async 'getTaskPatches'(_0x4acf4a){const _0xa529de=await fetch(API_BASE+'/tasks/'+_0x4acf4a+'/patches');if(!_0xa529de['ok'])throw new Error('Failed\x20to\x20fetch\x20patches:\x20'+_0xa529de['statusText']);return await _0xa529de['json']();},async 'getTaskAttachments'(_0x3e4785){const _0x1ffb64=await fetch(API_BASE+'/tasks/'+_0x3e4785+'/attachments');if(!_0x1ffb64['ok'])throw new Error('Failed\x20to\x20fetch\x20attachments:\x20'+_0x1ffb64['statusText']);return await _0x1ffb64['json']();},async 'uploadAttachments'(_0x4df27e,_0x39685b){const _0x5e1e37=new FormData();for(const _0x4722be of _0x39685b){_0x5e1e37['append']('attachments',_0x4722be);}const _0x2b6377=await fetch(API_BASE+'/tasks/'+_0x4df27e+'/attachments',{'method':'POST','body':_0x5e1e37});if(!_0x2b6377['ok'])throw new Error('Failed\x20to\x20upload\x20attachments:\x20'+_0x2b6377['statusText']);return await _0x2b6377['json']();},async 'isAINameGenerationAvailable'(){try{const _0x53c8d3=await fetch(API_BASE+'/tasks/ai-name-available');if(!_0x53c8d3['ok'])return{'available':![],'reason':'API\x20request\x20failed'};return await _0x53c8d3['json']();}catch(_0x7b662a){return{'available':![],'reason':_0x7b662a['message']};}},async 'generateTaskName'(_0x46319f){try{const _0x27cc1b=await fetch(API_BASE+'/tasks/generate-name',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'instructions':_0x46319f})});return await _0x27cc1b['json']();}catch(_0x2bcf64){return{'success':![],'error':_0x2bcf64['message']};}},async 'createTask'(_0x27521a){let _0x2926be,_0x4e0223={};if(_0x27521a['files']&&_0x27521a['files']['length']>0x0){const _0x4ab1b6=new FormData();for(const [_0x42bdb5,_0x50a17d]of Object['entries'](_0x27521a)){if(_0x42bdb5!=='files'){if(_0x50a17d==null)continue;typeof _0x50a17d==='object'?_0x4ab1b6['append'](_0x42bdb5,JSON['stringify'](_0x50a17d)):_0x4ab1b6['append'](_0x42bdb5,String(_0x50a17d));}}for(const _0x349ec6 of _0x27521a['files']){_0x4ab1b6['append']('attachments',_0x349ec6);}_0x2926be=_0x4ab1b6;}else _0x4e0223['Content-Type']='application/json',_0x2926be=JSON['stringify'](_0x27521a);const _0x5dc775=await fetch(API_BASE+'/tasks',{'method':'POST','headers':_0x4e0223,'body':_0x2926be});if(!_0x5dc775['ok']){const _0x5b54c2=await _0x5dc775['json'](),_0x445126=new Error(_0x5b54c2['error']||'Failed\x20to\x20create\x20task:\x20'+_0x5dc775['statusText']),{message:_0x465c2f,..._0x4b4465}=_0x5b54c2;Object['assign'](_0x445126,_0x4b4465);throw _0x445126;}return await _0x5dc775['json']();},async 'createTestTask'(_0x5d2c6c){const _0x3c47f4=await fetch(API_BASE+'/test-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5d2c6c)});if(!_0x3c47f4['ok']){const _0x38da5b=await _0x3c47f4['json']();throw new Error(_0x38da5b['error']||'Failed\x20to\x20create\x20test\x20task:\x20'+_0x3c47f4['statusText']);}return await _0x3c47f4['json']();},async 'createEphemeralTest'(_0x29952e){const _0x41a78d=await fetch(API_BASE+'/test',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x29952e)});if(!_0x41a78d['ok']){const _0x1619bd=await _0x41a78d['json']();throw new Error(_0x1619bd['error']||'Failed\x20to\x20create\x20ephemeral\x20test:\x20'+_0x41a78d['statusText']);}return await _0x41a78d['json']();},async 'createDeployTask'(_0xd0ae2){const _0x442d2e=await fetch(API_BASE+'/deploy-task',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xd0ae2)});if(!_0x442d2e['ok']){const _0x4b651e=await _0x442d2e['json']();throw new Error(_0x4b651e['error']||'Failed\x20to\x20create\x20deploy\x20task:\x20'+_0x442d2e['statusText']);}return await _0x442d2e['json']();},async 'getEnvironments'(){const _0x2a3faa=await fetch(API_BASE+'/environments');if(!_0x2a3faa['ok'])throw new Error('Failed\x20to\x20fetch\x20environments:\x20'+_0x2a3faa['statusText']);return await _0x2a3faa['json']();},async 'getEnvironment'(_0x1d8654){const _0x13998e=await fetch(API_BASE+'/environments/'+_0x1d8654);if(!_0x13998e['ok'])throw new Error('Failed\x20to\x20fetch\x20environment:\x20'+_0x13998e['statusText']);return await _0x13998e['json']();},async 'getEnvironmentRepoHistory'(_0x280327,_0x494d68,_0x8c8fb4={}){if(!_0x280327||!_0x494d68)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0xd3aa41=new URLSearchParams();if(_0x8c8fb4['limit'])_0xd3aa41['set']('limit',String(_0x8c8fb4['limit']));if(_0x8c8fb4['offset'])_0xd3aa41['set']('offset',String(_0x8c8fb4['offset']));if(_0x8c8fb4['search'])_0xd3aa41['set']('search',String(_0x8c8fb4['search']));if(_0x8c8fb4['branch'])_0xd3aa41['set']('branch',String(_0x8c8fb4['branch']));const _0x94a480=API_BASE+'/environments/'+encodeURIComponent(_0x280327)+'/repos/'+encodeURIComponent(_0x494d68)+'/git/history',_0x4c3f40=await fetch(''+_0x94a480+(_0xd3aa41['toString']()?'?'+_0xd3aa41['toString']():''));if(!_0x4c3f40['ok']){const _0x41255a=await _0x4c3f40['json']()['catch'](()=>({}));throw new Error(_0x41255a['error']||'Failed\x20to\x20fetch\x20repo\x20history:\x20'+_0x4c3f40['statusText']);}return await _0x4c3f40['json']();},async 'getEnvironmentRepoCommit'(_0x1bb2af,_0x1edcb3,_0x953ff5){if(!_0x1bb2af||!_0x1edcb3||!_0x953ff5)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x164b3e=API_BASE+'/environments/'+encodeURIComponent(_0x1bb2af)+'/repos/'+encodeURIComponent(_0x1edcb3)+'/git/commits/'+encodeURIComponent(_0x953ff5),_0x5ee53d=await fetch(_0x164b3e);if(!_0x5ee53d['ok']){const _0x49a6d3=await _0x5ee53d['json']()['catch'](()=>({}));throw new Error(_0x49a6d3['error']||'Failed\x20to\x20fetch\x20commit\x20details:\x20'+_0x5ee53d['statusText']);}return await _0x5ee53d['json']();},async 'getEnvironmentRepoBranches'(_0x2331c3,_0x45599f){if(!_0x2331c3||!_0x45599f)throw new Error('Environment\x20and\x20repo\x20are\x20required');const _0x5e1604=API_BASE+'/environments/'+encodeURIComponent(_0x2331c3)+'/repos/'+encodeURIComponent(_0x45599f)+'/git/branches',_0x465c0e=await fetch(_0x5e1604);if(!_0x465c0e['ok']){const _0x621e13=await _0x465c0e['json']()['catch'](()=>({}));throw new Error(_0x621e13['error']||'Failed\x20to\x20fetch\x20branches:\x20'+_0x465c0e['statusText']);}return await _0x465c0e['json']();},async 'revertEnvironmentRepoCommit'(_0x5270a1,_0x5336ed,_0x4b7ff5,_0x361e04={}){if(!_0x5270a1||!_0x5336ed||!_0x4b7ff5)throw new Error('Environment,\x20repo,\x20and\x20hash\x20are\x20required');const _0x1e4fb7=await fetch(API_BASE+'/environments/'+encodeURIComponent(_0x5270a1)+'/repos/'+encodeURIComponent(_0x5336ed)+'/git/revert',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'hash':_0x4b7ff5,..._0x361e04})});if(!_0x1e4fb7['ok']){const _0x43a9e8=await _0x1e4fb7['json']()['catch'](()=>({}));throw new Error(_0x43a9e8['message']||_0x43a9e8['error']||'Failed\x20to\x20revert\x20commit:\x20'+_0x1e4fb7['statusText']);}return await _0x1e4fb7['json']();},async 'getTemplates'(_0x1b08c7={}){const _0x211761=new URLSearchParams();if(_0x1b08c7['include']){const _0x1af3a7=Array['isArray'](_0x1b08c7['include'])?_0x1b08c7['include']['join'](','):String(_0x1b08c7['include']);if(_0x1af3a7)_0x211761['set']('include',_0x1af3a7);}const _0x1664f4=await fetch(API_BASE+'/templates'+(_0x211761['toString']()?'?'+_0x211761['toString']():''));if(!_0x1664f4['ok'])throw new Error('Failed\x20to\x20fetch\x20templates:\x20'+_0x1664f4['statusText']);return await _0x1664f4['json']();},async 'getTemplatesForEnvironment'(_0x534a8e,_0x25b369={}){if(!_0x534a8e)throw new Error('Environment\x20name\x20is\x20required');const _0x34343b=new URLSearchParams();if(_0x25b369['include']){const _0x4e2167=Array['isArray'](_0x25b369['include'])?_0x25b369['include']['join'](','):String(_0x25b369['include']);if(_0x4e2167)_0x34343b['set']('include',_0x4e2167);}const _0xbdd070=await fetch(API_BASE+'/templates/'+_0x534a8e+(_0x34343b['toString']()?'?'+_0x34343b['toString']():''));if(!_0xbdd070['ok'])throw new Error('Failed\x20to\x20fetch\x20templates\x20for\x20'+_0x534a8e+':\x20'+_0xbdd070['statusText']);return await _0xbdd070['json']();},async 'getTemplate'(_0x1f567c,_0x5236ac,_0x35b4fa={}){if(!_0x1f567c||!_0x5236ac)throw new Error('Environment\x20and\x20template\x20are\x20required');const _0x367873=new URLSearchParams();if(_0x35b4fa['include']){const _0x1c4ae6=Array['isArray'](_0x35b4fa['include'])?_0x35b4fa['include']['join'](','):String(_0x35b4fa['include']);if(_0x1c4ae6)_0x367873['set']('include',_0x1c4ae6);}const _0x18c6ac=await fetch(API_BASE+'/templates/'+_0x1f567c+'/'+_0x5236ac+(_0x367873['toString']()?'?'+_0x367873['toString']():''));if(!_0x18c6ac['ok'])throw new Error('Failed\x20to\x20load\x20template:\x20'+_0x18c6ac['statusText']);return await _0x18c6ac['json']();},async 'getTaskLogs'(_0x1ec222,_0x2ca410={}){if(!_0x1ec222)throw new Error('Task\x20ID\x20is\x20required');const _0x191fb9=new URLSearchParams();_0x2ca410['tail']&&_0x191fb9['set']('tail',String(_0x2ca410['tail']));const _0x360ff4=await fetch(API_BASE+'/tasks/'+_0x1ec222+'/logs'+(_0x191fb9['toString']()?'?'+_0x191fb9['toString']():''));if(!_0x360ff4['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20logs:\x20'+_0x360ff4['statusText']);return await _0x360ff4['text']();},async 'getContainers'(){const _0x32ab37=await fetch(API_BASE+'/containers');if(!_0x32ab37['ok'])throw new Error('Failed\x20to\x20fetch\x20containers:\x20'+_0x32ab37['statusText']);return await _0x32ab37['json']();},async 'getContainer'(_0x4c5539){const _0x33f05d=await fetch(API_BASE+'/containers/'+_0x4c5539);if(!_0x33f05d['ok'])throw new Error('Failed\x20to\x20fetch\x20container:\x20'+_0x33f05d['statusText']);return await _0x33f05d['json']();},async 'startInteractiveContainer'(_0x48bc58){const _0x14a87a=await fetch(API_BASE+'/containers/interactive',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x48bc58)});if(!_0x14a87a['ok']){const _0x2f7409=await _0x14a87a['json']()['catch'](()=>({}));throw new Error(_0x2f7409['message']||'Failed\x20to\x20start\x20container:\x20'+_0x14a87a['statusText']);}return await _0x14a87a['json']();},async 'stopContainer'(_0x369e7e){const _0x33f278=await fetch(API_BASE+'/containers/'+_0x369e7e,{'method':'DELETE'});if(!_0x33f278['ok']){const _0x1291a5=await _0x33f278['json']()['catch'](()=>({}));throw new Error(_0x1291a5['message']||'Failed\x20to\x20stop\x20container:\x20'+_0x33f278['statusText']);}return await _0x33f278['json']();},async 'stopTask'(_0x4b75d4){if(!_0x4b75d4)throw new Error('Task\x20ID\x20is\x20required');const _0x28dad5=await fetch(API_BASE+'/tasks/'+_0x4b75d4+'/stop',{'method':'POST'});if(!_0x28dad5['ok']){const _0x5478f7=await _0x28dad5['json']()['catch'](()=>({}));throw new Error(_0x5478f7['error']||'Failed\x20to\x20stop\x20task:\x20'+_0x28dad5['statusText']);}return await _0x28dad5['json']();},async 'interruptTask'(_0x4e2400){if(!_0x4e2400)throw new Error('Task\x20ID\x20is\x20required');const _0x46841f=await fetch(API_BASE+'/tasks/'+_0x4e2400+'/interrupt',{'method':'POST'});if(!_0x46841f['ok']){const _0xfc1dbf=await _0x46841f['json']()['catch'](()=>({}));throw new Error(_0xfc1dbf['error']||_0xfc1dbf['message']||'Failed\x20to\x20interrupt\x20task:\x20'+_0x46841f['statusText']);}return await _0x46841f['json']();},async 'startTask'(_0xa6638e){if(!_0xa6638e)throw new Error('Task\x20ID\x20is\x20required');const _0x47ec0d=await fetch(API_BASE+'/tasks/'+_0xa6638e+'/start',{'method':'POST'});if(!_0x47ec0d['ok']){const _0x2306bd=await _0x47ec0d['json']()['catch'](()=>({}));throw new Error(_0x2306bd['error']||'Failed\x20to\x20start\x20task:\x20'+_0x47ec0d['statusText']);}return await _0x47ec0d['json']();},async 'deleteTask'(_0x1e1c90){if(!_0x1e1c90)throw new Error('Task\x20ID\x20is\x20required');const _0x198cd3=await fetch(API_BASE+'/tasks/'+_0x1e1c90,{'method':'DELETE'});if(!_0x198cd3['ok']){const _0x303914=await _0x198cd3['json']()['catch'](()=>({}));throw new Error(_0x303914['error']||'Failed\x20to\x20delete\x20task:\x20'+_0x198cd3['statusText']);}return await _0x198cd3['json']();},async 'refreshTasksFromDisk'(){const _0x4beef1=await fetch(API_BASE+'/tasks/refresh',{'method':'POST'});if(!_0x4beef1['ok']){const _0x326f2e=await _0x4beef1['json']()['catch'](()=>({}));throw new Error(_0x326f2e['error']||'Failed\x20to\x20refresh\x20tasks:\x20'+_0x4beef1['statusText']);}return await _0x4beef1['json']();},async 'approveTask'(_0x31a261,_0x467b0b={}){if(!_0x31a261)throw new Error('Task\x20ID\x20is\x20required');const _0x401877={'commit_message':_0x467b0b['commit_message']||'','pull':_0x467b0b['pull']??![],'push':_0x467b0b['push']??![]};_0x467b0b['new_branch']&&(_0x401877['new_branch']=_0x467b0b['new_branch']);const _0xaf8fb1=await fetch(API_BASE+'/tasks/'+_0x31a261+'/approve',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x401877)});if(!_0xaf8fb1['ok']){const _0x36aec2=await _0xaf8fb1['json']()['catch'](()=>({}));let _0x1951c1=_0x36aec2['error']||_0x36aec2['message']||'Failed\x20to\x20approve\x20task:\x20'+_0xaf8fb1['statusText'];if(_0x36aec2['results']&&Array['isArray'](_0x36aec2['results'])){const _0x3274b3=_0x36aec2['results']['filter'](_0x2509f3=>!_0x2509f3['success']&&_0x2509f3['error']);_0x3274b3['length']>0x0&&(_0x1951c1=_0x3274b3[0x0]['error']);}throw new Error(_0x1951c1);}return await _0xaf8fb1['json']();},async 'getPullRequestInfo'(_0x4405fe){if(!_0x4405fe)throw new Error('Task\x20ID\x20is\x20required');const _0x471518=await fetch(API_BASE+'/tasks/'+_0x4405fe+'/pull-request-info');if(!_0x471518['ok']){const _0x462944=await _0x471518['json']()['catch'](()=>({}));throw new Error(_0x462944['error']||_0x462944['message']||'Failed\x20to\x20get\x20pull\x20request\x20info:\x20'+_0x471518['statusText']);}return await _0x471518['json']();},async 'createPullRequests'(_0x35f221,_0x378d0c){if(!_0x35f221)throw new Error('Task\x20ID\x20is\x20required');if(!_0x378d0c||!Array['isArray'](_0x378d0c))throw new Error('repos\x20array\x20is\x20required');const _0x4b90c5=await fetch(API_BASE+'/tasks/'+_0x35f221+'/pull-requests',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repos':_0x378d0c})});if(!_0x4b90c5['ok']){const _0x8cc989=await _0x4b90c5['json']()['catch'](()=>({}));let _0x108817=_0x8cc989['error']||_0x8cc989['message']||'Failed\x20to\x20create\x20pull\x20requests:\x20'+_0x4b90c5['statusText'];if(_0x8cc989['results']&&Array['isArray'](_0x8cc989['results'])){const _0x3ae796=_0x8cc989['results']['filter'](_0x71bd0a=>!_0x71bd0a['success']&&_0x71bd0a['error']);_0x3ae796['length']>0x0&&(_0x108817=_0x3ae796[0x0]['error']);}throw new Error(_0x108817);}return await _0x4b90c5['json']();},async 'syncRepos'(_0x623e5e){if(!_0x623e5e)throw new Error('Task\x20ID\x20is\x20required');const _0x43b93c=await fetch(API_BASE+'/tasks/'+_0x623e5e+'/sync-repos',{'method':'POST'});if(!_0x43b93c['ok']){const _0x1ed348=await _0x43b93c['json']()['catch'](()=>({}));throw new Error(_0x1ed348['error']||_0x1ed348['message']||'Failed\x20to\x20sync\x20repositories:\x20'+_0x43b93c['statusText']);}return await _0x43b93c['json']();},async 'getIbmiSyncInfo'(_0xb0c116){if(!_0xb0c116)throw new Error('Task\x20ID\x20is\x20required');const _0x35aa4b=await fetch(API_BASE+'/tasks/'+_0xb0c116+'/ibmi-sync-info');if(!_0x35aa4b['ok']){const _0x259cf5=await _0x35aa4b['json']()['catch'](()=>({}));throw new Error(_0x259cf5['error']||_0x259cf5['message']||'Failed\x20to\x20fetch\x20sync\x20info');}return await _0x35aa4b['json']();},async 'getSyncFiles'(_0x4c9d7d){if(!_0x4c9d7d)throw new Error('Task\x20ID\x20is\x20required');const _0x1a656d=await fetch(API_BASE+'/tasks/'+_0x4c9d7d+'/sync-to-ibmi/files');if(!_0x1a656d['ok']){const _0x32c988=await _0x1a656d['json']()['catch'](()=>({}));throw new Error(_0x32c988['error']||_0x32c988['message']||'Failed\x20to\x20get\x20sync\x20files');}return await _0x1a656d['json']();},async 'syncToIbmi'(_0x10bd27,_0x2596b0,_0x34ff47=null,_0x2b0f1f=null,_0x2d9d83=null){if(!_0x10bd27)throw new Error('Task\x20ID\x20is\x20required');const _0x1938af={'library':_0x2596b0};if(_0x34ff47)_0x1938af['user']=_0x34ff47;if(_0x2b0f1f)_0x1938af['password']=_0x2b0f1f;if(_0x2d9d83)_0x1938af['files']=_0x2d9d83;const _0x2be24d=await fetch(API_BASE+'/tasks/'+_0x10bd27+'/sync-to-ibmi',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1938af)});if(!_0x2be24d['ok']){const _0x1f023=await _0x2be24d['json']()['catch'](()=>({}));throw new Error(_0x1f023['error']||_0x1f023['message']||'Sync\x20failed');}return await _0x2be24d['json']();},async 'getIbmiSyncLog'(_0x45cbac){if(!_0x45cbac)throw new Error('Task\x20ID\x20is\x20required');const _0x144584=await fetch(API_BASE+'/tasks/'+_0x45cbac+'/ibmi-sync-log');if(!_0x144584['ok']){const _0x51351d=await _0x144584['json']()['catch'](()=>({}));throw new Error(_0x51351d['error']||_0x51351d['message']||'Failed\x20to\x20fetch\x20sync\x20log');}return await _0x144584['json']();},async 'pullChanges'(_0x4f60e1){if(!_0x4f60e1)throw new Error('Task\x20ID\x20is\x20required');const _0x5c82f3=await fetch(API_BASE+'/tasks/'+_0x4f60e1+'/pull-changes',{'method':'POST'});if(!_0x5c82f3['ok']){const _0x595819=await _0x5c82f3['json']()['catch'](()=>({}));throw new Error(_0x595819['error']||_0x595819['message']||'Failed\x20to\x20pull\x20changes:\x20'+_0x5c82f3['statusText']);}return await _0x5c82f3['json']();},async 'readFile'(_0x3dd682,_0x5a6fdb){if(!_0x3dd682)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5a6fdb)throw new Error('File\x20path\x20is\x20required');const _0x1eebe7=await fetch(API_BASE+'/tasks/'+_0x3dd682+'/files?path='+encodeURIComponent(_0x5a6fdb));if(!_0x1eebe7['ok']){const _0x5ad797=await _0x1eebe7['json']()['catch'](()=>({}));throw new Error(_0x5ad797['error']||_0x5ad797['message']||'Failed\x20to\x20read\x20file:\x20'+_0x1eebe7['statusText']);}return await _0x1eebe7['json']();},'getTaskFileDownloadUrl'(_0x221ecb,_0x2f50df){if(!_0x221ecb)throw new Error('Task\x20ID\x20is\x20required');if(!_0x2f50df)throw new Error('File\x20path\x20is\x20required');return API_BASE+'/tasks/'+_0x221ecb+'/files/download?path='+encodeURIComponent(_0x2f50df);},async 'writeFile'(_0x58e5a2,_0x5b5000,_0x548fd8){if(!_0x58e5a2)throw new Error('Task\x20ID\x20is\x20required');if(!_0x5b5000)throw new Error('File\x20path\x20is\x20required');if(_0x548fd8===undefined)throw new Error('Content\x20is\x20required');const _0x1a09db=await fetch(API_BASE+'/tasks/'+_0x58e5a2+'/files',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x5b5000,'content':_0x548fd8})});if(!_0x1a09db['ok']){const _0xff63ec=await _0x1a09db['json']()['catch'](()=>({}));throw new Error(_0xff63ec['error']||_0xff63ec['message']||'Failed\x20to\x20write\x20file:\x20'+_0x1a09db['statusText']);}return await _0x1a09db['json']();},async 'uploadTaskFiles'(_0x3434f1,_0x66330e,_0x1a5d1c){if(!_0x3434f1)throw new Error('Task\x20ID\x20is\x20required');if(!_0x66330e)throw new Error('Target\x20directory\x20is\x20required');if(!_0x1a5d1c||_0x1a5d1c['length']===0x0)throw new Error('At\x20least\x20one\x20file\x20is\x20required');const _0x30866e=new FormData();_0x30866e['append']('targetDir',_0x66330e);for(const _0xd74b51 of _0x1a5d1c){_0x30866e['append']('files',_0xd74b51,_0xd74b51['name']);}const _0x2a5788=await fetch(API_BASE+'/tasks/'+_0x3434f1+'/files/upload',{'method':'POST','body':_0x30866e});if(!_0x2a5788['ok']){const _0x1b5f8d=await _0x2a5788['json']()['catch'](()=>({}));throw new Error(_0x1b5f8d['error']||_0x1b5f8d['message']||'Failed\x20to\x20upload\x20files:\x20'+_0x2a5788['statusText']);}return await _0x2a5788['json']();},async 'createDirectory'(_0x6d9df8,_0x349cef){if(!_0x6d9df8)throw new Error('Task\x20ID\x20is\x20required');if(!_0x349cef)throw new Error('Directory\x20path\x20is\x20required');const _0x26ef11=await fetch(API_BASE+'/tasks/'+_0x6d9df8+'/files/directory',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0x349cef})});if(!_0x26ef11['ok']){const _0x20ea25=await _0x26ef11['json']()['catch'](()=>({}));throw new Error(_0x20ea25['error']||_0x20ea25['message']||'Failed\x20to\x20create\x20directory:\x20'+_0x26ef11['statusText']);}return await _0x26ef11['json']();},async 'renamePath'(_0x59b016,_0x4cc7bf,_0x1cd64b){if(!_0x59b016)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4cc7bf)throw new Error('Source\x20path\x20is\x20required');if(!_0x1cd64b)throw new Error('Destination\x20path\x20is\x20required');const _0x16cc02=await fetch(API_BASE+'/tasks/'+_0x59b016+'/files/rename',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'oldPath':_0x4cc7bf,'newPath':_0x1cd64b})});if(!_0x16cc02['ok']){const _0x4f4c1d=await _0x16cc02['json']()['catch'](()=>({}));throw new Error(_0x4f4c1d['error']||_0x4f4c1d['message']||'Failed\x20to\x20rename\x20path:\x20'+_0x16cc02['statusText']);}return await _0x16cc02['json']();},async 'deleteFile'(_0x543f7e,_0x24b2b2){if(!_0x543f7e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x24b2b2)throw new Error('File\x20path\x20is\x20required');const _0x25f8aa=await fetch(API_BASE+'/tasks/'+_0x543f7e+'/files?path='+encodeURIComponent(_0x24b2b2),{'method':'DELETE'});if(!_0x25f8aa['ok']){const _0x134a9d=await _0x25f8aa['json']()['catch'](()=>({}));throw new Error(_0x134a9d['error']||_0x134a9d['message']||'Failed\x20to\x20delete\x20file:\x20'+_0x25f8aa['statusText']);}return await _0x25f8aa['json']();},async 'deleteDirectory'(_0x56b83e,_0x323471){if(!_0x56b83e)throw new Error('Task\x20ID\x20is\x20required');if(!_0x323471)throw new Error('Directory\x20path\x20is\x20required');const _0x41982a=await fetch(API_BASE+'/tasks/'+_0x56b83e+'/files/directory?path='+encodeURIComponent(_0x323471),{'method':'DELETE'});if(!_0x41982a['ok']){const _0x3118a3=await _0x41982a['json']()['catch'](()=>({}));throw new Error(_0x3118a3['error']||_0x3118a3['message']||'Failed\x20to\x20delete\x20directory:\x20'+_0x41982a['statusText']);}return await _0x41982a['json']();},async 'discardFile'(_0x14fb7d,_0xbcf1f2,_0x2fc7c7){if(!_0x14fb7d)throw new Error('Task\x20ID\x20is\x20required');if(!_0xbcf1f2)throw new Error('File\x20path\x20is\x20required');if(!_0x2fc7c7)throw new Error('Repository\x20path\x20is\x20required');const _0x26f167=await fetch(API_BASE+'/tasks/'+_0x14fb7d+'/files/discard',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'path':_0xbcf1f2,'repoPath':_0x2fc7c7})});if(!_0x26f167['ok']){const _0x4c2af6=await _0x26f167['json']()['catch'](()=>({}));throw new Error(_0x4c2af6['error']||_0x4c2af6['message']||'Failed\x20to\x20discard\x20changes:\x20'+_0x26f167['statusText']);}return await _0x26f167['json']();},async 'followUpTask'(_0x4cb9fe,_0x4f1efe={}){if(!_0x4cb9fe)throw new Error('Task\x20ID\x20is\x20required');if(!_0x4f1efe['instructions'])throw new Error('Follow-up\x20instructions\x20are\x20required');let _0x3e8d43,_0x332566={};if(_0x4f1efe['files']&&_0x4f1efe['files']['length']>0x0){const _0x356a6b=new FormData();_0x356a6b['append']('instructions',_0x4f1efe['instructions']);for(const _0x2fd190 of _0x4f1efe['files']){_0x356a6b['append']('attachments',_0x2fd190);}_0x3e8d43=_0x356a6b;}else _0x332566['Content-Type']='application/json',_0x3e8d43=JSON['stringify']({'instructions':_0x4f1efe['instructions']});const _0x43dd52=await fetch(API_BASE+'/tasks/'+_0x4cb9fe+'/follow-up',{'method':'POST','headers':_0x332566,'body':_0x3e8d43});if(!_0x43dd52['ok']){const _0x3884b6=await _0x43dd52['json']()['catch'](()=>({}));throw new Error(_0x3884b6['error']||_0x3884b6['message']||'Failed\x20to\x20submit\x20follow-up:\x20'+_0x43dd52['statusText']);}return await _0x43dd52['json']();},async 'getTaskRewindPoints'(_0x3898ac){if(!_0x3898ac)throw new Error('Task\x20ID\x20is\x20required');const _0x13e618=await fetch(API_BASE+'/tasks/'+_0x3898ac+'/rewind-points');if(!_0x13e618['ok']){const _0x5ba2ce=await _0x13e618['json']()['catch'](()=>({}));throw new Error(_0x5ba2ce['error']||_0x5ba2ce['message']||'Failed\x20to\x20fetch\x20rewind\x20points:\x20'+_0x13e618['statusText']);}return await _0x13e618['json']();},async 'rewindTask'(_0x389b04,_0x2ca272={}){if(!_0x389b04)throw new Error('Task\x20ID\x20is\x20required');const _0x1a4562=Number['isInteger'](_0x2ca272['targetFollowUpCount'])?_0x2ca272['targetFollowUpCount']:0x0,_0x46b5f5={'targetFollowUpCount':_0x1a4562};typeof _0x2ca272['instructions']==='string'&&_0x2ca272['instructions']['trim']()&&(_0x46b5f5['instructions']=_0x2ca272['instructions']['trim']());typeof _0x2ca272['rewindFiles']==='boolean'&&(_0x46b5f5['rewindFiles']=_0x2ca272['rewindFiles']);const _0x2de7c0=await fetch(API_BASE+'/tasks/'+_0x389b04+'/rewind',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x46b5f5)});if(!_0x2de7c0['ok']){const _0x56aaa0=await _0x2de7c0['json']()['catch'](()=>({}));throw new Error(_0x56aaa0['error']||_0x56aaa0['message']||'Failed\x20to\x20rewind\x20task:\x20'+_0x2de7c0['statusText']);}return await _0x2de7c0['json']();},async 'login'(_0x196461,_0x604d71){const _0x4d1ad5=await fetch(API_BASE+'/auth/login',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'username':_0x196461,'password':_0x604d71})});if(!_0x4d1ad5['ok']){const _0x165067=await _0x4d1ad5['json']();throw new Error(_0x165067['message']||'Login\x20failed');}return await _0x4d1ad5['json']();},async 'logout'(){const _0x1a019e=await fetch(API_BASE+'/auth/logout',{'method':'POST'});if(!_0x1a019e['ok']){const _0x1812a5=await _0x1a019e['json']();throw new Error(_0x1812a5['message']||'Logout\x20failed');}return await _0x1a019e['json']();},async 'getCurrentUser'(){const _0x2fc47e=await fetch(API_BASE+'/auth/me');if(!_0x2fc47e['ok'])throw new Error('Not\x20authenticated');const _0x5f1240=await _0x2fc47e['json']();return _0x5f1240['user'];},async 'getRolesInfo'(){const _0x412b05=await fetch(API_BASE+'/users/roles');if(!_0x412b05['ok']){const _0x3a3c79=await _0x412b05['json']();throw new Error(_0x3a3c79['message']||'Failed\x20to\x20get\x20roles\x20info');}return await _0x412b05['json']();},async 'getUsers'(){const _0x3b736b=await fetch(API_BASE+'/users');if(!_0x3b736b['ok']){const _0x374fd1=await _0x3b736b['json']();throw new Error(_0x374fd1['message']||'Failed\x20to\x20get\x20users');}return await _0x3b736b['json']();},async 'getUser'(_0x14f272){const _0x1f7721=await fetch(API_BASE+'/users/'+_0x14f272);if(!_0x1f7721['ok']){const _0x12fe93=await _0x1f7721['json']();throw new Error(_0x12fe93['message']||'Failed\x20to\x20get\x20user');}return await _0x1f7721['json']();},async 'createUser'(_0x2449b2){const _0x5486c0=await fetch(API_BASE+'/users',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2449b2)});if(!_0x5486c0['ok']){const _0x1ddf56=await _0x5486c0['json']();throw new Error(_0x1ddf56['message']||'Failed\x20to\x20create\x20user');}return await _0x5486c0['json']();},async 'updateUser'(_0x9d7266,_0x40c62a){const _0x47d740=await fetch(API_BASE+'/users/'+_0x9d7266,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x40c62a)});if(!_0x47d740['ok']){const _0x15763b=await _0x47d740['json']();throw new Error(_0x15763b['message']||'Failed\x20to\x20update\x20user');}return await _0x47d740['json']();},async 'deleteUser'(_0x454222){const _0x3eb509=await fetch(API_BASE+'/users/'+_0x454222,{'method':'DELETE'});if(!_0x3eb509['ok']){const _0x3d0aba=await _0x3eb509['json']();throw new Error(_0x3d0aba['message']||'Failed\x20to\x20delete\x20user');}return await _0x3eb509['json']();},async 'stopAllContainers'(){const _0x235468=await fetch(API_BASE+'/health/docker/stop-all',{'method':'POST'}),_0x1f8b68=await _0x235468['json']()['catch'](()=>({}));if(!_0x235468['ok'])throw new Error(_0x1f8b68['message']||_0x1f8b68['error']||'Failed\x20to\x20stop\x20containers');return _0x1f8b68;},async 'removeStoppedContainers'(){const _0x156b03=await fetch(API_BASE+'/health/docker/remove-stopped',{'method':'POST'}),_0x23e323=await _0x156b03['json']()['catch'](()=>({}));if(!_0x156b03['ok'])throw new Error(_0x23e323['message']||_0x23e323['error']||'Failed\x20to\x20remove\x20stopped\x20containers');return _0x23e323;},async 'pruneDockerResources'(){const _0x18f60f=await fetch(API_BASE+'/health/docker/prune',{'method':'POST'}),_0xcd24f5=await _0x18f60f['json']()['catch'](()=>({}));if(!_0x18f60f['ok'])throw new Error(_0xcd24f5['message']||_0xcd24f5['error']||'Failed\x20to\x20prune\x20Docker\x20resources');return _0xcd24f5;},async 'createPasswordToken'(_0x5e7784,_0x2c41b4='setup',_0x4d9a28=![]){const _0x1d5bab=await fetch(API_BASE+'/password/create-token',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x5e7784,'type':_0x2c41b4,'sendEmail':_0x4d9a28})});if(!_0x1d5bab['ok']){const _0x364451=await _0x1d5bab['json']();throw new Error(_0x364451['error']||'Failed\x20to\x20create\x20password\x20token');}return await _0x1d5bab['json']();},async 'getEmailConfig'(){const _0x5abfe2=await fetch(API_BASE+'/password/email-config');if(!_0x5abfe2['ok']){const _0x42a4fd=await _0x5abfe2['json']();throw new Error(_0x42a4fd['error']||'Failed\x20to\x20get\x20email\x20configuration');}return await _0x5abfe2['json']();},async 'updateTaskName'(_0x17bd35,_0x92e3c){const _0x625230=await fetch(API_BASE+'/tasks/'+_0x17bd35,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'name':_0x92e3c})});if(!_0x625230['ok']){const _0xe43d2d=await _0x625230['json']();throw new Error(_0xe43d2d['error']||'Failed\x20to\x20update\x20task\x20name');}return await _0x625230['json']();},async 'pinTask'(_0x25197a,_0x337beb,_0x5cbf4c=null){if(!_0x25197a)throw new Error('Task\x20ID\x20is\x20required');const _0x348175={'pinned':_0x337beb};_0x5cbf4c&&_0x5cbf4c['length']>0x0&&(_0x348175['additionalTaskIds']=_0x5cbf4c);const _0x540895=await fetch(API_BASE+'/tasks/'+_0x25197a+'/pin',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x348175)});if(!_0x540895['ok']){const _0x202c6d=await _0x540895['json']();throw new Error(_0x202c6d['error']||'Failed\x20to\x20pin\x20task');}return await _0x540895['json']();},async 'setTaskWinner'(_0x21dc64,_0x3e3268,_0xcbc369=[]){if(!_0x21dc64)throw new Error('Task\x20ID\x20is\x20required');const _0x19de09=await fetch(API_BASE+'/tasks/'+_0x21dc64+'/winner',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isWinner':_0x3e3268,'siblings':_0xcbc369})});if(!_0x19de09['ok']){const _0x2513c5=await _0x19de09['json']();throw new Error(_0x2513c5['error']||'Failed\x20to\x20update\x20winner\x20status');}return await _0x19de09['json']();},async 'setTaskLoser'(_0x236160,_0x3d4f07){if(!_0x236160)throw new Error('Task\x20ID\x20is\x20required');const _0x5c506e=await fetch(API_BASE+'/tasks/'+_0x236160+'/loser',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'isLoser':_0x3d4f07})});if(!_0x5c506e['ok']){const _0x35504c=await _0x5c506e['json']();throw new Error(_0x35504c['error']||'Failed\x20to\x20update\x20loser\x20status');}return await _0x5c506e['json']();},async 'createTaskGroup'(_0x2bb72f){const _0x45c4ab=await fetch(API_BASE+'/tasks/groups',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2bb72f)});if(!_0x45c4ab['ok']){const _0x7c392d=await _0x45c4ab['json']();throw new Error(_0x7c392d['error']||'Failed\x20to\x20create\x20task\x20group');}return await _0x45c4ab['json']();},async 'getTaskGroups'(_0x1f5255={}){const _0xe8c65e=new URLSearchParams();if(_0x1f5255['userId'])_0xe8c65e['set']('userId',String(_0x1f5255['userId']));if(_0x1f5255['status'])_0xe8c65e['set']('status',String(_0x1f5255['status']));if(_0x1f5255['limit'])_0xe8c65e['set']('limit',String(_0x1f5255['limit']));const _0x47578a=API_BASE+'/tasks/groups'+(_0xe8c65e['toString']()?'?'+_0xe8c65e['toString']():''),_0x95cfed=await fetch(_0x47578a);if(!_0x95cfed['ok'])throw new Error('Failed\x20to\x20fetch\x20task\x20groups');return await _0x95cfed['json']();},async 'getTaskGroup'(_0x3c1bca){const _0x18f4f7=await fetch(API_BASE+'/tasks/groups/'+_0x3c1bca);if(!_0x18f4f7['ok']){const _0x57a6c6=await _0x18f4f7['json']();throw new Error(_0x57a6c6['error']||'Failed\x20to\x20fetch\x20task\x20group');}return await _0x18f4f7['json']();},async 'updateTaskGroup'(_0x4c2185,_0x50a378,_0x1acffc){const _0x39f036=await fetch(API_BASE+'/tasks/'+_0x4c2185+'/group',{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'groupId':_0x50a378,'groupIndex':_0x1acffc})});if(!_0x39f036['ok']){const _0x67ea95=await _0x39f036['json']();throw new Error(_0x67ea95['error']||'Failed\x20to\x20update\x20task\x20group');}return await _0x39f036['json']();},async 'removeTaskFromGroup'(_0x56b515){return this['updateTaskGroup'](_0x56b515,null,null);},async 'deleteTaskGroup'(_0x4d0b39,_0x254c1c=![]){const _0x488f29=_0x254c1c?'?deleteTasks=true':'',_0x1a1e50=await fetch(API_BASE+'/tasks/groups/'+_0x4d0b39+_0x488f29,{'method':'DELETE'});if(!_0x1a1e50['ok']){const _0x38d4eb=await _0x1a1e50['json']();throw new Error(_0x38d4eb['error']||'Failed\x20to\x20delete\x20task\x20group');}return!![];},async 'setGroupWinner'(_0x5e3235,_0x5e2f34){const _0x57d277=await fetch(API_BASE+'/tasks/groups/'+_0x5e3235+'/winner',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'taskId':_0x5e2f34})});if(!_0x57d277['ok']){const _0x347737=await _0x57d277['json']();throw new Error(_0x347737['error']||'Failed\x20to\x20set\x20group\x20winner');}return await _0x57d277['json']();},'generateGroupId'(){return'g-'+Date['now']()+'-'+Math['random']()['toString'](0x24)['substr'](0x2,0x9);},async 'getComments'(_0x3d3263){if(!_0x3d3263)throw new Error('Task\x20ID\x20is\x20required');const _0x1f35f7=await fetch(API_BASE+'/tasks/'+_0x3d3263+'/comments');if(!_0x1f35f7['ok']){const _0x3c9796=await _0x1f35f7['json']()['catch'](()=>({}));throw new Error(_0x3c9796['error']||'Failed\x20to\x20get\x20comments');}return await _0x1f35f7['json']();},async 'addComment'(_0x7fa547,_0x570378){if(!_0x7fa547)throw new Error('Task\x20ID\x20is\x20required');if(!_0x570378)throw new Error('Comment\x20content\x20is\x20required');const _0x594b30=await fetch(API_BASE+'/tasks/'+_0x7fa547+'/comments',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x570378})});if(!_0x594b30['ok']){const _0x3f4974=await _0x594b30['json']()['catch'](()=>({}));throw new Error(_0x3f4974['error']||'Failed\x20to\x20add\x20comment');}return await _0x594b30['json']();},async 'updateComment'(_0x3ddc1c,_0x178fc6,_0x47ffa5){if(!_0x3ddc1c)throw new Error('Task\x20ID\x20is\x20required');if(!_0x178fc6)throw new Error('Comment\x20ID\x20is\x20required');if(!_0x47ffa5)throw new Error('Comment\x20content\x20is\x20required');const _0x283635=await fetch(API_BASE+'/tasks/'+_0x3ddc1c+'/comments/'+_0x178fc6,{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x47ffa5})});if(!_0x283635['ok']){const _0x2ebde8=await _0x283635['json']()['catch'](()=>({}));throw new Error(_0x2ebde8['error']||'Failed\x20to\x20update\x20comment');}return await _0x283635['json']();},async 'deleteComment'(_0xf2d106,_0x135a04){if(!_0xf2d106)throw new Error('Task\x20ID\x20is\x20required');if(!_0x135a04)throw new Error('Comment\x20ID\x20is\x20required');const _0x32cd03=await fetch(API_BASE+'/tasks/'+_0xf2d106+'/comments/'+_0x135a04,{'method':'DELETE'});if(!_0x32cd03['ok']){const _0x16d3da=await _0x32cd03['json']()['catch'](()=>({}));throw new Error(_0x16d3da['error']||'Failed\x20to\x20delete\x20comment');}return await _0x32cd03['json']();},async 'createObjective'(_0x1ab760){const _0x404b1e={'objective':!![],'name':_0x1ab760['name']||'','environment':_0x1ab760['environment']||null,'agents':_0x1ab760['agents']||[],'branches':_0x1ab760['branches']||{},'isPinned':_0x1ab760['isPinned']||![],'parentObjectiveId':_0x1ab760['parentObjectiveId']||null,'env_vars':_0x1ab760['envVars']||{},'parameters':{'instructions':_0x1ab760['instructions']||''},'files':_0x1ab760['files']||[],'jira':_0x1ab760['jira']||null};return this['createTask'](_0x404b1e);},async 'updateObjective'(_0x2061f0,_0x22c55e,_0x4ba400=[],_0x597f8a=[]){let _0x22a049,_0x10c417={};const _0x18b215={..._0x22c55e};_0x597f8a&&_0x597f8a['length']>0x0&&(_0x18b215['removeAttachments']=_0x597f8a);if(_0x4ba400&&_0x4ba400['length']>0x0){const _0x5e1d8a=new FormData();for(const [_0x328111,_0x2a99c1]of Object['entries'](_0x18b215)){if(_0x2a99c1==null)continue;typeof _0x2a99c1==='object'?_0x5e1d8a['append'](_0x328111,JSON['stringify'](_0x2a99c1)):_0x5e1d8a['append'](_0x328111,String(_0x2a99c1));}for(const _0x4b7f0b of _0x4ba400){_0x5e1d8a['append']('attachments',_0x4b7f0b);}_0x22a049=_0x5e1d8a;}else _0x10c417['Content-Type']='application/json',_0x22a049=JSON['stringify'](_0x18b215);const _0x200c0f=await fetch(API_BASE+'/tasks/'+_0x2061f0,{'method':'PATCH','headers':_0x10c417,'body':_0x22a049});if(!_0x200c0f['ok']){const _0x2be894=await _0x200c0f['json']();throw new Error(_0x2be894['error']||'Failed\x20to\x20update\x20objective');}return await _0x200c0f['json']();},async 'deleteObjective'(_0x57ea4e){return this['deleteTask'](_0x57ea4e);},async 'launchObjective'(_0x4fdd5e,_0x284747={}){const _0x2047a4=await fetch(API_BASE+'/tasks/'+_0x4fdd5e+'/launch',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x284747)});if(!_0x2047a4['ok']){const _0x3de7cd=await _0x2047a4['json']();throw new Error(_0x3de7cd['error']||'Failed\x20to\x20launch\x20objective');}return await _0x2047a4['json']();},async 'getObjectiveAttachments'(_0x446963){return this['getTaskAttachments'](_0x446963);},async 'createJudgeTask'({environment:_0x184d1c,judgeAgent:_0x3e566f,groupId:_0x33bf99,taskIds:_0x3a7c2a,judgeCustomInstructions:_0x54939b,isPinned:_0x532648}){const _0x14f7ce=await fetch(API_BASE+'/tasks/judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x184d1c,'judgeAgent':_0x3e566f,'groupId':_0x33bf99,'taskIds':_0x3a7c2a,'judgeCustomInstructions':_0x54939b,'isPinned':_0x532648})});if(!_0x14f7ce['ok']){const _0xd94b8c=await _0x14f7ce['json']();throw new Error(_0xd94b8c['error']||'Failed\x20to\x20create\x20judge\x20task');}return await _0x14f7ce['json']();},async 'getJudgeTasks'(_0x55146a){const _0x49516f=await fetch(API_BASE+'/tasks/judge?groupId='+encodeURIComponent(_0x55146a));if(!_0x49516f['ok']){const _0x4c7c23=await _0x49516f['json']();throw new Error(_0x4c7c23['error']||'Failed\x20to\x20fetch\x20judge\x20tasks');}return await _0x49516f['json']();},async 'sendJudgeFeedbackAsFollowUp'(_0x398472,_0xf66ca,_0x4157da=''){const _0x4dc2e4=await fetch(API_BASE+'/tasks/'+_0x398472+'/follow-up-from-judge',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'judgeTaskId':_0xf66ca,'customPreamble':_0x4157da})});if(!_0x4dc2e4['ok']){const _0x4995b9=await _0x4dc2e4['json']();throw new Error(_0x4995b9['error']||'Failed\x20to\x20send\x20judge\x20feedback');}return await _0x4dc2e4['json']();},async 'getJiraConfig'(){const _0x570cca=await fetch(API_BASE+'/jira/config');if(!_0x570cca['ok'])throw new Error('Failed\x20to\x20get\x20Jira\x20configuration');return await _0x570cca['json']();},async 'getJiraIssue'(_0x231c17){const _0x20984a=await fetch(API_BASE+'/jira/issues/'+_0x231c17);if(!_0x20984a['ok']){const _0xbc40e8=await _0x20984a['json']()['catch'](()=>({}));throw new Error(_0xbc40e8['message']||'Failed\x20to\x20fetch\x20Jira\x20issue:\x20'+_0x20984a['statusText']);}return await _0x20984a['json']();},async 'searchJiraIssues'(_0x3162fd,_0x125723=0x14){const _0x144401=await fetch(API_BASE+'/jira/search',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'query':_0x3162fd,'maxResults':_0x125723})});if(!_0x144401['ok']){const _0x19c993=await _0x144401['json']()['catch'](()=>({}));throw new Error(_0x19c993['message']||'Failed\x20to\x20search\x20Jira\x20issues:\x20'+_0x144401['statusText']);}return await _0x144401['json']();},async 'postJiraComment'(_0x575e8f,_0x1f9d49){const _0x1c6b6c=await fetch(API_BASE+'/jira/issues/'+_0x575e8f+'/comment',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'comment':_0x1f9d49})});if(!_0x1c6b6c['ok']){const _0x5b5e39=await _0x1c6b6c['json']()['catch'](()=>({}));throw new Error(_0x5b5e39['message']||'Failed\x20to\x20post\x20comment\x20to\x20Jira:\x20'+_0x1c6b6c['statusText']);}return await _0x1c6b6c['json']();},async 'getJiraComments'(_0x221dd0){const _0x33cd43=await fetch(API_BASE+'/jira/issues/'+_0x221dd0+'/comments');if(!_0x33cd43['ok']){const _0x2a53f4=await _0x33cd43['json']()['catch'](()=>({}));throw new Error(_0x2a53f4['message']||'Failed\x20to\x20fetch\x20Jira\x20comments:\x20'+_0x33cd43['statusText']);}return await _0x33cd43['json']();},async 'promptParameter'({environment:_0x1a1099,command:_0x3255f7,parser:parser='json'}){const _0xff2304=await fetch(API_BASE+'/prompt-parameter',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'environment':_0x1a1099,'command':_0x3255f7,'parser':parser})});if(!_0xff2304['ok']){const _0x21e5e4=await _0xff2304['json']()['catch'](()=>({}));throw new Error(_0x21e5e4['message']||_0x21e5e4['error']||'Failed\x20to\x20fetch\x20prompt\x20choices:\x20'+_0xff2304['statusText']);}return await _0xff2304['json']();},async 'promptParameterStream'(_0x76459b,_0xcf3380){const _0x46ca72=await fetch(API_BASE+'/prompt-parameter/stream',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x76459b)});if(!_0x46ca72['ok'])throw new Error('Failed\x20to\x20start\x20prompt\x20stream:\x20'+_0x46ca72['statusText']);const _0x27b2cf=_0x46ca72['body']['getReader'](),_0x4756d3=new TextDecoder();let _0x1d3ba0='';return new Promise((_0x36fa19,_0x152e4d)=>{const _0x1ef25d=async()=>{try{const {done:_0x3db195,value:_0x1d6930}=await _0x27b2cf['read']();if(_0x3db195)return;_0x1d3ba0+=_0x4756d3['decode'](_0x1d6930,{'stream':!![]});const _0x367867=_0x1d3ba0['split']('\x0a\x0a');_0x1d3ba0=_0x367867['pop']()||'';for(const _0x433e5e of _0x367867){if(!_0x433e5e['trim']())continue;const _0x2da9d4=_0x433e5e['split']('\x0a');let _0x4f92c4='message',_0x2cd969='';for(const _0x428acc of _0x2da9d4){if(_0x428acc['startsWith']('event:'))_0x4f92c4=_0x428acc['substring'](0x6)['trim']();else _0x428acc['startsWith']('data:')&&(_0x2cd969=_0x428acc['substring'](0x5)['trim']());}if(!_0x2cd969)continue;try{const _0x619f5f=JSON['parse'](_0x2cd969);if(_0x4f92c4==='progress'&&_0xcf3380)_0xcf3380(_0x619f5f['stage'],_0x619f5f['message']);else{if(_0x4f92c4==='result'){_0x36fa19(_0x619f5f);return;}else{if(_0x4f92c4==='error'){let _0x420fde=_0x619f5f['message']||_0x619f5f['error']||'Prompt\x20command\x20failed';_0x619f5f['rawOutput']&&(_0x420fde+='\x0a\x0aRaw\x20output:\x0a'+_0x619f5f['rawOutput']);_0x152e4d(new Error(_0x420fde));return;}}}}catch(_0x47736d){console['error']('Failed\x20to\x20parse\x20SSE\x20event\x20data:',_0x47736d),console['error']('Event\x20type:',_0x4f92c4),console['error']('Event\x20data:',_0x2cd969),console['error']('First\x20200\x20chars:',_0x2cd969['substring'](0x0,0xc8)),_0x152e4d(new Error('Failed\x20to\x20parse\x20SSE\x20data:\x20'+_0x47736d['message']+'\x0a\x0aData:\x20'+_0x2cd969['substring'](0x0,0x1f4)));return;}}_0x1ef25d();}catch(_0x155b7b){_0x152e4d(_0x155b7b);}};_0x1ef25d();});},'getBaseUrl'(){return API_BASE;},async 'get'(_0x5ef796){const _0x3ed61a=await fetch(''+API_BASE+_0x5ef796);if(!_0x3ed61a['ok']){const _0x376212=await _0x3ed61a['json']()['catch'](()=>({'error':_0x3ed61a['statusText']})),_0xb4b22e=new Error(_0x376212['error']||_0x376212['message']||_0x3ed61a['statusText']);if(_0x376212['detail']!==undefined)_0xb4b22e['detail']=_0x376212['detail'];throw _0xb4b22e;}return await _0x3ed61a['json']();},async 'post'(_0x348f44,_0x3afbe0){const _0x2a8f4c=await fetch(''+API_BASE+_0x348f44,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3afbe0)});if(!_0x2a8f4c['ok']){const _0x17e921=await _0x2a8f4c['json']()['catch'](()=>({'error':_0x2a8f4c['statusText']})),_0x34055e=new Error(_0x17e921['error']||_0x17e921['message']||_0x2a8f4c['statusText']);if(_0x17e921['detail']!==undefined)_0x34055e['detail']=_0x17e921['detail'];throw _0x34055e;}return await _0x2a8f4c['json']();},async 'put'(_0x262c8d,_0x41fd0a){const _0x56441c=await fetch(''+API_BASE+_0x262c8d,{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x41fd0a)});if(!_0x56441c['ok']){const _0x3b6dc6=await _0x56441c['json']()['catch'](()=>({'error':_0x56441c['statusText']})),_0xb04368=new Error(_0x3b6dc6['error']||_0x3b6dc6['message']||_0x56441c['statusText']);if(_0x3b6dc6['detail']!==undefined)_0xb04368['detail']=_0x3b6dc6['detail'];throw _0xb04368;}return await _0x56441c['json']();},async 'delete'(_0x35774b,_0x23d840){const _0x1c24f4={'method':'DELETE'};_0x23d840&&(_0x1c24f4['headers']={'Content-Type':'application/json'},_0x1c24f4['body']=JSON['stringify'](_0x23d840));const _0x35b4be=await fetch(''+API_BASE+_0x35774b,_0x1c24f4);if(!_0x35b4be['ok']){const _0x543679=await _0x35b4be['json']()['catch'](()=>({'error':_0x35b4be['statusText']})),_0x374a96=new Error(_0x543679['error']||_0x543679['message']||_0x35b4be['statusText']);if(_0x543679['detail']!==undefined)_0x374a96['detail']=_0x543679['detail'];throw _0x374a96;}return await _0x35b4be['json']();},async 'getSkills'(){const _0x26770d=await fetch(API_BASE+'/skills');if(!_0x26770d['ok'])throw new Error('Failed\x20to\x20fetch\x20skills:\x20'+_0x26770d['statusText']);return await _0x26770d['json']();},async 'getSkill'(_0x269682){const _0x4ff9c9=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x269682));if(!_0x4ff9c9['ok'])throw new Error('Failed\x20to\x20fetch\x20skill:\x20'+_0x4ff9c9['statusText']);return await _0x4ff9c9['json']();},async 'createSkill'(_0xb2e573){const _0x5ad6ba=await fetch(API_BASE+'/skills',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0xb2e573)});if(!_0x5ad6ba['ok']){const _0x5a5a1d=await _0x5ad6ba['json']()['catch'](()=>({'error':_0x5ad6ba['statusText']})),_0x5ef032=new Error(_0x5a5a1d['error']||_0x5a5a1d['message']||_0x5ad6ba['statusText']);if(_0x5a5a1d['detail']!==undefined)_0x5ef032['detail']=_0x5a5a1d['detail'];throw _0x5ef032;}return await _0x5ad6ba['json']();},async 'updateSkill'(_0x2a2a2b,_0x3e99bb){const _0x1df413=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x2a2a2b),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3e99bb)});if(!_0x1df413['ok']){const _0x1fb145=await _0x1df413['json']()['catch'](()=>({'error':_0x1df413['statusText']})),_0x2cc43f=new Error(_0x1fb145['error']||_0x1fb145['message']||_0x1df413['statusText']);if(_0x1fb145['detail']!==undefined)_0x2cc43f['detail']=_0x1fb145['detail'];throw _0x2cc43f;}return await _0x1df413['json']();},async 'deleteSkill'(_0x4c2bee){const _0x47cd04=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4c2bee),{'method':'DELETE'});if(!_0x47cd04['ok']){const _0x5528d0=await _0x47cd04['json']()['catch'](()=>({'error':_0x47cd04['statusText']})),_0x4161c8=new Error(_0x5528d0['error']||_0x5528d0['message']||_0x47cd04['statusText']);if(_0x5528d0['detail']!==undefined)_0x4161c8['detail']=_0x5528d0['detail'];throw _0x4161c8;}return await _0x47cd04['json']();},async 'getSkillFile'(_0x4d5644,_0x58c60b){const _0x3e2bf3=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4d5644)+'/files/'+_0x58c60b);if(!_0x3e2bf3['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20file:\x20'+_0x3e2bf3['statusText']);return await _0x3e2bf3['json']();},async 'saveSkillFile'(_0x35f49f,_0x53e66e,_0x4b96c9){const _0x4b7f2d=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x35f49f)+'/files/'+_0x53e66e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'content':_0x4b96c9})});if(!_0x4b7f2d['ok']){const _0x250a86=await _0x4b7f2d['json']()['catch'](()=>({'error':_0x4b7f2d['statusText']})),_0x403467=new Error(_0x250a86['error']||_0x250a86['message']||_0x4b7f2d['statusText']);if(_0x250a86['detail']!==undefined)_0x403467['detail']=_0x250a86['detail'];throw _0x403467;}return await _0x4b7f2d['json']();},async 'deleteSkillFile'(_0x4b59a6,_0x22c58e){const _0x2bd757=await fetch(API_BASE+'/skills/'+encodeURIComponent(_0x4b59a6)+'/files/'+_0x22c58e,{'method':'DELETE'});if(!_0x2bd757['ok']){const _0x294da7=await _0x2bd757['json']()['catch'](()=>({'error':_0x2bd757['statusText']})),_0x1d5870=new Error(_0x294da7['error']||_0x294da7['message']||_0x2bd757['statusText']);if(_0x294da7['detail']!==undefined)_0x1d5870['detail']=_0x294da7['detail'];throw _0x1d5870;}return await _0x2bd757['json']();},async 'pullSkills'(){const _0x18faf9=await fetch(API_BASE+'/skills/git/pull',{'method':'POST'});if(!_0x18faf9['ok']){const _0x199c18=await _0x18faf9['json']()['catch'](()=>({'error':_0x18faf9['statusText']})),_0x26d988=new Error(_0x199c18['error']||_0x199c18['message']||_0x18faf9['statusText']);if(_0x199c18['detail']!==undefined)_0x26d988['detail']=_0x199c18['detail'];throw _0x26d988;}return await _0x18faf9['json']();},async 'commitSkills'(_0x3d16b5,_0x311f12={}){const {push:push=!![],pullFirst:pullFirst=!![],scope:scope='skills'}=_0x311f12,_0x453a5d=await fetch(API_BASE+'/skills/git/commit',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'message':_0x3d16b5,'push':push,'pullFirst':pullFirst,'scope':scope})});if(!_0x453a5d['ok']){const _0x162e70=await _0x453a5d['json']()['catch'](()=>({'error':_0x453a5d['statusText']})),_0x54c71e=new Error(_0x162e70['error']||_0x162e70['message']||_0x453a5d['statusText']);if(_0x162e70['detail']!==undefined)_0x54c71e['detail']=_0x162e70['detail'];throw _0x54c71e;}return await _0x453a5d['json']();},async 'discardSkillsChanges'(){const _0x516f05=await fetch(API_BASE+'/skills/git/discard',{'method':'POST'});if(!_0x516f05['ok']){const _0xfefe58=await _0x516f05['json']()['catch'](()=>({'error':_0x516f05['statusText']})),_0x52c9e4=new Error(_0xfefe58['error']||_0xfefe58['message']||_0x516f05['statusText']);if(_0xfefe58['detail']!==undefined)_0x52c9e4['detail']=_0xfefe58['detail'];throw _0x52c9e4;}return await _0x516f05['json']();},async 'getSkillCatalog'(){const _0x8bf773=await fetch(API_BASE+'/external-skills/catalog');if(!_0x8bf773['ok'])throw new Error('Failed\x20to\x20fetch\x20skill\x20catalog:\x20'+_0x8bf773['statusText']);return await _0x8bf773['json']();},async 'getImportedSkillsRegistry'(){const _0x471dc6=await fetch(API_BASE+'/external-skills/registry');if(!_0x471dc6['ok'])throw new Error('Failed\x20to\x20fetch\x20imported\x20skills\x20registry:\x20'+_0x471dc6['statusText']);return await _0x471dc6['json']();},async 'importCatalogSkill'(_0x2787c3){const _0x507dcc=await fetch(API_BASE+'/external-skills/import/catalog',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'skillId':_0x2787c3})});if(!_0x507dcc['ok']){const _0x26227b=await _0x507dcc['json']()['catch'](()=>({'error':_0x507dcc['statusText']})),_0x3be82e=new Error(_0x26227b['error']||_0x26227b['message']||_0x507dcc['statusText']);if(_0x26227b['detail']!==undefined)_0x3be82e['detail']=_0x26227b['detail'];throw _0x3be82e;}return await _0x507dcc['json']();},async 'importSkillFromGit'(_0x338ace,_0x53a3cb,_0x2830bd='main',_0x1d9443=null){const _0x23bf66=await fetch(API_BASE+'/external-skills/import/git',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x338ace,'skillPath':_0x53a3cb,'branch':_0x2830bd,'skillId':_0x1d9443})});if(!_0x23bf66['ok']){const _0x433c75=await _0x23bf66['json']()['catch'](()=>({'error':_0x23bf66['statusText']})),_0x531fd5=new Error(_0x433c75['error']||_0x433c75['message']||_0x23bf66['statusText']);if(_0x433c75['detail']!==undefined)_0x531fd5['detail']=_0x433c75['detail'];throw _0x531fd5;}return await _0x23bf66['json']();},async 'probeMarketplace'(_0x111359,_0x40e3e9='main'){const _0x44004c=await fetch(API_BASE+'/external-skills/probe-marketplace',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x111359,'branch':_0x40e3e9})});if(!_0x44004c['ok']){const _0x471a7f=await _0x44004c['json']()['catch'](()=>({'error':_0x44004c['statusText']})),_0x372b91=new Error(_0x471a7f['error']||_0x471a7f['message']||_0x44004c['statusText']);if(_0x471a7f['detail']!==undefined)_0x372b91['detail']=_0x471a7f['detail'];throw _0x372b91;}return await _0x44004c['json']();},async 'importMarketplaceBundle'(_0x41a8da,_0x5bb546,_0xac229c,_0x5c6f36=null){const _0x7773fe=await fetch(API_BASE+'/external-skills/import/marketplace-bundle',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'repoUrl':_0x41a8da,'branch':_0x5bb546,'bundleId':_0xac229c,'selectedSkills':_0x5c6f36})});if(!_0x7773fe['ok']){const _0x48808d=await _0x7773fe['json']()['catch'](()=>({'error':_0x7773fe['statusText']})),_0x18eb33=new Error(_0x48808d['error']||_0x48808d['message']||_0x7773fe['statusText']);if(_0x48808d['detail']!==undefined)_0x18eb33['detail']=_0x48808d['detail'];throw _0x18eb33;}return await _0x7773fe['json']();},async 'importSkillFromFolder'(_0x3d375a,_0x3e0ce4=null){const _0x3c7086=await fetch(API_BASE+'/external-skills/import/folder',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'folderPath':_0x3d375a,'skillId':_0x3e0ce4})});if(!_0x3c7086['ok']){const _0x1d87a5=await _0x3c7086['json']()['catch'](()=>({'error':_0x3c7086['statusText']})),_0x1df48b=new Error(_0x1d87a5['error']||_0x1d87a5['message']||_0x3c7086['statusText']);if(_0x1d87a5['detail']!==undefined)_0x1df48b['detail']=_0x1d87a5['detail'];throw _0x1df48b;}return await _0x3c7086['json']();},async 'importSkillFromNpm'(_0x5d4456,_0x41557f='latest',_0x55d058=null,_0x183466=null){const _0x3b7c8a=await fetch(API_BASE+'/external-skills/import/npm',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'packageName':_0x5d4456,'version':_0x41557f,'skillId':_0x55d058,'registry':_0x183466})});if(!_0x3b7c8a['ok']){const _0x402d29=await _0x3b7c8a['json']()['catch'](()=>({'error':_0x3b7c8a['statusText']})),_0x2fa036=new Error(_0x402d29['error']||_0x402d29['message']||_0x3b7c8a['statusText']);if(_0x402d29['detail']!==undefined)_0x2fa036['detail']=_0x402d29['detail'];throw _0x2fa036;}return await _0x3b7c8a['json']();},async 'checkSkillUpdates'(_0x3cb062){const _0x3be8ed=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x3cb062)+'/check-updates',{'method':'POST'});if(!_0x3be8ed['ok']){const _0x59f09a=await _0x3be8ed['json']()['catch'](()=>({'error':_0x3be8ed['statusText']})),_0x215d7d=new Error(_0x59f09a['error']||_0x59f09a['message']||_0x3be8ed['statusText']);if(_0x59f09a['detail']!==undefined)_0x215d7d['detail']=_0x59f09a['detail'];throw _0x215d7d;}return await _0x3be8ed['json']();},async 'updateExternalSkill'(_0x352d0a){const _0x2deefc=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x352d0a)+'/update',{'method':'POST'});if(!_0x2deefc['ok']){const _0x3956cf=await _0x2deefc['json']()['catch'](()=>({'error':_0x2deefc['statusText']})),_0x42fd54=new Error(_0x3956cf['error']||_0x3956cf['message']||_0x2deefc['statusText']);if(_0x3956cf['detail']!==undefined)_0x42fd54['detail']=_0x3956cf['detail'];throw _0x42fd54;}return await _0x2deefc['json']();},async 'updateSkillFlags'(_0x58a7ca,_0xdd6969){const _0x2a87a6=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x58a7ca)+'/flags',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'flags':_0xdd6969})});if(!_0x2a87a6['ok']){const _0x544d9a=await _0x2a87a6['json']()['catch'](()=>({'error':_0x2a87a6['statusText']})),_0xec24a2=new Error(_0x544d9a['error']||_0x544d9a['message']||_0x2a87a6['statusText']);if(_0x544d9a['detail']!==undefined)_0xec24a2['detail']=_0x544d9a['detail'];throw _0xec24a2;}return await _0x2a87a6['json']();},async 'removeFromImportedRegistry'(_0x4a346a){const _0x325440=await fetch(API_BASE+'/external-skills/'+encodeURIComponent(_0x4a346a)+'/registry',{'method':'DELETE'});if(!_0x325440['ok']){const _0xf91bef=await _0x325440['json']()['catch'](()=>({'error':_0x325440['statusText']})),_0x248ead=new Error(_0xf91bef['error']||_0xf91bef['message']||_0x325440['statusText']);if(_0xf91bef['detail']!==undefined)_0x248ead['detail']=_0xf91bef['detail'];throw _0x248ead;}return await _0x325440['json']();},async 'getTeams'(){const _0x4e4d49=await fetch(API_BASE+'/teams');if(!_0x4e4d49['ok']){const _0x20e1c9=await _0x4e4d49['json']()['catch'](()=>({'message':_0x4e4d49['statusText']}));throw new Error(_0x20e1c9['message']||'Failed\x20to\x20get\x20teams');}return await _0x4e4d49['json']();},async 'getTeam'(_0x4352f6){const _0x1d70f1=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4352f6));if(!_0x1d70f1['ok']){const _0x4ba0ff=await _0x1d70f1['json']()['catch'](()=>({'message':_0x1d70f1['statusText']}));throw new Error(_0x4ba0ff['message']||'Failed\x20to\x20get\x20team');}return await _0x1d70f1['json']();},async 'createTeam'(_0x521490){const _0x4b30d9=await fetch(API_BASE+'/teams',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x521490)});if(!_0x4b30d9['ok']){const _0x571d87=await _0x4b30d9['json']()['catch'](()=>({'message':_0x4b30d9['statusText']}));throw new Error(_0x571d87['message']||'Failed\x20to\x20create\x20team');}return await _0x4b30d9['json']();},async 'updateTeam'(_0x45a2e6,_0x3a8628){const _0x309cf7=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x45a2e6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a8628)});if(!_0x309cf7['ok']){const _0x4674f9=await _0x309cf7['json']()['catch'](()=>({'message':_0x309cf7['statusText']}));throw new Error(_0x4674f9['message']||'Failed\x20to\x20update\x20team');}return await _0x309cf7['json']();},async 'deleteTeam'(_0x399512){const _0x3657bf=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x399512),{'method':'DELETE'});if(!_0x3657bf['ok']){const _0x54625a=await _0x3657bf['json']()['catch'](()=>({'message':_0x3657bf['statusText']}));throw new Error(_0x54625a['message']||'Failed\x20to\x20delete\x20team');}return await _0x3657bf['json']();},async 'addTeamMember'(_0x2d8f14,_0x2837f6){const _0x58b283=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x2d8f14)+'/members',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'userId':_0x2837f6})});if(!_0x58b283['ok']){const _0xee9220=await _0x58b283['json']()['catch'](()=>({'message':_0x58b283['statusText']}));throw new Error(_0xee9220['message']||'Failed\x20to\x20add\x20team\x20member');}return await _0x58b283['json']();},async 'removeTeamMember'(_0x4c298b,_0x3342fc){const _0x34b154=await fetch(API_BASE+'/teams/'+encodeURIComponent(_0x4c298b)+'/members/'+encodeURIComponent(_0x3342fc),{'method':'DELETE'});if(!_0x34b154['ok']){const _0x34505e=await _0x34b154['json']()['catch'](()=>({'message':_0x34b154['statusText']}));throw new Error(_0x34505e['message']||'Failed\x20to\x20remove\x20team\x20member');}return await _0x34b154['json']();},async 'getBindings'(_0x4c81da={}){const _0x3a4c83=new URLSearchParams();if(_0x4c81da['resource_type'])_0x3a4c83['set']('resource_type',_0x4c81da['resource_type']);if(_0x4c81da['resource_id'])_0x3a4c83['set']('resource_id',_0x4c81da['resource_id']);if(_0x4c81da['subject_type'])_0x3a4c83['set']('subject_type',_0x4c81da['subject_type']);if(_0x4c81da['subject_id'])_0x3a4c83['set']('subject_id',_0x4c81da['subject_id']);const _0x27a2d0=_0x3a4c83['toString'](),_0x25fe49=await fetch(API_BASE+'/bindings'+(_0x27a2d0?'?'+_0x27a2d0:''));if(!_0x25fe49['ok']){const _0x197bc6=await _0x25fe49['json']()['catch'](()=>({'message':_0x25fe49['statusText']}));throw new Error(_0x197bc6['message']||'Failed\x20to\x20get\x20bindings');}return await _0x25fe49['json']();},async 'createBinding'(_0x2d5a48){const _0x5ad55b=await fetch(API_BASE+'/bindings',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2d5a48)});if(!_0x5ad55b['ok']){const _0x393ecc=await _0x5ad55b['json']()['catch'](()=>({'message':_0x5ad55b['statusText']}));throw new Error(_0x393ecc['message']||'Failed\x20to\x20create\x20binding');}return await _0x5ad55b['json']();},async 'updateBinding'(_0xf3dfc0,_0x162521){const _0x1d405f=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xf3dfc0),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x162521)});if(!_0x1d405f['ok']){const _0x56db67=await _0x1d405f['json']()['catch'](()=>({'message':_0x1d405f['statusText']}));throw new Error(_0x56db67['message']||'Failed\x20to\x20update\x20binding');}return await _0x1d405f['json']();},async 'deleteBinding'(_0xb25b6d){const _0x188d57=await fetch(API_BASE+'/bindings/'+encodeURIComponent(_0xb25b6d),{'method':'DELETE'});if(!_0x188d57['ok']){const _0x472e1c=await _0x188d57['json']()['catch'](()=>({'message':_0x188d57['statusText']}));throw new Error(_0x472e1c['message']||'Failed\x20to\x20delete\x20binding');}return await _0x188d57['json']();},async 'getRoleDefinitions'(){const _0x54f551=await fetch(API_BASE+'/roles');if(!_0x54f551['ok']){const _0x403822=await _0x54f551['json']()['catch'](()=>({'message':_0x54f551['statusText']}));throw new Error(_0x403822['message']||'Failed\x20to\x20get\x20role\x20definitions');}return await _0x54f551['json']();},async 'getRoleDefinition'(_0x2e5f90){const _0x4ab75e=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x2e5f90));if(!_0x4ab75e['ok']){const _0x58cadc=await _0x4ab75e['json']()['catch'](()=>({'message':_0x4ab75e['statusText']}));throw new Error(_0x58cadc['message']||'Failed\x20to\x20get\x20role\x20definition');}return await _0x4ab75e['json']();},async 'createRoleDefinition'(_0x3a677a){const _0x33641d=await fetch(API_BASE+'/roles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3a677a)});if(!_0x33641d['ok']){const _0x5b8c98=await _0x33641d['json']()['catch'](()=>({'message':_0x33641d['statusText']}));throw new Error(_0x5b8c98['message']||_0x5b8c98['error']||'Failed\x20to\x20create\x20role\x20definition');}return await _0x33641d['json']();},async 'updateRoleDefinition'(_0x4fcce2,_0x1f71f1){const _0x49e968=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x4fcce2),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1f71f1)});if(!_0x49e968['ok']){const _0x5ee456=await _0x49e968['json']()['catch'](()=>({'message':_0x49e968['statusText']}));throw new Error(_0x5ee456['message']||_0x5ee456['error']||'Failed\x20to\x20update\x20role\x20definition');}return await _0x49e968['json']();},async 'deleteRoleDefinition'(_0x20afee){const _0x2ab735=await fetch(API_BASE+'/roles/'+encodeURIComponent(_0x20afee),{'method':'DELETE'});if(!_0x2ab735['ok']){const _0x444e15=await _0x2ab735['json']()['catch'](()=>({'message':_0x2ab735['statusText']}));throw new Error(_0x444e15['message']||_0x444e15['error']||'Failed\x20to\x20delete\x20role\x20definition');}return await _0x2ab735['json']();},async 'getAvailablePermissions'(){const _0x575d12=await fetch(API_BASE+'/roles/available-permissions');if(!_0x575d12['ok']){const _0x52f3d2=await _0x575d12['json']()['catch'](()=>({'message':_0x575d12['statusText']}));throw new Error(_0x52f3d2['message']||'Failed\x20to\x20get\x20available\x20permissions');}return await _0x575d12['json']();},async 'getGitProviderAllowedTeams'(_0xae52fe){const _0x5072a6=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xae52fe)+'/allowed-teams');if(!_0x5072a6['ok']){const _0x52711a=await _0x5072a6['json']()['catch'](()=>({'message':_0x5072a6['statusText']}));throw new Error(_0x52711a['message']||'Failed\x20to\x20get\x20allowed\x20teams');}return await _0x5072a6['json']();},async 'setGitProviderAllowedTeams'(_0xf37664,_0x7e8b8f){const _0x3b5171=await fetch(API_BASE+'/settings/git-provider-setup/'+encodeURIComponent(_0xf37664)+'/allowed-teams',{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'allowedTeams':_0x7e8b8f})});if(!_0x3b5171['ok']){const _0x35d2ae=await _0x3b5171['json']()['catch'](()=>({'message':_0x3b5171['statusText']}));throw new Error(_0x35d2ae['message']||'Failed\x20to\x20set\x20allowed\x20teams');}return await _0x3b5171['json']();}};const toastState={'toasts':[],'nextId':0x1,'maxToasts':0x5,'container':null,'baseBottom':0x20,'gap':0xc,'defaultHeight':0x30};function getToastContainer(){return!toastState['container']&&(toastState['container']=document['createElement']('div'),toastState['container']['id']='toast-container',toastState['container']['setAttribute']('aria-live','polite'),toastState['container']['setAttribute']('aria-atomic','false'),document['body']['appendChild'](toastState['container'])),toastState['container'];}function repositionAllToasts(){requestAnimationFrame(()=>{let _0x3db679=toastState['baseBottom'];toastState['toasts']['forEach'](_0x2c4985=>{_0x2c4985['el']['style']['bottom']=_0x3db679+'px';const _0x4b0b20=_0x2c4985['el']['offsetHeight']||toastState['defaultHeight'];_0x3db679+=_0x4b0b20+toastState['gap'];});});}function removeToastById(_0x2a1b4f){const _0x2d8d3b=toastState['toasts']['findIndex'](_0x4b634d=>_0x4b634d['id']===_0x2a1b4f);if(_0x2d8d3b===-0x1)return;const _0xcde4b7=toastState['toasts'][_0x2d8d3b];if(_0xcde4b7['timeoutId'])clearTimeout(_0xcde4b7['timeoutId']);_0xcde4b7['el']['classList']['remove']('show'),setTimeout(()=>_0xcde4b7['el']['remove'](),0x12c),toastState['toasts']['splice'](_0x2d8d3b,0x1),repositionAllToasts();}function registerToast(_0xaf70c0){return toastState['toasts']['length']>=toastState['maxToasts']&&removeToastById(toastState['toasts'][0x0]['id']),toastState['toasts']['push'](_0xaf70c0),repositionAllToasts(),_0xaf70c0['id'];}function getNextToastId(){return toastState['nextId']++;}const MARKDOWN_THEME_CHANGE_EVENT='profound-theme-change',MERMAID_SCRIPT_ID='coderflow-mermaid-script',MERMAID_SCRIPT_SRC='/vendor/mermaid/11.13.0/dist/mermaid.min.js';let sharedMarkedRenderer=null,markedConfigured=![],mermaidLoadPromise=null,mermaidObserverInitialized=![],mermaidMutationObserver=null,mermaidRenderScheduled=![];const pendingMermaidNodes=new Set();function escapeHtmlValue(_0x1bc448){if(_0x1bc448===null||_0x1bc448===undefined)return'';return String(_0x1bc448)['replace'](/&/g,'&amp;')['replace'](/</g,'&lt;')['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;')['replace'](/'/g,'&#39;');}function getMarkdownCodeBlockPayload(_0xc74e2e,_0x49bb76){if(_0xc74e2e&&typeof _0xc74e2e==='object'&&!Array['isArray'](_0xc74e2e))return{'code':typeof _0xc74e2e['text']==='string'?_0xc74e2e['text']:'','language':typeof _0xc74e2e['lang']==='string'?_0xc74e2e['lang']:''};return{'code':typeof _0xc74e2e==='string'?_0xc74e2e:'','language':typeof _0x49bb76==='string'?_0x49bb76:''};}function buildMermaidBlock(_0x1fb626){const _0x1ee222=String(_0x1fb626||'');return'<div\x20class=\x22mermaid\x22\x20data-mermaid-source=\x22'+escapeHtmlValue(encodeURIComponent(_0x1ee222))+'\x22>'+escapeHtmlValue(_0x1ee222)+'</div>';}function getSharedMarkedRenderer(){if(sharedMarkedRenderer||typeof marked==='undefined'||!marked['Renderer'])return sharedMarkedRenderer;const _0x4721b5=new marked['Renderer'](),_0x3f4631=_0x4721b5['code']['bind'](_0x4721b5);return _0x4721b5['code']=function(_0x1ef890,_0x27306e,..._0x1d8813){const {code:_0x130f1a,language:_0x401682}=getMarkdownCodeBlockPayload(_0x1ef890,_0x27306e),_0x2fda44=String(_0x401682||'')['trim']()['toLowerCase']();if(_0x2fda44==='mermaid')return buildMermaidBlock(_0x130f1a);const _0x52bf76=window['hljs']||(typeof hljs!=='undefined'?hljs:null);if(_0x52bf76&&_0x2fda44)try{const _0x2a7846=_0x52bf76['getLanguage'](_0x2fda44)?_0x2fda44:'plaintext',_0x4331a6=_0x52bf76['highlight'](_0x130f1a,{'language':_0x2a7846})['value'];return'<pre><code\x20class=\x22hljs\x20language-'+escapeHtmlValue(_0x2fda44)+'\x22>'+_0x4331a6+'</code></pre>';}catch(_0x1b403a){console['error']('Syntax\x20highlighting\x20error:',_0x1b403a);}return _0x3f4631(_0x1ef890,_0x27306e,..._0x1d8813);},sharedMarkedRenderer=_0x4721b5,_0x4721b5;}function ensureMarkedConfigured(){if(markedConfigured||typeof marked==='undefined'||!marked['setOptions'])return;marked['setOptions']({'gfm':!![],'breaks':![],'headerIds':![],'mangle':![],'renderer':getSharedMarkedRenderer()}),markedConfigured=!![];}function getMermaidTheme(){return document['documentElement']['dataset']['theme']==='dark'?'dark':'default';}function configureMermaidInstance(){const _0x4ea727=window['mermaid'];if(!_0x4ea727||typeof _0x4ea727['initialize']!=='function')return _0x4ea727||null;return _0x4ea727['initialize']({'startOnLoad':![],'theme':getMermaidTheme()}),_0x4ea727;}function loadMermaid(){if(window['mermaid'])return Promise['resolve'](configureMermaidInstance());if(mermaidLoadPromise)return mermaidLoadPromise;return mermaidLoadPromise=new Promise((_0x53627b,_0x28f2c1)=>{const _0x16109c=()=>_0x53627b(configureMermaidInstance()),_0x437fec=()=>{mermaidLoadPromise=null,_0x28f2c1(new Error('Failed\x20to\x20load\x20Mermaid\x20renderer'));};let _0x7f945b=document['getElementById'](MERMAID_SCRIPT_ID);!_0x7f945b&&(_0x7f945b=document['createElement']('script'),_0x7f945b['id']=MERMAID_SCRIPT_ID,_0x7f945b['src']=MERMAID_SCRIPT_SRC,_0x7f945b['async']=!![],document['head']['appendChild'](_0x7f945b));if(window['mermaid']){_0x16109c();return;}_0x7f945b['addEventListener']('load',_0x16109c,{'once':!![]}),_0x7f945b['addEventListener']('error',_0x437fec,{'once':!![]});}),mermaidLoadPromise;}function restoreMermaidSource(_0x58e966){const _0x3fb82c=_0x58e966['getAttribute']('data-mermaid-source');if(!_0x3fb82c)return null;let _0x109df2=_0x3fb82c;try{_0x109df2=decodeURIComponent(_0x3fb82c);}catch{}return _0x58e966['textContent']=_0x109df2,_0x58e966['removeAttribute']('data-processed'),_0x58e966['removeAttribute']('aria-roledescription'),_0x58e966['removeAttribute']('role'),_0x58e966['removeAttribute']('aria-label'),_0x109df2;}function collectMermaidNodes(_0x2ae4e9,_0xa864d6){if(!(_0x2ae4e9 instanceof Element))return;_0x2ae4e9['matches']('.mermaid[data-mermaid-source]')&&_0xa864d6['add'](_0x2ae4e9),_0x2ae4e9['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x27560f=>{_0xa864d6['add'](_0x27560f);});}function scheduleMermaidRender(){if(mermaidRenderScheduled)return;mermaidRenderScheduled=!![];const _0x501b97=typeof requestAnimationFrame==='function'?requestAnimationFrame:_0x27972a=>setTimeout(_0x27972a,0x0);_0x501b97(()=>{mermaidRenderScheduled=![],flushMermaidRenderQueue()['catch'](_0xb26c66=>{console['error']('Mermaid\x20render\x20queue\x20failed:',_0xb26c66);});});}function queueMermaidRender(_0x29ccb8){const _0x17762b=new Set();_0x29ccb8 instanceof Document||_0x29ccb8 instanceof DocumentFragment?_0x29ccb8['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x1cd59f=>_0x17762b['add'](_0x1cd59f)):collectMermaidNodes(_0x29ccb8,_0x17762b);if(_0x17762b['size']===0x0)return;_0x17762b['forEach'](_0x48aa55=>pendingMermaidNodes['add'](_0x48aa55)),scheduleMermaidRender();}async function flushMermaidRenderQueue(){const _0x4c5ae5=Array['from'](pendingMermaidNodes)['filter'](_0xcdbd2=>_0xcdbd2['isConnected']);pendingMermaidNodes['clear']();if(_0x4c5ae5['length']===0x0)return;const _0x1943a4=await loadMermaid();if(!_0x1943a4)return;configureMermaidInstance();const _0x6a38a6=getMermaidTheme();for(const _0x59d61d of _0x4c5ae5){const _0xcbef0a=_0x59d61d['getAttribute']('data-mermaid-source');if(!_0xcbef0a)continue;const _0x113c14=_0x59d61d['getAttribute']('data-processed')==='true';if(_0x113c14&&_0x59d61d['dataset']['mermaidTheme']===_0x6a38a6)continue;restoreMermaidSource(_0x59d61d);try{if(typeof _0x1943a4['run']==='function')await _0x1943a4['run']({'nodes':[_0x59d61d]});else typeof _0x1943a4['init']==='function'&&_0x1943a4['init'](undefined,[_0x59d61d]);_0x59d61d['dataset']['mermaidTheme']=_0x6a38a6,delete _0x59d61d['dataset']['mermaidError'];}catch(_0x51ff2c){console['error']('Mermaid\x20render\x20failed:',_0x51ff2c),restoreMermaidSource(_0x59d61d),_0x59d61d['dataset']['mermaidError']='true',delete _0x59d61d['dataset']['mermaidTheme'];}}}function rerenderAllMermaidDiagrams(){document['querySelectorAll']('.mermaid[data-mermaid-source]')['forEach'](_0x584bff=>{_0x584bff['removeAttribute']('data-processed'),pendingMermaidNodes['add'](_0x584bff);}),scheduleMermaidRender();}function initializeMermaidObserver(){if(mermaidObserverInitialized||!document['body'])return;mermaidObserverInitialized=!![],mermaidMutationObserver=new MutationObserver(_0x1fea35=>{_0x1fea35['forEach'](_0x5e8fc2=>{_0x5e8fc2['addedNodes']['forEach'](_0x422c9d=>{_0x422c9d['nodeType']===Node['ELEMENT_NODE']&&queueMermaidRender(_0x422c9d);});});}),mermaidMutationObserver['observe'](document['body'],{'childList':!![],'subtree':!![]}),window['addEventListener'](MARKDOWN_THEME_CHANGE_EVENT,rerenderAllMermaidDiagrams),queueMermaidRender(document['body']);}function ensureMermaidObserver(){if(mermaidObserverInitialized)return;if(document['body']){initializeMermaidObserver();return;}window['addEventListener']('DOMContentLoaded',initializeMermaidObserver,{'once':!![]});}ensureMarkedConfigured(),ensureMermaidObserver();export const ToastManager={'getContainer':getToastContainer,'register':registerToast,'remove':removeToastById,'reposition':repositionAllToasts,'getNextId':getNextToastId,'getState':()=>toastState};export const Utils={'formatRelativeTime'(_0x486ae7){const _0x2587c9=new Date(_0x486ae7),_0x22807e=new Date(),_0x434560=_0x22807e-_0x2587c9,_0x1ca9e8=Math['floor'](_0x434560/0x3e8),_0x49a100=Math['floor'](_0x1ca9e8/0x3c),_0x1ca177=Math['floor'](_0x49a100/0x3c),_0x431b3c=Math['floor'](_0x1ca177/0x18);if(_0x1ca9e8<0x3c)return'now';if(_0x49a100<0x3c)return _0x49a100+'m\x20ago';if(_0x1ca177<0x18)return _0x1ca177+'h\x20ago';return _0x431b3c+'d\x20ago';},'getStatusIcon'(_0x56ad3d){switch(_0x56ad3d){case'completed':return'✓';case'running':return'⋯';case'interrupted':return'⏹';case'failed':return'✗';case'staged':return'◎';case'queued':return'⏸';default:return'○';}},'getStatusClass'(_0x3bde86){switch(_0x3bde86){case'completed':return'status-completed';case'running':return'status-running';case'interrupted':return'status-interrupted';case'failed':return'status-failed';case'staged':return'status-staged';case'queued':return'status-queued';default:return'status-unknown';}},async 'copyToClipboard'(_0x1c5cd5,_0x2b8202=null){if(navigator['clipboard']&&navigator['clipboard']['write'])try{const _0x3b83c2={};_0x3b83c2['text/plain']=new Blob([_0x1c5cd5],{'type':'text/plain'});_0x2b8202&&(_0x3b83c2['text/html']=new Blob([_0x2b8202],{'type':'text/html'}));const _0x49a108=new ClipboardItem(_0x3b83c2);return await navigator['clipboard']['write']([_0x49a108]),!![];}catch(_0x6b4518){console['warn']('Clipboard\x20API\x20write()\x20failed,\x20trying\x20fallback:',_0x6b4518);}try{const _0x25ad0f=_0x5066bc=>{_0x5066bc['preventDefault'](),_0x5066bc['clipboardData']['setData']('text/plain',_0x1c5cd5),_0x2b8202&&_0x5066bc['clipboardData']['setData']('text/html',_0x2b8202);};document['addEventListener']('copy',_0x25ad0f);const _0xdddb85=document['execCommand']('copy');document['removeEventListener']('copy',_0x25ad0f);if(_0xdddb85)return!![];}catch(_0x1a7150){console['warn']('execCommand\x20copy\x20event\x20injection\x20failed:',_0x1a7150);}try{const _0x2e0ded=document['createElement']('textarea');_0x2e0ded['value']=_0x1c5cd5,_0x2e0ded['style']['position']='fixed',_0x2e0ded['style']['opacity']='0',_0x2e0ded['style']['pointerEvents']='none',document['body']['appendChild'](_0x2e0ded),_0x2e0ded['select']();const _0x154107=document['execCommand']('copy');return document['body']['removeChild'](_0x2e0ded),_0x154107;}catch(_0x4590de){return console['error']('All\x20clipboard\x20methods\x20failed:',_0x4590de),![];}},'showToast'(_0x1f8876,_0x476083='info'){const _0x5fcd66=getNextToastId(),_0x59f400=document['createElement']('div');_0x59f400['className']='toast\x20toast-'+_0x476083,_0x59f400['textContent']=_0x1f8876,_0x59f400['dataset']['toastId']=_0x5fcd66,document['body']['appendChild'](_0x59f400);const _0x2d7e90=_0x476083==='error'?0x2710:0xbb8,_0x1ede5=setTimeout(()=>{removeToastById(_0x5fcd66);},_0x2d7e90),_0x10ac3b={'id':_0x5fcd66,'el':_0x59f400,'timeoutId':_0x1ede5};return registerToast(_0x10ac3b),requestAnimationFrame(()=>{requestAnimationFrame(()=>{_0x59f400['classList']['add']('show');});}),_0x5fcd66;},'showError'(_0x27318b){console['error'](_0x27318b);const _0x597b81=typeof _0x27318b==='string'?_0x27318b:_0x27318b['message']||'An\x20error\x20occurred';this['showToast'](_0x597b81,'error');},'showSuccess'(_0x453dcc){this['showToast'](_0x453dcc,'success');},'capitalize'(_0x17dac1){if(!_0x17dac1)return'';return _0x17dac1['charAt'](0x0)['toUpperCase']()+_0x17dac1['slice'](0x1)['toLowerCase']();},'escapeHtml'(_0xfa8745){return escapeHtmlValue(_0xfa8745);},'ansiToHtml'(_0x30823d){if(_0x30823d===null||_0x30823d===undefined)return'';let _0x48bd65=this['escapeHtml'](_0x30823d);const _0x11d979={'30':'#000000','31':'#cc0000','32':'#4e9a06','33':'#c4a000','34':'#3465a4','35':'#75507b','36':'#06989a','37':'#d3d7cf','90':'#555753','91':'#ef2929','92':'#8ae234','93':'#fce94f','94':'#729fcf','95':'#ad7fa8','96':'#34e2e2','97':'#eeeeec'},_0xbb5144={'40':'#000000','41':'#cc0000','42':'#4e9a06','43':'#c4a000','44':'#3465a4','45':'#75507b','46':'#06989a','47':'#d3d7cf','100':'#555753','101':'#ef2929','102':'#8ae234','103':'#fce94f','104':'#729fcf','105':'#ad7fa8','106':'#34e2e2','107':'#eeeeec'};let _0x6e6c07=0x0;return _0x48bd65=_0x48bd65['replace'](/\x1b\[([0-9;]*)m/g,(_0x77ac3,_0x5dc68f)=>{if(!_0x5dc68f||_0x5dc68f==='0'){const _0xa61cd7='</span>'['repeat'](_0x6e6c07);return _0x6e6c07=0x0,_0xa61cd7;}const _0x507852=_0x5dc68f['split'](';'),_0x28b068=[];for(const _0x4d7274 of _0x507852){if(_0x4d7274==='1')_0x28b068['push']('font-weight:bold');else{if(_0x4d7274==='2')_0x28b068['push']('opacity:0.7');else{if(_0x4d7274==='3')_0x28b068['push']('font-style:italic');else{if(_0x4d7274==='4')_0x28b068['push']('text-decoration:underline');else{if(_0x4d7274==='9')_0x28b068['push']('text-decoration:line-through');else{if(_0x11d979[_0x4d7274])_0x28b068['push']('color:'+_0x11d979[_0x4d7274]);else{if(_0xbb5144[_0x4d7274])_0x28b068['push']('background-color:'+_0xbb5144[_0x4d7274]);}}}}}}}if(_0x28b068['length']>0x0)return _0x6e6c07++,'<span\x20style=\x22'+_0x28b068['join'](';')+'\x22>';return'';}),_0x48bd65+='</span>'['repeat'](_0x6e6c07),_0x48bd65=_0x48bd65['replace'](/\\u001b\[([0-9;]*)m/g,(_0x359644,_0x5ca348)=>{if(!_0x5ca348||_0x5ca348==='0')return'';const _0x446e7a=_0x5ca348['split'](';'),_0x5b9176=[];for(const _0x1dc714 of _0x446e7a){if(_0x1dc714==='1')_0x5b9176['push']('font-weight:bold');else{if(_0x11d979[_0x1dc714])_0x5b9176['push']('color:'+_0x11d979[_0x1dc714]);else{if(_0xbb5144[_0x1dc714])_0x5b9176['push']('background-color:'+_0xbb5144[_0x1dc714]);}}}if(_0x5b9176['length']>0x0)return'<span\x20style=\x22'+_0x5b9176['join'](';')+'\x22>';return'';}),_0x48bd65;},'showModal'({title:_0x4a1531,content:_0x1adcdd,buttons:buttons=[]}){const _0x40c953='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22\x20id=\x22utils-modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20id=\x22utils-modal-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2>'+this['escapeHtml'](_0x4a1531)+'</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22utils-modal-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1adcdd+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+buttons['map']((_0x4a5d35,_0x5a55c9)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22'+(_0x4a5d35['className']||'btn-secondary')+'\x22\x20data-btn-index=\x22'+_0x5a55c9+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+this['escapeHtml'](_0x4a5d35['text'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20')['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20',_0x19cb72=document['createElement']('div');_0x19cb72['id']='utils-modal',_0x19cb72['className']='modal',_0x19cb72['innerHTML']=_0x40c953,document['body']['appendChild'](_0x19cb72);const _0x406cb3=document['getElementById']('utils-modal-close');_0x406cb3&&_0x406cb3['addEventListener']('click',()=>this['hideModal']());const _0xfeb2=_0x19cb72['querySelectorAll']('[data-btn-index]');_0xfeb2['forEach'](_0x142380=>{const _0x309b02=parseInt(_0x142380['dataset']['btnIndex']);buttons[_0x309b02]?.['onClick']&&_0x142380['addEventListener']('click',buttons[_0x309b02]['onClick']);});const _0x33450a=document['getElementById']('utils-modal-overlay');_0x33450a&&_0x33450a['addEventListener']('click',()=>this['hideModal']());},'hideModal'(){const _0x4d67da=document['getElementById']('utils-modal');_0x4d67da&&_0x4d67da['remove']();},'parseKeyValuePairs'(_0x3734e4){const _0x80f27f={};if(!_0x3734e4)return _0x80f27f;return _0x3734e4['split'](/\r?\n/)['map'](_0x131541=>_0x131541['trim']())['filter'](Boolean)['forEach'](_0x2d118e=>{const _0x481f17=_0x2d118e['indexOf']('=');if(_0x481f17>0x0){const _0x2a11e1=_0x2d118e['slice'](0x0,_0x481f17)['trim'](),_0x2a68ae=_0x2d118e['slice'](_0x481f17+0x1)['trim']();if(_0x2a11e1)_0x80f27f[_0x2a11e1]=_0x2a68ae;}}),_0x80f27f;},'debounce'(_0x44041d,_0x700f0b=0xfa){let _0x194cdb=null;return(..._0x15afa7)=>{clearTimeout(_0x194cdb),_0x194cdb=setTimeout(()=>_0x44041d['apply'](this,_0x15afa7),_0x700f0b);};},'formatTimestamp'(_0x475a77){if(!_0x475a77)return'N/A';const _0x137872=new Date(_0x475a77);return _0x137872['toLocaleDateString']()+'\x20'+_0x137872['toLocaleTimeString']();},'getQueryParams'(){const _0x127ac4=new URLSearchParams(window['location']['search']),_0x11f484={};for(const [_0xbfc225,_0x2ba587]of _0x127ac4){_0x11f484[_0xbfc225]=_0x2ba587;}return _0x11f484;},'formatDuration'(_0xc9cd2d,_0x1cc6eb){if(!_0xc9cd2d)return'N/A';const _0x4b7248=new Date(_0xc9cd2d),_0x2ecbbd=_0x1cc6eb?new Date(_0x1cc6eb):new Date(),_0x452147=_0x2ecbbd-_0x4b7248;if(_0x452147<0x0)return'0s';const _0x11a9a9=Math['floor'](_0x452147/0x3e8),_0x2acb28=Math['floor'](_0x11a9a9/0x3c),_0x529846=Math['floor'](_0x2acb28/0x3c),_0x422d0a=Math['floor'](_0x529846/0x18);if(_0x11a9a9<0x3c)return _0x11a9a9+'s';if(_0x2acb28<0x3c)return _0x2acb28+'m\x20'+_0x11a9a9%0x3c+'s';if(_0x529846<0x18)return _0x529846+'h\x20'+_0x2acb28%0x3c+'m\x20'+_0x11a9a9%0x3c+'s';return _0x422d0a+'d\x20'+_0x529846%0x18+'h\x20'+_0x2acb28%0x3c+'m';},'renderMarkdown'(_0x137374,_0x849220={}){if(!_0x137374)return'';_0x137374=this['rewriteAttachmentLinks'](_0x137374,_0x849220),_0x137374=this['rewriteColorSyntax'](_0x137374);if(typeof marked==='undefined')return console['warn']('marked.js\x20not\x20loaded,\x20using\x20fallback\x20renderer'),this['renderMarkdownFallback'](_0x137374,_0x849220);ensureMarkedConfigured(),ensureMermaidObserver();try{return marked['parse'](_0x137374);}catch(_0x3e8108){return console['error']('Markdown\x20parsing\x20error:',_0x3e8108),this['renderMarkdownFallback'](_0x137374,_0x849220);}},'rewriteAttachmentLinks'(_0x328576,_0x541ebd={}){const _0x56b8f6=typeof _0x541ebd['resolveAttachmentUrl']==='function'?_0x541ebd['resolveAttachmentUrl']:_0x541ebd['taskId']?_0x312106=>API_BASE+'/tasks/'+_0x541ebd['taskId']+'/attachments/'+encodeURIComponent(_0x312106):null;if(!_0x56b8f6)return _0x328576;return String(_0x328576)['replace'](/\]\(attachment:(?:\/\/)?([^)]+)\)/g,(_0x2eccd9,_0x1f6630)=>{const _0x24550b=String(_0x1f6630||'')['trim']();if(!_0x24550b)return _0x2eccd9;let _0x38ceee=_0x24550b;try{_0x38ceee=decodeURIComponent(_0x24550b);}catch{}const _0x1addb0=_0x56b8f6(_0x38ceee);if(!_0x1addb0)return _0x2eccd9;return']('+_0x1addb0+')';});},'rewriteColorSyntax'(_0x1dbcfa){if(!_0x1dbcfa)return _0x1dbcfa;return String(_0x1dbcfa)['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,(_0x2d81ca,_0x5aea43,_0x8c245e)=>{const _0x58d586=this['rewriteColorSyntax'](_0x8c245e);return'<span\x20style=\x22color:\x20'+_0x5aea43+'\x22>'+_0x58d586+'</span>';});},'renderMarkdownFallback'(_0x313fe1,_0x47b43a={}){if(!_0x313fe1)return'';_0x313fe1=_0x313fe1['replace'](/\r\n/g,'\x0a'),_0x313fe1=_0x313fe1['replace'](/\r/g,'\x0a'),_0x313fe1=this['rewriteAttachmentLinks'](_0x313fe1,_0x47b43a);let _0x1004c2=this['escapeHtml'](_0x313fe1);return _0x1004c2=_0x1004c2['replace'](/^### (.*$)/gm,'<h3>$1</h3>'),_0x1004c2=_0x1004c2['replace'](/^## (.*$)/gm,'<h2>$1</h2>'),_0x1004c2=_0x1004c2['replace'](/^# (.*$)/gm,'<h1>$1</h1>'),_0x1004c2=_0x1004c2['replace'](/\*\*(.+?)\*\*/g,'<strong>$1</strong>'),_0x1004c2=_0x1004c2['replace'](/\*(.+?)\*/g,'<em>$1</em>'),_0x1004c2=_0x1004c2['replace'](/```([^`]*?)```/gs,'<pre><code>$1</code></pre>'),_0x1004c2=_0x1004c2['replace'](/`([^`]+?)`/g,'<code>$1</code>'),_0x1004c2=_0x1004c2['replace'](/\[([^\]]+)\]\(([^)]+)\)/g,'<a\x20href=\x22$2\x22\x20target=\x22_blank\x22>$1</a>'),_0x1004c2=_0x1004c2['replace'](/\{color:(#[0-9A-Fa-f]{3,6})\}([\s\S]*?)\{\/color\}/g,'<span\x20style=\x22color:\x20$1\x22>$2</span>'),_0x1004c2=_0x1004c2['replace'](/\n\n/g,'</p><p>'),_0x1004c2=_0x1004c2['replace'](/\n/g,'<br>'),'<p>'+_0x1004c2+'</p>';},'generateUUID'(){if(typeof crypto!=='undefined'&&typeof crypto['randomUUID']==='function')return crypto['randomUUID']();const _0x1e401b=new Uint8Array(0x10);crypto['getRandomValues'](_0x1e401b),_0x1e401b[0x6]=_0x1e401b[0x6]&0xf|0x40,_0x1e401b[0x8]=_0x1e401b[0x8]&0x3f|0x80;const _0x261ccf=Array['from'](_0x1e401b,_0x4bd3b1=>_0x4bd3b1['toString'](0x10)['padStart'](0x2,'0'))['join']('');return _0x261ccf['slice'](0x0,0x8)+'-'+_0x261ccf['slice'](0x8,0xc)+'-'+_0x261ccf['slice'](0xc,0x10)+'-'+_0x261ccf['slice'](0x10,0x14)+'-'+_0x261ccf['slice'](0x14);}};export class CustomSelect{constructor(_0x24a97e,_0x33ca37={}){this['nativeSelect']=_0x24a97e,this['options']=_0x33ca37,this['isOpen']=![],this['selectedValue']=_0x24a97e['value']||'',this['searchable']=_0x33ca37['searchable']||![],this['searchQuery']='',this['allOptions']=[],this['init']();}['init'](){const _0x2ba448=document['createElement']('div');_0x2ba448['className']='custom-select';const _0x5120a2=document['createElement']('div');_0x5120a2['className']='custom-select-trigger',_0x5120a2['setAttribute']('tabindex','0'),_0x5120a2['setAttribute']('role','button'),_0x5120a2['setAttribute']('aria-haspopup','listbox');const _0x5bf7c0=document['createElement']('span');_0x5bf7c0['className']='custom-select-trigger-text';const _0x29c4f8=document['createElement']('span');_0x29c4f8['className']='custom-select-arrow',_0x29c4f8['textContent']='▼',_0x5120a2['appendChild'](_0x5bf7c0),_0x5120a2['appendChild'](_0x29c4f8);const _0x12a1ef=document['createElement']('div');_0x12a1ef['className']='custom-select-dropdown',_0x12a1ef['setAttribute']('role','listbox');if(this['searchable']){const _0x4c12b7=document['createElement']('div');_0x4c12b7['className']='custom-select-search';const _0x8a0b9f=document['createElement']('input');_0x8a0b9f['type']='text',_0x8a0b9f['className']='custom-select-search-input',_0x8a0b9f['placeholder']='Type\x20to\x20search...',_0x8a0b9f['setAttribute']('aria-label','Search\x20options'),_0x8a0b9f['addEventListener']('input',_0x234812=>{this['searchQuery']=_0x234812['target']['value']['toLowerCase'](),this['filterOptions']();}),_0x8a0b9f['addEventListener']('keydown',_0x245d30=>{if(_0x245d30['key']==='Escape')_0x245d30['stopPropagation'](),this['clearSearch'](),this['close']();else{if(_0x245d30['key']==='Enter'){_0x245d30['preventDefault'](),_0x245d30['stopPropagation']();const _0x2650e9=_0x12a1ef['querySelector']('.custom-select-option:not([style*=\x22display:\x20none\x22])');if(_0x2650e9){const _0x98d189=_0x2650e9['getAttribute']('data-value');this['select'](_0x98d189);}}}}),_0x4c12b7['appendChild'](_0x8a0b9f),_0x12a1ef['appendChild'](_0x4c12b7),this['searchInput']=_0x8a0b9f;}const _0x2eae8b=document['createElement']('div');_0x2eae8b['className']='custom-select-options',_0x12a1ef['appendChild'](_0x2eae8b),_0x2ba448['appendChild'](_0x5120a2),_0x2ba448['appendChild'](_0x12a1ef),this['nativeSelect']['style']['display']='none',this['nativeSelect']['parentNode']['insertBefore'](_0x2ba448,this['nativeSelect']),this['wrapper']=_0x2ba448,this['trigger']=_0x5120a2,this['triggerText']=_0x5bf7c0,this['dropdown']=_0x12a1ef,this['optionsContainer']=_0x2eae8b,_0x5120a2['addEventListener']('click',()=>this['toggle']()),_0x5120a2['addEventListener']('keydown',_0x31f325=>this['handleKeydown'](_0x31f325)),document['addEventListener']('click',_0x20ef1f=>{!_0x2ba448['contains'](_0x20ef1f['target'])&&this['close']();}),this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();const _0x460b5e=new MutationObserver(()=>{this['syncOptions'](),this['updateDisplay'](),this['updateDisabledState']();});_0x460b5e['observe'](this['nativeSelect'],{'childList':!![],'subtree':!![]}),this['nativeSelect']['addEventListener']('change',()=>{this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']();});const _0x133b6f=new MutationObserver(()=>{this['updateDisabledState']();});_0x133b6f['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['disabled']});const _0x586be0=new MutationObserver(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());});_0x586be0['observe'](this['nativeSelect'],{'attributes':!![],'attributeFilter':['value']}),setInterval(()=>{this['nativeSelect']['value']!==this['selectedValue']&&(this['selectedValue']=this['nativeSelect']['value'],this['updateDisplay']());},0x64);}['updateDisabledState'](){const _0x451913=this['nativeSelect']['disabled'];this['wrapper']['classList']['toggle']('disabled',_0x451913),this['trigger']['setAttribute']('aria-disabled',_0x451913?'true':'false'),this['trigger']['setAttribute']('tabindex',_0x451913?'-1':'0'),_0x451913&&this['close']();}['syncOptions'](){this['optionsContainer']['innerHTML']='';const _0x4d7959=Array['from'](this['nativeSelect']['options']);this['allOptions']=[];const _0x728e7a=_0x4d7959['filter'](_0x4e3cc3=>!_0x4e3cc3['disabled']&&!_0x4e3cc3['hidden']);_0x4d7959['forEach']((_0x136c78,_0x27c843)=>{const _0xe55b9a=document['createElement']('div');_0xe55b9a['className']='custom-select-option',_0xe55b9a['textContent']=_0x136c78['textContent'],_0xe55b9a['setAttribute']('data-value',_0x136c78['value']),_0xe55b9a['setAttribute']('data-index',_0x27c843),_0xe55b9a['setAttribute']('role','option'),_0x136c78['disabled']?_0xe55b9a['classList']['add']('disabled'):_0xe55b9a['addEventListener']('click',()=>this['select'](_0x136c78['value'])),_0x136c78['value']===this['selectedValue']&&_0xe55b9a['classList']['add']('selected'),this['optionsContainer']['appendChild'](_0xe55b9a),this['allOptions']['push']({'element':_0xe55b9a,'text':_0x136c78['textContent']['toLowerCase'](),'value':_0x136c78['value'],'disabled':_0x136c78['disabled']});});if(this['searchable']&&this['searchInput']){const _0x4c6f23=this['searchInput']['parentElement'];_0x728e7a['length']>0x3?_0x4c6f23['style']['display']='':_0x4c6f23['style']['display']='none';}}['filterOptions'](){if(!this['searchable'])return;const _0xa033da=this['searchQuery']['trim']();this['allOptions']['forEach'](_0x36c4e7=>{if(!_0xa033da||_0x36c4e7['disabled'])_0x36c4e7['element']['style']['display']='';else{const _0x1ba597=_0x36c4e7['text']['includes'](_0xa033da);_0x36c4e7['element']['style']['display']=_0x1ba597?'':'none';}});}['clearSearch'](){if(!this['searchable']||!this['searchInput'])return;this['searchInput']['value']='',this['searchQuery']='',this['filterOptions']();}['select'](_0x3e3c74){if(this['nativeSelect']['disabled'])return;this['selectedValue']=_0x3e3c74,this['nativeSelect']['value']=_0x3e3c74;const _0x1c5fc5=new Event('change',{'bubbles':!![]});this['nativeSelect']['dispatchEvent'](_0x1c5fc5),this['updateDisplay'](),this['close']();}['updateDisplay'](){const _0x5b51b2=this['nativeSelect']['options'][this['nativeSelect']['selectedIndex']];_0x5b51b2&&(this['triggerText']['textContent']=_0x5b51b2['textContent'],_0x5b51b2['disabled']||_0x5b51b2['hidden']?this['trigger']['classList']['add']('placeholder'):this['trigger']['classList']['remove']('placeholder')),this['optionsContainer']['querySelectorAll']('.custom-select-option')['forEach'](_0x1ac149=>{_0x1ac149['getAttribute']('data-value')===this['selectedValue']?_0x1ac149['classList']['add']('selected'):_0x1ac149['classList']['remove']('selected');});}['toggle'](){if(this['nativeSelect']['disabled'])return;this['isOpen']?this['close']():this['open']();}['open'](){if(this['nativeSelect']['disabled'])return;this['isOpen']=!![],this['trigger']['classList']['add']('open'),this['dropdown']['classList']['add']('open'),this['trigger']['setAttribute']('aria-expanded','true');const _0x5330bf=window['getComputedStyle'](this['dropdown']);if(_0x5330bf['position']==='fixed'){const _0x25e049=this['trigger']['getBoundingClientRect'](),_0x56ab9a=parseInt(_0x5330bf['maxHeight'])||0xc8,_0x4c49d0=window['innerHeight'],_0x1d12cd=_0x4c49d0-_0x25e049['bottom'],_0x2619c1=_0x25e049['top'];this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped');let _0x20e596;_0x1d12cd<_0x56ab9a&&_0x2619c1>_0x1d12cd?(this['dropdown']['style']['top']='auto',this['dropdown']['style']['bottom']=_0x4c49d0-_0x25e049['top']+'px',_0x20e596=Math['min'](_0x56ab9a,_0x2619c1-0xa),this['dropdown']['style']['maxHeight']=_0x20e596+'px',this['dropdown']['classList']['add']('flipped'),this['trigger']['classList']['add']('flipped')):(this['dropdown']['style']['top']=_0x25e049['bottom']+'px',this['dropdown']['style']['bottom']='auto',_0x20e596=Math['min'](_0x56ab9a,_0x1d12cd-0xa),this['dropdown']['style']['maxHeight']=_0x20e596+'px');if(this['optionsContainer']){let _0x51eeb8=_0x20e596;if(this['searchInput']){const _0x3bd832=this['searchInput']['parentElement'];_0x3bd832&&(_0x51eeb8-=_0x3bd832['offsetHeight']);}this['optionsContainer']['style']['maxHeight']=Math['max'](0x0,_0x51eeb8)+'px';}this['dropdown']['style']['left']=_0x25e049['left']+'px',this['dropdown']['style']['width']=_0x25e049['width']+'px';}this['options']['onOpen']&&this['options']['onOpen'](this);if(this['searchable']&&this['searchInput']){const _0xe89ef=this['searchInput']['parentElement'];_0xe89ef&&_0xe89ef['style']['display']!=='none'&&setTimeout(()=>{this['searchInput']['focus']();},0x32);}}['close'](){this['isOpen']=![],this['trigger']['classList']['remove']('open'),this['dropdown']['classList']['remove']('open'),this['trigger']['setAttribute']('aria-expanded','false'),this['dropdown']['style']['top']='',this['dropdown']['style']['bottom']='',this['dropdown']['style']['left']='',this['dropdown']['style']['width']='',this['dropdown']['style']['maxHeight']='',this['optionsContainer']&&(this['optionsContainer']['style']['maxHeight']=''),this['dropdown']['classList']['remove']('flipped'),this['trigger']['classList']['remove']('flipped'),this['clearSearch']();}['handleKeydown'](_0x1aac63){if(this['nativeSelect']['disabled'])return;if(_0x1aac63['key']==='Enter'||_0x1aac63['key']==='\x20')_0x1aac63['preventDefault'](),this['toggle']();else _0x1aac63['key']==='Escape'&&this['close']();}}export const ConfirmDialog={'_modal':null,'_resolvePromise':null,'init'(){if(document['getElementById']('confirm-dialog-modal'))return;const _0x5efad7='\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22confirm-dialog-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-content\x22\x20style=\x22max-width:\x20450px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<h2\x20id=\x22confirm-dialog-title\x22>Confirm</h2>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22confirm-dialog-close\x22\x20aria-label=\x22Close\x22>&times;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22confirm-dialog-message\x22></p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x22\x20id=\x22confirm-dialog-cancel\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-primary\x22\x20id=\x22confirm-dialog-confirm\x22>Confirm</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';document['body']['insertAdjacentHTML']('beforeend',_0x5efad7),this['_modal']=document['getElementById']('confirm-dialog-modal');const _0x5def83=document['getElementById']('confirm-dialog-close'),_0x59a542=document['getElementById']('confirm-dialog-cancel'),_0x4a9bb0=document['getElementById']('confirm-dialog-confirm'),_0x11fa52=this['_modal']['querySelector']('.modal-overlay');_0x5def83['addEventListener']('click',()=>this['_resolve'](![])),_0x59a542['addEventListener']('click',()=>this['_resolve'](![])),_0x4a9bb0['addEventListener']('click',()=>this['_resolve'](!![])),_0x11fa52['addEventListener']('click',()=>this['_resolve'](![])),this['_modal']['addEventListener']('keydown',_0x36740d=>{if(_0x36740d['key']==='Escape')_0x36740d['preventDefault'](),this['_resolve'](![]);else _0x36740d['key']==='Enter'&&(_0x36740d['preventDefault'](),this['_resolve'](!![]));});},'show'({title:title='Confirm',message:_0x777247,confirmText:confirmText='Confirm',cancelText:cancelText='Cancel',danger:danger=![]}){return!this['_modal']&&this['init'](),new Promise(_0x5a204a=>{this['_resolvePromise']=_0x5a204a,document['getElementById']('confirm-dialog-title')['textContent']=title,document['getElementById']('confirm-dialog-message')['textContent']=_0x777247;const _0x26285c=document['getElementById']('confirm-dialog-cancel'),_0x5637cc=document['getElementById']('confirm-dialog-confirm');_0x26285c['textContent']=cancelText,_0x5637cc['textContent']=confirmText,_0x5637cc['className']=danger?'btn-danger':'btn-primary',this['_modal']['hidden']=![],_0x5637cc['focus']();});},'_resolve'(_0x10233a){this['_modal']&&(this['_modal']['hidden']=!![]),this['_resolvePromise']&&(this['_resolvePromise'](_0x10233a),this['_resolvePromise']=null);}};export class AutocompleteSelect{constructor(_0x4cc381,_0x5b88e2={}){this['container']=_0x4cc381,this['options']={'placeholder':_0x5b88e2['placeholder']||'Type\x20to\x20search...','maxItems':_0x5b88e2['maxItems']||0x64,'loadItems':_0x5b88e2['loadItems']||(async()=>[]),'renderItem':_0x5b88e2['renderItem']||(_0x470cf3=>({'primary':String(_0x470cf3),'secondary':''})),'onSelect':_0x5b88e2['onSelect']||(()=>{}),'filterItems':_0x5b88e2['filterItems']||null,'getItemValue':_0x5b88e2['getItemValue']||(_0x539acd=>_0x539acd),'sortItems':_0x5b88e2['sortItems']||null,'debounceMs':_0x5b88e2['debounceMs']||0xc8,'minCharsForSearch':_0x5b88e2['minCharsForSearch']||0x0,'emptyMessage':_0x5b88e2['emptyMessage']||'No\x20results\x20found','loadingMessage':_0x5b88e2['loadingMessage']||'Loading...','preload':_0x5b88e2['preload']!==![],'searchMode':_0x5b88e2['searchMode']||'client'},this['allItems']=[],this['filteredItems']=[],this['selectedIndex']=-0x1,this['isOpen']=![],this['isLoading']=![],this['debounceTimer']=null,this['selectedItem']=null,this['hasLoadedOnce']=![],this['init'](),this['options']['preload']&&this['preloadData']();}['init'](){this['wrapper']=document['createElement']('div'),this['wrapper']['className']='autocomplete-select',this['input']=document['createElement']('input'),this['input']['type']='text',this['input']['className']='autocomplete-select-input',this['input']['placeholder']=this['options']['placeholder'],this['input']['setAttribute']('autocomplete','off'),this['input']['setAttribute']('aria-autocomplete','list'),this['input']['setAttribute']('aria-expanded','false'),this['input']['setAttribute']('role','combobox'),this['clearBtn']=document['createElement']('button'),this['clearBtn']['type']='button',this['clearBtn']['className']='autocomplete-select-clear',this['clearBtn']['innerHTML']='&times;',this['clearBtn']['setAttribute']('aria-label','Clear\x20selection'),this['clearBtn']['hidden']=!![],this['dropdown']=document['createElement']('div'),this['dropdown']['className']='autocomplete-select-dropdown',this['dropdown']['setAttribute']('role','listbox'),this['itemsContainer']=document['createElement']('div'),this['itemsContainer']['className']='autocomplete-select-items',this['dropdown']['appendChild'](this['itemsContainer']),this['footer']=document['createElement']('div'),this['footer']['className']='autocomplete-select-footer',this['footer']['hidden']=!![],this['dropdown']['appendChild'](this['footer']),this['wrapper']['appendChild'](this['input']),this['wrapper']['appendChild'](this['clearBtn']),this['wrapper']['appendChild'](this['dropdown']),this['container']['innerHTML']='',this['container']['appendChild'](this['wrapper']),this['bindEvents']();}['bindEvents'](){this['input']['addEventListener']('focus',()=>this['onFocus']()),this['input']['addEventListener']('blur',_0x34abfb=>this['onBlur'](_0x34abfb)),this['input']['addEventListener']('input',_0x326b97=>this['onInput'](_0x326b97)),this['input']['addEventListener']('keydown',_0x3ba759=>this['onKeydown'](_0x3ba759)),this['clearBtn']['addEventListener']('mousedown',_0x13724a=>{_0x13724a['preventDefault'](),this['clear']();}),this['dropdown']['addEventListener']('mousedown',_0x460a2a=>{_0x460a2a['preventDefault']();}),document['addEventListener']('click',_0x1e8c96=>{!this['wrapper']['contains'](_0x1e8c96['target'])&&this['close']();});}async['preloadData'](){if(this['hasLoadedOnce'])return;try{this['allItems']=await this['options']['loadItems'](''),this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}catch(_0xb1d9ac){console['error']('Failed\x20to\x20preload\x20autocomplete\x20data:',_0xb1d9ac);}}['onFocus'](){if(this['options']['searchMode']==='server')this['loadAndShow'](this['input']['value']);else!this['hasLoadedOnce']?this['loadAndShow'](''):this['filterAndShow'](this['input']['value']);}['onBlur'](_0x2e370b){setTimeout(()=>{!this['wrapper']['contains'](document['activeElement'])&&this['close']();},0xc8);}['onInput'](_0x29c295){const _0x3c1cfa=_0x29c295['target']['value'];this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['debounceTimer']=setTimeout(()=>{if(this['options']['searchMode']==='server')this['loadAndShow'](_0x3c1cfa);else this['hasLoadedOnce']&&this['options']['filterItems']?this['filterAndShow'](_0x3c1cfa):this['loadAndShow'](_0x3c1cfa);},this['options']['debounceMs']),this['selectedItem']&&(this['selectedItem']=null,this['clearBtn']['hidden']=!![],this['options']['onSelect'](null));}['onKeydown'](_0x42b029){switch(_0x42b029['key']){case'ArrowDown':_0x42b029['preventDefault'](),this['moveSelection'](0x1);break;case'ArrowUp':_0x42b029['preventDefault'](),this['moveSelection'](-0x1);break;case'Enter':_0x42b029['preventDefault']();this['selectedIndex']>=0x0&&this['filteredItems'][this['selectedIndex']]&&this['selectItem'](this['filteredItems'][this['selectedIndex']]);break;case'Escape':_0x42b029['preventDefault'](),this['close']();break;case'Tab':this['close']();break;}}['moveSelection'](_0x2292e4){if(!this['isOpen']||this['filteredItems']['length']===0x0)return;const _0x12234f=this['selectedIndex']+_0x2292e4;if(_0x12234f>=0x0&&_0x12234f<this['filteredItems']['length']){this['selectedIndex']=_0x12234f,this['updateSelectionHighlight']();const _0x486e44=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x486e44[this['selectedIndex']]&&_0x486e44[this['selectedIndex']]['scrollIntoView']({'block':'nearest'});}}['updateSelectionHighlight'](){const _0x180ef9=this['itemsContainer']['querySelectorAll']('.autocomplete-select-item');_0x180ef9['forEach']((_0x1d6ed0,_0x1a9d0c)=>{_0x1d6ed0['classList']['toggle']('keyboard-selected',_0x1a9d0c===this['selectedIndex']);});}async['loadAndShow'](_0x20ae0f){this['showLoading']();try{const _0x403234=await this['options']['loadItems'](_0x20ae0f);if(this['options']['searchMode']==='server'){let _0x37df1e=_0x403234;this['options']['sortItems']&&(_0x37df1e=this['options']['sortItems']([..._0x403234]));this['filteredItems']=_0x37df1e;const _0x442503=this['filteredItems']['length']>=this['options']['maxItems'];_0x442503&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x442503),this['open']();}else this['allItems']=_0x403234,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']])),this['filterAndShow'](_0x20ae0f);}catch(_0x519f94){console['error']('Failed\x20to\x20load\x20autocomplete\x20items:',_0x519f94),this['showError']('Failed\x20to\x20load\x20items');}}['filterAndShow'](_0x3cb7bf){this['options']['filterItems']?this['filteredItems']=this['options']['filterItems'](this['allItems'],_0x3cb7bf):this['filteredItems']=this['allItems'];this['options']['sortItems']&&(this['filteredItems']=this['options']['sortItems']([...this['filteredItems']]));const _0x387e14=this['filteredItems']['length']>=this['options']['maxItems'];_0x387e14&&(this['filteredItems']=this['filteredItems']['slice'](0x0,this['options']['maxItems'])),this['renderItems'](_0x387e14),this['open']();}['renderItems'](_0x985869){this['itemsContainer']['innerHTML']='',this['selectedIndex']=-0x1;if(this['filteredItems']['length']===0x0){this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-empty\x22>'+Utils['escapeHtml'](this['options']['emptyMessage'])+'</div>',this['footer']['hidden']=!![];return;}this['filteredItems']['forEach']((_0x1c47d2,_0x50666d)=>{const _0x591944=document['createElement']('div');_0x591944['className']='autocomplete-select-item',_0x591944['setAttribute']('role','option'),_0x591944['setAttribute']('data-index',_0x50666d);const _0x9645e2=this['options']['renderItem'](_0x1c47d2);let _0x5d7d69='';_0x9645e2['icon']&&(_0x5d7d69='<span\x20class=\x22autocomplete-select-item-icon\x20'+(_0x9645e2['iconClass']||'')+'\x22>'+_0x9645e2['icon']+'</span>'),_0x591944['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5d7d69+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-select-item-primary\x22>'+Utils['escapeHtml'](_0x9645e2['primary'])+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x9645e2['secondary']?'<div\x20class=\x22autocomplete-select-item-secondary\x22>'+Utils['escapeHtml'](_0x9645e2['secondary'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20',_0x591944['addEventListener']('click',()=>{this['selectItem'](_0x1c47d2);}),_0x591944['addEventListener']('mouseenter',()=>{this['selectedIndex']=_0x50666d,this['updateSelectionHighlight']();}),this['itemsContainer']['appendChild'](_0x591944);}),_0x985869?(this['footer']['textContent']='Displaying\x20maximum\x20'+this['options']['maxItems']+'\x20suggestions',this['footer']['hidden']=![]):this['footer']['hidden']=!![];}['showLoading'](){this['isLoading']=!![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-loading\x22><div\x20class=\x22spinner-small\x22></div><span>'+Utils['escapeHtml'](this['options']['loadingMessage'])+'</span></div>',this['footer']['hidden']=!![],this['open']();}['showError'](_0x500a62){this['isLoading']=![],this['itemsContainer']['innerHTML']='<div\x20class=\x22autocomplete-select-error\x22>'+Utils['escapeHtml'](_0x500a62)+'</div>',this['footer']['hidden']=!![];}['selectItem'](_0x1948fc){this['selectedItem']=_0x1948fc;const _0xed817e=this['options']['renderItem'](_0x1948fc);this['input']['value']=_0xed817e['primary'],this['clearBtn']['hidden']=![],this['close'](),this['options']['onSelect'](_0x1948fc);}['open'](){if(this['isOpen'])return;this['isOpen']=!![],this['dropdown']['classList']['add']('open'),this['input']['setAttribute']('aria-expanded','true'),this['wrapper']['classList']['add']('open');}['close'](){if(!this['isOpen'])return;this['isOpen']=![],this['dropdown']['classList']['remove']('open'),this['input']['setAttribute']('aria-expanded','false'),this['wrapper']['classList']['remove']('open'),this['selectedIndex']=-0x1;}['clear'](){this['selectedItem']=null,this['input']['value']='',this['clearBtn']['hidden']=!![],this['options']['onSelect'](null),this['input']['focus']();}['getValue'](){return this['selectedItem']?this['options']['getItemValue'](this['selectedItem']):null;}['getSelectedItem'](){return this['selectedItem'];}['setValue'](_0x38c9c4){if(_0x38c9c4){this['selectedItem']=_0x38c9c4;const _0x2ca3e8=this['options']['renderItem'](_0x38c9c4);this['input']['value']=_0x2ca3e8['primary'],this['clearBtn']['hidden']=![];}else this['clear']();}['setItems'](_0xfa62ae){this['allItems']=_0xfa62ae,this['hasLoadedOnce']=!![],this['options']['sortItems']&&(this['allItems']=this['options']['sortItems']([...this['allItems']]));}['reset'](){this['clear'](),this['allItems']=[],this['filteredItems']=[],this['hasLoadedOnce']=![];}['disable'](){this['input']['disabled']=!![],this['wrapper']['classList']['add']('disabled');}['enable'](){this['input']['disabled']=![],this['wrapper']['classList']['remove']('disabled');}['setPlaceholder'](_0x5942b1){this['input']['placeholder']=_0x5942b1;}['destroy'](){this['debounceTimer']&&clearTimeout(this['debounceTimer']),this['container']['innerHTML']='';}}async function initializeAdminMenu(_0x438c0d=null){const _0xbef0d9=document['getElementById']('admin-menu-container'),_0x465250=document['getElementById']('admin-menu-btn'),_0x87b868=document['getElementById']('admin-menu');if(!_0xbef0d9||!_0x465250||!_0x87b868)return;try{!_0x438c0d&&(_0x438c0d=await API['getCurrentUser']());if(_0x438c0d){const _0x193f3a=window['Permissions'],_0x57ddc9=_0x193f3a['hasServerPermission'](_0x438c0d,'*')||_0x193f3a['hasEnvPermission'](_0x438c0d,'environments:manage')||_0x193f3a['hasServerPermission'](_0x438c0d,'users:create')||_0x193f3a['hasTeamPermission'](_0x438c0d,'teams:manage')||_0x193f3a['hasEnvPermission'](_0x438c0d,'environments:view_details');if(!_0x57ddc9)return;_0xbef0d9['hidden']=![];if(!_0x193f3a['hasServerPermission'](_0x438c0d,'*')){const _0x3e2092=_0x87b868['querySelectorAll']('.admin-menu-item');_0x3e2092['forEach'](_0xea906f=>{const _0x369ac9=_0xea906f['querySelector']('.option-text')?.['textContent']?.['trim']();_0x369ac9==='Users'&&!_0x193f3a['hasServerPermission'](_0x438c0d,'users:create')&&(_0xea906f['hidden']=!![]),_0x369ac9==='Skills'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Server\x20Settings'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Server\x20Health'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Git\x20History'&&(_0xea906f['hidden']=!![]),_0x369ac9==='Roles'&&(_0xea906f['hidden']=!![]);});}_0x465250['addEventListener']('click',_0x10ae23=>{_0x10ae23['stopPropagation']();const _0x28731b=document['getElementById']('actions-menu');if(_0x28731b)_0x28731b['hidden']=!![];_0x87b868['hidden']=!_0x87b868['hidden'];}),document['addEventListener']('click',_0x52cc79=>{!_0x87b868['hidden']&&!_0x465250['contains'](_0x52cc79['target'])&&!_0x87b868['contains'](_0x52cc79['target'])&&(_0x87b868['hidden']=!![]);}),document['addEventListener']('keydown',_0x85dbb=>{_0x85dbb['key']==='Escape'&&!_0x87b868['hidden']&&(_0x87b868['hidden']=!![]);});const _0x1b7873=document['getElementById']('server-health-btn');_0x1b7873&&_0x1b7873['addEventListener']('click',async()=>{_0x87b868['hidden']=!![];const {openServerHealthModal:_0xa85064}=await import('./server-health.js');_0xa85064();});}}catch(_0x52af5a){console['debug']('[CoderFlow]\x20Admin\x20menu\x20not\x20initialized:',_0x52af5a['message']);}}typeof window!=='undefined'&&(window['API']=API,window['Utils']=Utils,window['CustomSelect']=CustomSelect,window['ConfirmDialog']=ConfirmDialog,window['AutocompleteSelect']=AutocompleteSelect,window['initializeAdminMenu']=initializeAdminMenu);export{initializeAdminMenu};